Change the magic number used to introduce a trie file, so that instead
[sgt/agedu] / du.c
diff --git a/du.c b/du.c
index 6d26c34..fb39201 100644 (file)
--- a/du.c
+++ b/du.c
@@ -185,9 +185,9 @@ static void du_recurse(char **path, size_t pathlen, size_t *pathsize,
      * symlink.
      */
     if (toplevel)
-       statret = STAT(*path, &st);
+       statret = STAT_FUNC(*path, &st);
     else
-       statret = LSTAT(*path, &st);
+       statret = LSTAT_FUNC(*path, &st);
     if (statret < 0) {
        err(gotdata_ctx, "%s: lstat: %s\n", *path, strerror(errno));
        return;
@@ -255,9 +255,18 @@ void du(const char *inpath, gotdata_fn_t gotdata, err_fn_t err,
     size_t pathlen, pathsize;
 
     pathlen = strlen(inpath);
+
+    /*
+     * Trim any trailing slashes from the input path, otherwise we'll
+     * store them in the index with confusing effects.
+     */
+    while (pathlen > 1 && inpath[pathlen-1] == '/')
+        pathlen--;
+
     pathsize = pathlen + 256;
     path = snewn(pathsize, char);
-    strcpy(path, inpath);
+    memcpy(path, inpath, pathlen);
+    path[pathlen] = '\0';
 
     du_recurse(&path, pathlen, &pathsize, gotdata, err, gotdata_ctx, 1);
 }