X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcreate.c;h=23e9efdbd302f8537c872d4561b69280ae04fa54;hb=9bf87b195e732d03db5efc8850ac5e29a2538df9;hp=641603afef5dd5b8e97434269a0a25d97c2fbfd0;hpb=643e3f244170eb0edcdcb237c45bb8756785e047;p=chaz%2Ftar diff --git a/src/create.c b/src/create.c index 641603a..23e9efd 100644 --- a/src/create.c +++ b/src/create.c @@ -1173,20 +1173,7 @@ dump_dir0 (char *directory, quotearg_colon (st->orig_file_name))); return; } - - if (exclude_caches_option - && check_cache_directory(st->orig_file_name)) - { - if (verbose_option) - WARN ((0, 0, - _("%s: contains a cache directory tag; not dumped"), - quotearg_colon (st->orig_file_name))); - return; - } - - if (check_exclude_tags (st->orig_file_name)) - return; - + { char const *entry; size_t entry_len; @@ -1237,9 +1224,6 @@ dump_dir (int fd, struct tar_stat_info *st, int top_level, dev_t parent_device) return false; } - ensure_slash (&st->orig_file_name); - ensure_slash (&st->file_name); - dump_dir0 (directory, st, top_level, parent_device); free (directory); @@ -1560,6 +1544,22 @@ dump_file0 (struct tar_stat_info *st, const char *p, if (is_dir) { + ensure_slash (&st->orig_file_name); + ensure_slash (&st->file_name); + + if (exclude_caches_option + && check_cache_directory (st->orig_file_name)) + { + if (verbose_option) + WARN ((0, 0, + _("%s: contains a cache directory tag; not dumped"), + quotearg_colon (st->orig_file_name))); + return; + } + + if (check_exclude_tags (st->orig_file_name)) + return; + ok = dump_dir (fd, st, top_level, parent_device); /* dump_dir consumes FD if successful. */