X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fnames.c;h=6fc5ee5105ba68d0ceadde88b1391fa33bbeb516;hb=8c1b242931ddd982b32a2b4d9a7203f88ad42b50;hp=5fdc43321a2eed92af7b445fb12d005def7b1d31;hpb=1e7d274cd8125901600d2f302b9a108933b0c57a;p=chaz%2Ftar diff --git a/src/names.c b/src/names.c index 5fdc433..6fc5ee5 100644 --- a/src/names.c +++ b/src/names.c @@ -20,9 +20,7 @@ #include "system.h" #include -#include #include -#include #include #include "common.h" @@ -610,9 +608,11 @@ bool all_names_found (struct tar_stat_info *p) { struct name const *cursor; - size_t len = strlen (p->file_name); - if (occurrence_option == 0 || p->had_trailing_slash) + size_t len; + + if (!p->file_name || occurrence_option == 0 || p->had_trailing_slash) return false; + len = strlen (p->file_name); for (cursor = namelist; cursor; cursor = cursor->next) { if (cursor->regexp @@ -833,10 +833,7 @@ collect_and_sort_names (void) if (deref_stat (dereference_option, name->name, &statbuf) != 0) { - if (ignore_failed_read_option) - stat_warn (name->name); - else - stat_error (name->name); + stat_diag (name->name); continue; } if (S_ISDIR (statbuf.st_mode)) @@ -1024,9 +1021,9 @@ safer_name_suffix (char const *file_name, bool link_target) for (p = file_name + prefix_len; *p; ) { - if (p[0] == '.' && p[1] == '.' && (ISSLASH (p[2]) || !p[2])) + if (p[0] == '.' && p[1] == '.' && (ISSLASH (p[2]) || !p[2])) prefix_len = p + 2 - file_name; - + do { char c = *p++; @@ -1070,7 +1067,7 @@ safer_name_suffix (char const *file_name, bool link_target) }; WARN ((0, 0, _(diagnostic[link_target]))); } - + p = "."; }