From bb45ce4e3ac751315bfd7fbfd9e1425bf515ec0d Mon Sep 17 00:00:00 2001 From: John Stultz Date: Tue, 20 Mar 2018 17:48:23 +0000 Subject: [PATCH] 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 Cc: Rob Herring Cc: Stefan Schake Cc: John Stultz Signed-off-by: John Stultz Reviewed-by: Emil Velikov [Emil Velikov: remove unused variables, Eric] Signed-off-by: Emil Velikov Reviewed-by: Eric Engestrom --- xf86drm.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/xf86drm.c b/xf86drm.c index 689e8fe9..3a9d0ed2 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -2819,12 +2819,11 @@ static char *drmGetMinorNameForFD(int fd, int type) { #ifdef __linux__ DIR *sysdir; - struct dirent *pent, *ent; + struct dirent *ent; struct stat sbuf; const char *name = drmGetMinorName(type); int len; char dev_name[64], buf[64]; - long name_max; int maj, min; if (!name) @@ -2847,30 +2846,16 @@ static char *drmGetMinorNameForFD(int fd, int type) if (!sysdir) return NULL; - name_max = fpathconf(dirfd(sysdir), _PC_NAME_MAX); - 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) { + while ((ent = readdir(sysdir))) { if (strncmp(ent->d_name, name, len) == 0) { snprintf(dev_name, sizeof(dev_name), DRM_DIR_NAME "/%s", ent->d_name); - free(pent); closedir(sysdir); - return strdup(dev_name); } } - - free(pent); - -out_close_dir: - closedir(sysdir); + return NULL; #else struct stat sbuf; char buf[PATH_MAX + 1]; @@ -2911,7 +2896,6 @@ out_close_dir: return strdup(buf); #endif - return NULL; } char *drmGetPrimaryDeviceNameFromFd(int fd)