libdrm: Use readdir instead of readdir_r to avoid build warnings
Building libdrm under AOSP, we see the following build warning: external/libdrm/xf86drm.c:2861:12: warning: 'readdir_r' is deprecated: readdir_r is deprecated; use readdir instead [-Wdeprecated-declarations] while (readdir_r(sysdir, pent, &ent) == 0 && ent != NULL) { ^ Building on Linux with glibc produces the same warning. Thus, this patch replaces readdir_r with readdir. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102031 Cc: Robert Foss <robert.foss@collabora.com> Cc: Rob Herring <robh@kernel.org> Cc: Stefan Schake <stschake@gmail.com> Cc: John Stultz <john.stultz@linaro.org> Signed-off-by: John Stultz <john.stultz@linaro.org> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> [Emil Velikov: remove unused variables, Eric] Signed-off-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>main
parent
32ee9c0e05
commit
bb45ce4e3a
22
xf86drm.c
22
xf86drm.c
|
@ -2819,12 +2819,11 @@ static char *drmGetMinorNameForFD(int fd, int type)
|
||||||
{
|
{
|
||||||
#ifdef __linux__
|
#ifdef __linux__
|
||||||
DIR *sysdir;
|
DIR *sysdir;
|
||||||
struct dirent *pent, *ent;
|
struct dirent *ent;
|
||||||
struct stat sbuf;
|
struct stat sbuf;
|
||||||
const char *name = drmGetMinorName(type);
|
const char *name = drmGetMinorName(type);
|
||||||
int len;
|
int len;
|
||||||
char dev_name[64], buf[64];
|
char dev_name[64], buf[64];
|
||||||
long name_max;
|
|
||||||
int maj, min;
|
int maj, min;
|
||||||
|
|
||||||
if (!name)
|
if (!name)
|
||||||
|
@ -2847,30 +2846,16 @@ static char *drmGetMinorNameForFD(int fd, int type)
|
||||||
if (!sysdir)
|
if (!sysdir)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
name_max = fpathconf(dirfd(sysdir), _PC_NAME_MAX);
|
while ((ent = readdir(sysdir))) {
|
||||||
if (name_max == -1)
|
|
||||||
goto out_close_dir;
|
|
||||||
|
|
||||||
pent = malloc(offsetof(struct dirent, d_name) + name_max + 1);
|
|
||||||
if (pent == NULL)
|
|
||||||
goto out_close_dir;
|
|
||||||
|
|
||||||
while (readdir_r(sysdir, pent, &ent) == 0 && ent != NULL) {
|
|
||||||
if (strncmp(ent->d_name, name, len) == 0) {
|
if (strncmp(ent->d_name, name, len) == 0) {
|
||||||
snprintf(dev_name, sizeof(dev_name), DRM_DIR_NAME "/%s",
|
snprintf(dev_name, sizeof(dev_name), DRM_DIR_NAME "/%s",
|
||||||
ent->d_name);
|
ent->d_name);
|
||||||
|
|
||||||
free(pent);
|
|
||||||
closedir(sysdir);
|
closedir(sysdir);
|
||||||
|
|
||||||
return strdup(dev_name);
|
return strdup(dev_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return NULL;
|
||||||
free(pent);
|
|
||||||
|
|
||||||
out_close_dir:
|
|
||||||
closedir(sysdir);
|
|
||||||
#else
|
#else
|
||||||
struct stat sbuf;
|
struct stat sbuf;
|
||||||
char buf[PATH_MAX + 1];
|
char buf[PATH_MAX + 1];
|
||||||
|
@ -2911,7 +2896,6 @@ out_close_dir:
|
||||||
|
|
||||||
return strdup(buf);
|
return strdup(buf);
|
||||||
#endif
|
#endif
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *drmGetPrimaryDeviceNameFromFd(int fd)
|
char *drmGetPrimaryDeviceNameFromFd(int fd)
|
||||||
|
|
Loading…
Reference in New Issue