changeset 17618:4941d0da6e24

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.
author Paul Eggert <eggert@cs.ucla.edu>
date Sun, 23 Feb 2014 14:20:18 -0800
parents 098e9f7b62e9
children d09167851e07
files ChangeLog lib/savedir.c modules/savedir
diffstat 3 files changed, 24 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Jan 14 16:59:07 2014 +0000
+++ b/ChangeLog	Sun Feb 23 14:20:18 2014 -0800
@@ -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
--- a/lib/savedir.c	Tue Jan 14 16:59:07 2014 +0000
+++ b/lib/savedir.c	Sun Feb 23 14:20:18 2014 -0800
@@ -40,7 +40,6 @@
 typedef struct
 {
   char *name;
-  size_t size;
 #if D_INO_IN_DIRENT
   ino_t ino;
 #endif
@@ -128,25 +127,24 @@
                   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 @@
       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);
     }
--- a/modules/savedir	Tue Jan 14 16:59:07 2014 +0000
+++ b/modules/savedir	Sun Feb 23 14:20:18 2014 -0800
@@ -12,6 +12,7 @@
 fdopendir
 opendir
 readdir
+stpcpy
 xalloc
 
 configure.ac: