]> Savannah Git Hosting - gnulib.git/commitdiff
savedir: simplify by using stpcpy
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 23 Feb 2014 22:20:18 +0000 (14:20 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 23 Feb 2014 22:20:57 +0000 (14:20 -0800)
* lib/savedir.c (direntry_t): Remove size member.  All uses removed.
(streamsavedir): Use stpcpy instead.
* modules/savedir (Depends-on): Add stpcpy.

ChangeLog
lib/savedir.c
modules/savedir

index 5b42661c9af36b57bc803f22f9fdb2baa274888f..a46689fa635770a4a1e9fc33e8875a4510ef4017 100644 (file)
--- 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
index badf602162af8972caa8cc0bddbf9d919444dd1a..111d84bebf22c5068a190c6321bf37f8bf723e02 100644 (file)
@@ -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);
     }
index f17ab0a9dbde3d4270e3bf22586ea28b84ea92fb..4210981565b1851a0aa30b12242e96a9d23ae7dc 100644 (file)
@@ -12,6 +12,7 @@ dirent-safer
 fdopendir
 opendir
 readdir
+stpcpy
 xalloc
 
 configure.ac: