Message ID | 1521467252-20065-1-git-send-email-john.stultz@linaro.org |
---|---|
State | New |
Headers | show |
Series | libdrm: Use readdir instead of readdir_r to avoid build warnings | expand |
On 19 March 2018 at 13:47, John Stultz <john.stultz@linaro.org> wrote: > 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) { > ^ > > Thus, this patch replaces readdir_r with readdir. > When C runtime suggests new behaviour before the manual/spec is updated... sigh. readdir(3) It is expected that a future version of POSIX.1 will require that readdir() be thread-safe when concurrently employed on different directory streams readdir_r(3) It is expected that a future version of POSIX.1 will make readdir_r() obsolete, and require that readdir(3) be thread-safe when concurrently employed on different directory streams. Regardless, patch is Reviewed-by: Emil Velikov <emil.velikov@collabora.com> -Emil
On Monday, 2018-03-19 06:47:32 -0700, John Stultz wrote: > 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) { > ^ > > Thus, this patch replaces readdir_r with readdir. > > Cc: Robert Foss <robert.foss@collabora.com> > Cc: Rob Herring <robh@kernel.org> > Cc: Stefan Schake <stschake@gmail.com> > Signed-off-by: John Stultz <john.stultz@linaro.org> > --- > xf86drm.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/xf86drm.c b/xf86drm.c > index 344326d..b9058c2 100644 > --- a/xf86drm.c > +++ b/xf86drm.c > @@ -2858,7 +2858,7 @@ static char *drmGetMinorNameForFD(int fd, int type) > if (pent == NULL) > goto out_close_dir; > > - while (readdir_r(sysdir, pent, &ent) == 0 && ent != NULL) { > + while ((ent = readdir(sysdir))) { I've had the same patch locally for some time, and while this line is correct, it's missing other changes to clean up unnecessary code around. I don't have the change on this machine, I'll look at it tonight, but if you beat me to it, from memory there's a malloc()+free() around, and a couple unused variables now that should be removed at the start of the scope. > if (strncmp(ent->d_name, name, len) == 0) { > snprintf(dev_name, sizeof(dev_name), DRM_DIR_NAME "/%s", > ent->d_name); > -- > 2.7.4 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel
On 19 March 2018 at 14:41, Eric Engestrom <eric.engestrom@imgtec.com> wrote: > On Monday, 2018-03-19 06:47:32 -0700, John Stultz wrote: >> 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) { >> ^ >> >> Thus, this patch replaces readdir_r with readdir. >> >> Cc: Robert Foss <robert.foss@collabora.com> >> Cc: Rob Herring <robh@kernel.org> >> Cc: Stefan Schake <stschake@gmail.com> >> Signed-off-by: John Stultz <john.stultz@linaro.org> >> --- >> xf86drm.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/xf86drm.c b/xf86drm.c >> index 344326d..b9058c2 100644 >> --- a/xf86drm.c >> +++ b/xf86drm.c >> @@ -2858,7 +2858,7 @@ static char *drmGetMinorNameForFD(int fd, int type) >> if (pent == NULL) >> goto out_close_dir; >> >> - while (readdir_r(sysdir, pent, &ent) == 0 && ent != NULL) { >> + while ((ent = readdir(sysdir))) { > > I've had the same patch locally for some time, and while this line is > correct, it's missing other changes to clean up unnecessary code around. > > I don't have the change on this machine, I'll look at it tonight, but if > you beat me to it, from memory there's a malloc()+free() around, and > a couple unused variables now that should be removed at the start of > the scope. > Right - updated patch should be in your inbox. -Emil
diff --git a/xf86drm.c b/xf86drm.c index 344326d..b9058c2 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -2858,7 +2858,7 @@ static char *drmGetMinorNameForFD(int fd, int type) 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);
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) { ^ Thus, this patch replaces readdir_r with readdir. Cc: Robert Foss <robert.foss@collabora.com> Cc: Rob Herring <robh@kernel.org> Cc: Stefan Schake <stschake@gmail.com> Signed-off-by: John Stultz <john.stultz@linaro.org> --- xf86drm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.7.4