Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

PATCH: PATH_MAX and mailstat, part I



This makes 'file' be dynamically allocated in mailstat.

Index: Src/utils.c
===================================================================
RCS file: /cvsroot/zsh/zsh/Src/utils.c,v
retrieving revision 1.16
diff -u -r1.16 utils.c
--- Src/utils.c	2000/09/18 03:36:22	1.16
+++ Src/utils.c	2000/09/18 03:49:16
@@ -3789,8 +3789,8 @@
        struct stat             st_ret, st_tmp;
        static struct stat      st_new_last, st_ret_last;
        char                    dir[PATH_MAX * 2];
-       char                    file[PATH_MAX * 2];
-       int                     i, l;
+       char                    *file;
+       int                     i;
        time_t                  atime = 0, mtime = 0;
 
        /* First see if it's a directory. */
@@ -3832,28 +3832,26 @@
                return 0;
        }
        st_new_last = st_tmp;
-
+       
        /* Loop over new/ and cur/ */
        for (i = 0; i < 2; i++) {
-               sprintf(dir, "%s/%s", path, i ? "cur" : "new");
-               sprintf(file, "%s/", dir);
-               l = strlen(file);
+	   sprintf(dir, "%s/%s", path, i ? "cur" : "new");
                if ((dd = opendir(dir)) == NULL)
-                       return 0;
+		   return 0;
                while ((fn = readdir(dd)) != NULL) {
-                       if (fn->d_name[0] == '.' ||
-                           strlen(fn->d_name) + l >= sizeof(file))
-                               continue;
-                       strcpy(file + l, fn->d_name);
-                       if (stat(file, &st_tmp) != 0)
-                               continue;
-                       st_ret.st_size += st_tmp.st_size;
-                       st_ret.st_blocks++;
-                       if (st_tmp.st_atime != st_tmp.st_mtime &&
-                           st_tmp.st_atime > atime)
-                               atime = st_tmp.st_atime;
-                       if (st_tmp.st_mtime > mtime)
-                               mtime = st_tmp.st_mtime;
+		   if (fn->d_name[0] == '.')
+		       continue;
+
+		   file = zhtricat(dir, "/", fn->d.name);
+		   if (stat(file, &st_tmp) != 0)
+		       continue;
+		   st_ret.st_size += st_tmp.st_size;
+		   st_ret.st_blocks++;
+		   if (st_tmp.st_atime != st_tmp.st_mtime &&
+		       st_tmp.st_atime > atime)
+		       atime = st_tmp.st_atime;
+		   if (st_tmp.st_mtime > mtime)
+		       mtime = st_tmp.st_mtime;
                }
                closedir(dd);
        }



Messages sorted by: Reverse Date, Date, Thread, Author