X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftar;a=blobdiff_plain;f=src%2Funlink.c;h=7f86cc5844a16f3aeecd1f96a69a34a2cf80de5d;hp=225d49b1bf2654ae8b08e769e41cc85d9ee09256;hb=fc58a8bd984eb5334f713ec7ac993bddfe9e77d3;hpb=7808b6981b2c7f828684148e2a65f9640958a59a diff --git a/src/unlink.c b/src/unlink.c index 225d49b..7f86cc5 100644 --- a/src/unlink.c +++ b/src/unlink.c @@ -73,7 +73,7 @@ flush_deferred_unlinks (bool force) { struct deferred_unlink *p, *prev = NULL; int saved_chdir = chdir_current; - + for (p = dunlink_head; p; ) { struct deferred_unlink *next = p->next; @@ -86,15 +86,16 @@ flush_deferred_unlinks (bool force) { const char *fname; - if (p->file_name[0] == 0 || - strcmp (p->file_name, ".") == 0) + if (p->dir_idx + && (p->file_name[0] == 0 + || strcmp (p->file_name, ".") == 0)) { fname = tar_dirname (); chdir_do (p->dir_idx - 1); } else fname = p->file_name; - + if (unlinkat (chdir_fd, fname, AT_REMOVEDIR) != 0) { switch (errno)