From: Paul Eggert Date: Sun, 23 Feb 2014 22:20:18 +0000 (-0800) Subject: savedir: simplify by using stpcpy X-Git-Tag: v1.0~7429 X-Git-Url: https://gitweb.git.savannah.gnu.org/gitweb/?a=commitdiff_plain;h=26e2108a3b6bad235316f36d68365f5a9ee9f634;p=gnulib.git 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. --- diff --git a/ChangeLog b/ChangeLog index 5b42661c9a..a46689fa63 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2014-02-23 Paul Eggert + + 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 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: