This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Assume that _DIRENT_HAVE_D_TYPE is always defined.


References remain in io/fts.c, io/ftw.c, posix/glob.c.  These files
are (potentially) externally shared.

2017-10-30  Florian Weimer  <fweimer@redhat.com>

	* elf/ldconfig.c (search_dir): Assume that _DIRENT_HAVE_D_TYPE is
	always defined.
	* io/tst-mkdirat.c (do_test): Likewise.
	* io/tst-mkfifoat.c (do_test): Likewise.
	* io/tst-mknodat.c (do_test): Likewise.
	* locale/programs/charmap-dir.c (charmap_readdir): Likewise.
	* locale/programs/locale.c (select_dirs): Likewise.
	* locale/programs/locarchive.c (add_locales_to_archive): Likewise.
	* posix/bug-glob2.c (my_readdir): Likewise.
	* posix/tst-dir.c (main): Likewise.
	* posix/tst-glob_lstat_compat.c (my_readdir): Likewise.
	* posix/tst-gnuglob-skeleton.c (my_readdir): Likewise.
	* sysdeps/posix/getcwd.c (__getcwd): Likewise.

diff --git a/elf/ldconfig.c b/elf/ldconfig.c
index 99caf9e9bb..89042351f8 100644
--- a/elf/ldconfig.c
+++ b/elf/ldconfig.c
@@ -710,25 +710,20 @@ search_dir (const struct dir_entry *entry)
   while ((direntry = readdir64 (dir)) != NULL)
     {
       int flag;
-#ifdef _DIRENT_HAVE_D_TYPE
       /* We only look at links and regular files.  */
       if (direntry->d_type != DT_UNKNOWN
 	  && direntry->d_type != DT_LNK
 	  && direntry->d_type != DT_REG
 	  && direntry->d_type != DT_DIR)
 	continue;
-#endif /* _DIRENT_HAVE_D_TYPE  */
       /* Does this file look like a shared library or is it a hwcap
 	 subdirectory?  The dynamic linker is also considered as
 	 shared library.  */
       if (((strncmp (direntry->d_name, "lib", 3) != 0
 	    && strncmp (direntry->d_name, "ld-", 3) != 0)
 	   || strstr (direntry->d_name, ".so") == NULL)
-	  && (
-#ifdef _DIRENT_HAVE_D_TYPE
-	      direntry->d_type == DT_REG ||
-#endif
-	      !is_hwcap_platform (direntry->d_name)))
+	  && (direntry->d_type == DT_REG
+	      || !is_hwcap_platform (direntry->d_name)))
 	continue;
 
       size_t len = strlen (direntry->d_name);
@@ -765,12 +760,10 @@ search_dir (const struct dir_entry *entry)
 	}
 
       struct stat64 lstat_buf;
-#ifdef _DIRENT_HAVE_D_TYPE
       /* We optimize and try to do the lstat call only if needed.  */
       if (direntry->d_type != DT_UNKNOWN)
 	lstat_buf.st_mode = DTTOIF (direntry->d_type);
       else
-#endif
 	if (__glibc_unlikely (lstat64 (real_file_name, &lstat_buf)))
 	  {
 	    error (0, errno, _("Cannot lstat %s"), file_name);
@@ -825,9 +818,6 @@ search_dir (const struct dir_entry *entry)
 	  new_entry->path = xstrdup (file_name);
 	  new_entry->flag = entry->flag;
 	  new_entry->next = NULL;
-#ifdef _DIRENT_HAVE_D_TYPE
-	  /* We have filled in lstat only #ifndef
-	     _DIRENT_HAVE_D_TYPE.  Fill it in if needed.  */
 	  if (!is_link
 	      && direntry->d_type != DT_UNKNOWN
 	      && __builtin_expect (lstat64 (real_file_name, &lstat_buf), 0))
@@ -837,7 +827,6 @@ search_dir (const struct dir_entry *entry)
 	      free (new_entry);
 	      continue;
 	    }
-#endif
 	  new_entry->ino = lstat_buf.st_ino;
 	  new_entry->dev = lstat_buf.st_dev;
 	  add_single_dir (new_entry, 0);
@@ -860,7 +849,6 @@ search_dir (const struct dir_entry *entry)
       else
 	real_name = real_file_name;
 
-#ifdef _DIRENT_HAVE_D_TYPE
       /* Call lstat64 if not done yet.  */
       if (!is_link
 	  && direntry->d_type != DT_UNKNOWN
@@ -869,7 +857,6 @@ search_dir (const struct dir_entry *entry)
 	  error (0, errno, _("Cannot lstat %s"), file_name);
 	  continue;
 	}
-#endif
 
       /* First search whether the auxiliary cache contains this
 	 library already and it's not changed.  */
diff --git a/io/tst-mkdirat.c b/io/tst-mkdirat.c
index a960c6651d..605e51ef1e 100644
--- a/io/tst-mkdirat.c
+++ b/io/tst-mkdirat.c
@@ -131,13 +131,11 @@ do_test (void)
     if (strcmp (d->d_name, "some-dir") == 0)
       {
 	has_some_dir = true;
-#ifdef _DIRENT_HAVE_D_TYPE
 	if (d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
 	  {
 	    puts ("d_type for some-dir wrong");
 	    return 1;
 	  }
-#endif
       }
     else if (strcmp (d->d_name, ".") != 0 && strcmp (d->d_name, "..") != 0)
       {
diff --git a/io/tst-mkfifoat.c b/io/tst-mkfifoat.c
index d87b587384..c9239dcde8 100644
--- a/io/tst-mkfifoat.c
+++ b/io/tst-mkfifoat.c
@@ -131,13 +131,11 @@ do_test (void)
     if (strcmp (d->d_name, "some-fifo") == 0)
       {
 	has_some_fifo = true;
-#ifdef _DIRENT_HAVE_D_TYPE
 	if (d->d_type != DT_UNKNOWN && d->d_type != DT_FIFO)
 	  {
 	    puts ("d_type for some-fifo wrong");
 	    return 1;
 	  }
-#endif
       }
     else if (strcmp (d->d_name, ".") != 0 && strcmp (d->d_name, "..") != 0)
       {
diff --git a/io/tst-mknodat.c b/io/tst-mknodat.c
index 9d58fdbe3a..88a98cab79 100644
--- a/io/tst-mknodat.c
+++ b/io/tst-mknodat.c
@@ -131,13 +131,11 @@ do_test (void)
     if (strcmp (d->d_name, "some-fifo") == 0)
       {
 	has_some_fifo = true;
-#ifdef _DIRENT_HAVE_D_TYPE
 	if (d->d_type != DT_UNKNOWN && d->d_type != DT_FIFO)
 	  {
 	    puts ("d_type for some-fifo wrong");
 	    return 1;
 	  }
-#endif
       }
     else if (strcmp (d->d_name, ".") != 0 && strcmp (d->d_name, "..") != 0)
       {
diff --git a/locale/programs/charmap-dir.c b/locale/programs/charmap-dir.c
index a9212b72fb..42639fbc1b 100644
--- a/locale/programs/charmap-dir.c
+++ b/locale/programs/charmap-dir.c
@@ -115,11 +115,9 @@ charmap_readdir (CHARMAP_DIR *cdir)
       stpcpy (stpcpy (cdir->pathname, cdir->directory), dirent->d_name);
       filename = cdir->pathname + cdir->directory_len;
 
-#ifdef _DIRENT_HAVE_D_TYPE
       if (dirent->d_type != DT_UNKNOWN && dirent->d_type != DT_LNK)
         mode = DTTOIF (dirent->d_type);
       else
-#endif
         {
           struct stat64 statbuf;
 
diff --git a/locale/programs/locale.c b/locale/programs/locale.c
index 939214dbd0..de2a30551c 100644
--- a/locale/programs/locale.c
+++ b/locale/programs/locale.c
@@ -316,11 +316,9 @@ select_dirs (const struct dirent *dirent)
     {
       mode_t mode = 0;
 
-#ifdef _DIRENT_HAVE_D_TYPE
       if (dirent->d_type != DT_UNKNOWN && dirent->d_type != DT_LNK)
 	mode = DTTOIF (dirent->d_type);
       else
-#endif
 	{
 	  struct stat64 st;
 	  char buf[sizeof (COMPLOCALEDIR)
diff --git a/locale/programs/locarchive.c b/locale/programs/locarchive.c
index 633c59b5be..50e975df20 100644
--- a/locale/programs/locarchive.c
+++ b/locale/programs/locarchive.c
@@ -1385,17 +1385,13 @@ add_locales_to_archive (size_t nlist, char *list[], bool replace)
 		     a directory we have to look at a file with the
 		     prefix "SYS_".  Otherwise we have found what we
 		     are looking for.  */
-#ifdef _DIRENT_HAVE_D_TYPE
 		  d_type = d->d_type;
 
 		  if (d_type != DT_REG)
-#endif
 		    {
 		      char fullname[fnamelen + 2 * strlen (d->d_name) + 7];
 
-#ifdef _DIRENT_HAVE_D_TYPE
 		      if (d_type == DT_UNKNOWN)
-#endif
 			{
 			  strcpy (stpcpy (stpcpy (fullname, fname), "/"),
 				  d->d_name);
diff --git a/posix/bug-glob2.c b/posix/bug-glob2.c
index 592d957a75..c9ed76e134 100644
--- a/posix/bug-glob2.c
+++ b/posix/bug-glob2.c
@@ -207,21 +207,13 @@ my_readdir (void *gdir)
 
   dir->d.d_ino = 1;		/* glob should not skip this entry.  */
 
-#ifdef _DIRENT_HAVE_D_TYPE
   dir->d.d_type = filesystem[dir->idx].type;
-#endif
 
   strcpy (dir->d.d_name, filesystem[dir->idx].name);
 
-#ifdef _DIRENT_HAVE_D_TYPE
   PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_type: %d, d_name: \"%s\" }\n",
 	  dir->level, (long int) dir->idx, dir->d.d_ino, dir->d.d_type,
 	  dir->d.d_name);
-#else
-  PRINTF ("my_readdir ({ level: %d, idx: %ld }) = { d_ino: %ld, d_name: \"%s\" }\n",
-	  dir->level, (long int) dir->idx, dir->d.d_ino,
-	  dir->d.d_name);
-#endif
 
   ++dir->idx;
 
diff --git a/posix/tst-dir.c b/posix/tst-dir.c
index fee79b32a0..52ff36fb6e 100644
--- a/posix/tst-dir.c
+++ b/posix/tst-dir.c
@@ -149,10 +149,8 @@ main (int argc, char *argv[])
 
   while ((d = readdir64 (dir1)) != NULL)
     {
-#ifdef _DIRENT_HAVE_D_TYPE
       if (d->d_type != DT_UNKNOWN && d->d_type != DT_REG)
 	continue;
-#endif
 
       if (d->d_ino == st2.st_ino)
 	{
@@ -234,10 +232,8 @@ main (int argc, char *argv[])
 
   while ((d = readdir64 (dir2)) != NULL)
     {
-#ifdef _DIRENT_HAVE_D_TYPE
       if (d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
 	continue;
-#endif
 
       if (d->d_ino == st2.st_ino)
 	{
@@ -327,10 +323,8 @@ main (int argc, char *argv[])
   rewinddir (dir1);
   while (readdir64_r (dir1, &direntbuf.d, &d) == 0 && d != NULL)
     {
-#ifdef _DIRENT_HAVE_D_TYPE
       if (d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
 	continue;
-#endif
 
       if (d->d_ino == st1.st_ino)
 	{
@@ -457,13 +451,11 @@ main (int argc, char *argv[])
 	  || strcmp (d->d_name, "..") == 0
 	  || strcmp (d->d_name, "another-dir") == 0)
 	{
-#ifdef _DIRENT_HAVE_D_TYPE
 	  if (d->d_type != DT_UNKNOWN && d->d_type != DT_DIR)
 	    {
 	      printf ("d_type for \"%s\" is wrong\n", d->d_name);
 	      result = 1;
 	    }
-#endif
 	  if (stat64 (d->d_name, &st3) < 0)
 	    {
 	      printf ("cannot stat \"%s\" is wrong\n", d->d_name);
@@ -477,13 +469,11 @@ main (int argc, char *argv[])
 	}
       else if (strcmp (d->d_name, "and-a-file") == 0)
 	{
-#ifdef _DIRENT_HAVE_D_TYPE
 	  if (d->d_type != DT_UNKNOWN && d->d_type != DT_REG)
 	    {
 	      printf ("d_type for \"%s\" is wrong\n", d->d_name);
 	      result = 1;
 	    }
-#endif
 	  if (stat64 (d->d_name, &st3) < 0)
 	    {
 	      printf ("cannot stat \"%s\" is wrong\n", d->d_name);
diff --git a/posix/tst-glob_lstat_compat.c b/posix/tst-glob_lstat_compat.c
index ccfda4bb74..6b77909104 100644
--- a/posix/tst-glob_lstat_compat.c
+++ b/posix/tst-glob_lstat_compat.c
@@ -166,9 +166,7 @@ my_readdir (void *gdir)
 
   dir->d.d_ino = 1;		/* glob should not skip this entry.  */
 
-#ifdef _DIRENT_HAVE_D_TYPE
   dir->d.d_type = filesystem[dir->idx].type;
-#endif
 
   strcpy (dir->d.d_name, filesystem[dir->idx].name);
 
diff --git a/posix/tst-gnuglob-skeleton.c b/posix/tst-gnuglob-skeleton.c
index 9276297c7c..ba6812bf59 100644
--- a/posix/tst-gnuglob-skeleton.c
+++ b/posix/tst-gnuglob-skeleton.c
@@ -221,27 +221,16 @@ my_readdir (void *gdir)
 
   dir->d.d_ino = 1;		/* glob should not skip this entry.  */
 
-#ifdef _DIRENT_HAVE_D_TYPE
   dir->d.d_type = filesystem[dir->idx].type;
-#endif
 
   strcpy (dir->d.d_name, filesystem[dir->idx].name);
 
-#ifdef _DIRENT_HAVE_D_TYPE
   if (test_verbose > 0)
     printf ("info: my_readdir ({ level: %d, idx: %ld })"
 	    " = { d_ino: %lld, d_type: %d, d_name: \"%s\" }\n",
 	    dir->level, (long int) dir->idx,
 	    (long long) dir->d.d_ino, dir->d.d_type,
 	    dir->d.d_name);
-#else
-  if (test_verbose > 0)
-    printf ("info: my_readdir ({ level: %d, idx: %ld })"
-	    " = { d_ino: %lld, d_name: \"%s\" }\n",
-	    dir->level, (long int) dir->idx,
-	    (long long) dir->d.d_ino,
-	    dir->d.d_name);
-#endif
 
   ++dir->idx;
 
diff --git a/sysdeps/posix/getcwd.c b/sysdeps/posix/getcwd.c
index 702a052306..a0548951f4 100644
--- a/sysdeps/posix/getcwd.c
+++ b/sysdeps/posix/getcwd.c
@@ -397,10 +397,8 @@ __getcwd (char *buf, size_t size)
 	      goto lose;
 	    }
 
-#ifdef _DIRENT_HAVE_D_TYPE
 	  if (d->d_type != DT_DIR && d->d_type != DT_UNKNOWN)
 	    continue;
-#endif
 	  if (d->d_name[0] == '.'
 	      && (d->d_name[1] == '\0'
 		  || (d->d_name[1] == '.' && d->d_name[2] == '\0')))


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]