commit 5c76e79f41250d505bca09d36a5518bf66c51749
Author:     Richard Ipsum <richardip...@vx21.xyz>
AuthorDate: Wed Jun 3 12:45:15 2020 +0100
Commit:     Michael Forney <mfor...@mforney.org>
CommitDate: Sat Jun 20 18:48:14 2020 -0700

    du: recurse: fix path
    
    path is not fixed up on exit from recursive step, this leads to
    incorrect paths in du's output.
    
    % find D
    D
    D/E
    D/E/F
    D/E/F/a2
    D/E/F/b2
    D/E/a1
    D/E/b1
    D/a
    D/b
    
    % du D
    4       D/E/F
    8       D/E
    12      D
    
    % ~/sbase/du D
    4       D/E/F/b2
    8       D/E/b1
    12      D

diff --git a/libutil/recurse.c b/libutil/recurse.c
index e21d815..feb1b30 100644
--- a/libutil/recurse.c
+++ b/libutil/recurse.c
@@ -90,6 +90,8 @@ recurse(int dirfd, const char *name, void *data, struct 
recursor *r)
                                r->depth--;
                        }
                }
+               r->path[pathlen - 1] = '\0';
+               r->pathlen = pathlen - 1;
                closedir(dp);
        }
 

Reply via email to