summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2014-02-23 14:20:18 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2014-02-23 14:20:57 -0800
commit26e2108a3b6bad235316f36d68365f5a9ee9f634 (patch)
treed4fe6719635cb1c53d87693f28bfeff1c67fc95e
parentd6eab2e70fc5ccc82a73e5c988b76a229e4cd3d5 (diff)
downloadgnulib-26e2108a3b6bad235316f36d68365f5a9ee9f634.tar.gz
savedir: simplify by using stpcpy
* lib/savedir.c (direntry_t): Remove size member. All uses removed. (streamsavedir): Use stpcpy instead. * modules/savedir (Depends-on): Add stpcpy.
-rw-r--r--ChangeLog7
-rw-r--r--lib/savedir.c34
-rw-r--r--modules/savedir1
3 files changed, 24 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 5b42661c9a..a46689fa63 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2014-02-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ savedir: simplify by using stpcpy
+ * lib/savedir.c (direntry_t): Remove size member. All uses removed.
+ (streamsavedir): Use stpcpy instead.
+ * modules/savedir (Depends-on): Add stpcpy.
+
2014-02-21 Pádraig Brady <P@draigBrady.com>
spawn: fix link error on uclibc
diff --git a/lib/savedir.c b/lib/savedir.c
index badf602162..111d84bebf 100644
--- a/lib/savedir.c
+++ b/lib/savedir.c
@@ -40,7 +40,6 @@
typedef struct
{
char *name;
- size_t size;
#if D_INO_IN_DIRENT
ino_t ino;
#endif
@@ -128,25 +127,24 @@ streamsavedir (DIR *dirp, enum savedir_option option)
entries_allocated = n;
}
entries[entries_used].name = xstrdup (entry);
- entries[entries_used].size = entry_size;
#if D_INO_IN_DIRENT
entries[entries_used].ino = dp->d_ino;
#endif
entries_used++;
}
- else
- {
- if (allocated - used <= entry_size)
- {
- size_t n = used + entry_size;
- if (n < used)
- xalloc_die ();
- name_space = x2nrealloc (name_space, &n, 1);
- allocated = n;
- }
- memcpy (name_space + used, entry, entry_size);
- }
- used += entry_size;
+ else
+ {
+ if (allocated - used <= entry_size)
+ {
+ size_t n = used + entry_size;
+ if (n < used)
+ xalloc_die ();
+ name_space = x2nrealloc (name_space, &n, 1);
+ allocated = n;
+ }
+ memcpy (name_space + used, entry, entry_size);
+ }
+ used += entry_size;
}
}
@@ -168,9 +166,9 @@ streamsavedir (DIR *dirp, enum savedir_option option)
used = 0;
for (i = 0; i < entries_used; i++)
{
- memcpy (name_space + used, entries[i].name, entries[i].size);
- used += entries[i].size;
- free (entries[i].name);
+ char *dest = name_space + used;
+ used += stpcpy (dest, entries[i].name) - dest + 1;
+ free (entries[i].name);
}
free (entries);
}
diff --git a/modules/savedir b/modules/savedir
index f17ab0a9db..4210981565 100644
--- a/modules/savedir
+++ b/modules/savedir
@@ -12,6 +12,7 @@ dirent-safer
fdopendir
opendir
readdir
+stpcpy
xalloc
configure.ac: