]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Deprecate readdir_r, readdir64_r [BZ #19056]
authorFlorian Weimer <fweimer@redhat.com>
Sat, 20 Feb 2016 11:56:55 +0000 (12:56 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Sat, 20 Feb 2016 11:56:55 +0000 (12:56 +0100)
ChangeLog
NEWS
dirent/dirent.h
manual/filesys.texi
posix/tst-dir.c

index db05bdc0eb1f0176f684d772df3cdba996809f91..c1efd1a6166f53e8190751f2c108f1252dcaf411 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2016-02-20  Florian Weimer  <fweimer@redhat.com>
+
+       [BZ #19056]
+       * dirent/dirent.h (readdir_r, readdir64_r): Mark as deprecated.
+       * manual/filesys.texi (Reading/Closing Directory): Mention
+       deprecaion.
+       * posix/tst-dir.c (main): Disable deprecation warning in test.
+
 2016-02-19  H.J. Lu  <hongjiu.lu@intel.com>
 
        [BZ #19679]
diff --git a/NEWS b/NEWS
index d6f9d7401d421c46be0d23df523478df95b1d93c..dc5a382c9e6881c1093e2be04c3ac9a62548fb7e 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,9 @@ Version 2.24
   time.  It has been replaced by pap_AW & pap_CW, both of which have long
   been included in previous releases.
 
+* The readdir_r and readdir64_r functions have been deprecated.  It is
+  recommended to use readdir and readdir64 instead.
+
 Security related changes:
 
   [Add security related changes here]
index 9a4b6bf57951b2dd07540ad049d251f5ae817cb0..e6c36b1f9e0c3491a501f1cae3c10faa1197a9e8 100644 (file)
@@ -183,14 +183,15 @@ extern struct dirent64 *readdir64 (DIR *__dirp) __nonnull ((1));
 extern int readdir_r (DIR *__restrict __dirp,
                      struct dirent *__restrict __entry,
                      struct dirent **__restrict __result)
-     __nonnull ((1, 2, 3));
+     __nonnull ((1, 2, 3)) __attribute_deprecated__;
 # else
 #  ifdef __REDIRECT
 extern int __REDIRECT (readdir_r,
                       (DIR *__restrict __dirp,
                        struct dirent *__restrict __entry,
                        struct dirent **__restrict __result),
-                      readdir64_r) __nonnull ((1, 2, 3));
+                      readdir64_r)
+  __nonnull ((1, 2, 3)) __attribute_deprecated__;
 #  else
 #   define readdir_r readdir64_r
 #  endif
@@ -200,7 +201,7 @@ extern int __REDIRECT (readdir_r,
 extern int readdir64_r (DIR *__restrict __dirp,
                        struct dirent64 *__restrict __entry,
                        struct dirent64 **__restrict __result)
-     __nonnull ((1, 2, 3));
+  __nonnull ((1, 2, 3)) __attribute_deprecated__;
 # endif
 #endif /* POSIX or misc */
 
index 972e1065beec44850f2ec5b1cddbce3e45a83413..b3236642e48243f0fe75f95743ae5d88065c7f81 100644 (file)
@@ -525,8 +525,9 @@ locking.  Like @code{readdir} it returns the next entry from the
 directory.  To prevent conflicts between simultaneously running
 threads the result is stored inside the @var{entry} object.
 
-@strong{Portability Note:} It is recommended to use @code{readdir}
-instead of @code{readdir_r} for the following reasons:
+@strong{Portability Note:} @code{readdir_r} is deprecated.  It is
+recommended to use @code{readdir} instead of @code{readdir_r} for the
+following reasons:
 
 @itemize @bullet
 @item
@@ -604,10 +605,10 @@ In all other aspects this function is equivalent to @code{readdir}.
 @comment LFS
 @deftypefun int readdir64_r (DIR *@var{dirstream}, struct dirent64 *@var{entry}, struct dirent64 **@var{result})
 @safety{@prelim{}@mtsafe{}@asunsafe{@asulock{}}@acunsafe{@aculock{}}}
-The @code{readdir64_r} function is equivalent to the @code{readdir_r}
-function except that it takes parameters of base type @code{struct
-dirent64} instead of @code{struct dirent} in the second and third
-position.  The same precautions mentioned in the documentation of
+The deprecated @code{readdir64_r} function is equivalent to the
+@code{readdir_r} function except that it takes parameters of base type
+@code{struct dirent64} instead of @code{struct dirent} in the second and
+third position.  The same precautions mentioned in the documentation of
 @code{readdir_r} also apply here.
 @end deftypefun
 
index 8897f8e06d52c21697d16967e0af48d2c302105d..d0e487824a34f2f9eb6dc48dd7ab0245845215c9 100644 (file)
@@ -319,6 +319,10 @@ main (int argc, char *argv[])
       exit (1);
     }
 
+  /* The test below covers the deprecated readdir64_r function.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
   /* Try to find the new directory.  */
   rewinddir (dir1);
   while (readdir64_r (dir1, &direntbuf.d, &d) == 0 && d != NULL)
@@ -351,6 +355,8 @@ main (int argc, char *argv[])
        }
     }
 
+  DIAG_POP_NEEDS_COMMENT;
+
   if (d == NULL)
     {
       printf ("haven't found new directory \"%s\"\n", buf);
@@ -439,6 +445,10 @@ main (int argc, char *argv[])
       result = 1;
     }
 
+  /* The test below covers the deprecated readdir64_r function.  */
+  DIAG_PUSH_NEEDS_COMMENT;
+  DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations");
+
   /* We now should have a directory and a file in the new directory.  */
   rewinddir (dir2);
   while (readdir64_r (dir2, &direntbuf.d, &d) == 0 && d != NULL)
@@ -492,6 +502,8 @@ main (int argc, char *argv[])
        }
     }
 
+  DIAG_POP_NEEDS_COMMENT;
+
   if (stat64 ("does-not-exist", &st1) >= 0)
     {
       puts ("stat for unexisting file did not fail");