projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
New module 'areadlink'. File based on lib/xreadlink.c.
[gnulib.git]
/
lib
/
savedir.c
diff --git
a/lib/savedir.c
b/lib/savedir.c
index
d5ced6c
..
d930fb4
100644
(file)
--- a/
lib/savedir.c
+++ b/
lib/savedir.c
@@
-1,7
+1,7
@@
/* savedir.c -- save the list of files in a directory in a string
/* savedir.c -- save the list of files in a directory in a string
- Copyright
1990, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 Free
- Software Foundation, Inc.
+ Copyright
(C) 1990, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+
2006 Free
Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@
-19,9
+19,7
@@
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
+#include <config.h>
#include "savedir.h"
#include "savedir.h"
@@
-29,19
+27,9
@@
#include <errno.h>
#include <errno.h>
-#if HAVE_DIRENT_H
-# include <dirent.h>
-#else
-# define dirent direct
-# if HAVE_SYS_NDIR_H
-# include <sys/ndir.h>
-# endif
-# if HAVE_SYS_DIR_H
-# include <sys/dir.h>
-# endif
-# if HAVE_NDIR_H
-# include <ndir.h>
-# endif
+#include <dirent.h>
+#ifndef _D_EXACT_NAMLEN
+# define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name)
#endif
#include <stddef.h>
#endif
#include <stddef.h>
@@
-55,6
+43,11
@@
# define NAME_SIZE_DEFAULT 512
#endif
# define NAME_SIZE_DEFAULT 512
#endif
+/* The results of opendir() in this file are not used with dirfd and fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef opendir
+#undef closedir
+
/* Return a freshly allocated string containing the file names
in directory DIRP, separated by '\0' characters;
the end is marked by two '\0' characters in a row.
/* Return a freshly allocated string containing the file names
in directory DIRP, separated by '\0' characters;
the end is marked by two '\0' characters in a row.
@@
-89,7
+82,7
@@
savedirstream (DIR *dirp)
entry = dp->d_name;
if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0')
{
entry = dp->d_name;
if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0')
{
- size_t entry_size =
strlen (entry
) + 1;
+ size_t entry_size =
_D_EXACT_NAMLEN (dp
) + 1;
if (used + entry_size < used)
xalloc_die ();
if (allocated <= used + entry_size)
if (used + entry_size < used)
xalloc_die ();
if (allocated <= used + entry_size)