X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=inline;f=src%2Fextract.c;h=9d00c80bf3877f21574d7ef8c9ec06f9e0290a49;hb=80e978dc2e3b4f5311cba15bc0876fb52113bd66;hp=d7aba0d95bad075c08e8f61b3d95af7af997b92e;hpb=ddab1f615ee03a8125614af124567c8271dcc1b2;p=chaz%2Ftar diff --git a/src/extract.c b/src/extract.c index d7aba0d..9d00c80 100644 --- a/src/extract.c +++ b/src/extract.c @@ -21,6 +21,7 @@ #include "system.h" #include +#include #if HAVE_UTIME_H # include @@ -407,10 +408,7 @@ make_directories (char *file_name) else if ((errno == ENOSYS /* Automounted dirs on Solaris return this. Reported by Warren Hyde */ -#if MSDOS - || errno == EACCES /* Turbo C mkdir gives a funny errno. */ -#endif - ) + || ERRNO_IS_EACCES) /* Turbo C mkdir gives a funny errno. */ && access (file_name, W_OK) == 0) continue; @@ -719,12 +717,13 @@ extract_archive (void) file_name = safer_name_suffix (current_stat_info.file_name, 0); if (strip_path_elements) { - file_name = cut_path_elements (file_name, strip_path_elements); - if (!file_name) + size_t prefix_len = stripped_prefix_len (file_name, strip_path_elements); + if (prefix_len == (size_t) -1) { skip_member (); return; } + file_name += prefix_len; } apply_nonancestor_delayed_set_stat (file_name, 0);