X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fcreate.c;h=9769d0b245b12ee57714a20fa56106af7c34d6ad;hb=653e9784d30438aa9139aaf0da0bbb9e3650e8b0;hp=1ca34a62100fbf26b54aca228f621c299c8c5830;hpb=fbc29baad9c20132aff523fe0654a6adf545290e;p=chaz%2Ftar diff --git a/src/create.c b/src/create.c index 1ca34a6..9769d0b 100644 --- a/src/create.c +++ b/src/create.c @@ -755,7 +755,8 @@ create_archive (void) collect_and_sort_names (); while (p = name_from_list (), p) - dump_file (p, (dev_t) -1, 1); + if (!excluded_pathname (excluded, p)) + dump_file (p, (dev_t) -1, 1); blank_name_list (); while (p = name_from_list (), p) @@ -780,7 +781,8 @@ create_archive (void) else { while (p = name_next (1), p) - dump_file (p, (dev_t) -1, 1); + if (!excluded_pathname (excluded, p)) + dump_file (p, (dev_t) -1, 1); } write_eot (); @@ -883,19 +885,10 @@ dump_file (char *p, dev_t parent_device, int top_level) if (current_stat.st_nlink > 1 && (S_ISREG (current_stat.st_mode) -#ifdef S_ISCTG || S_ISCTG (current_stat.st_mode) -#endif -#ifdef S_ISCHR || S_ISCHR (current_stat.st_mode) -#endif -#ifdef S_ISBLK || S_ISBLK (current_stat.st_mode) -#endif -#ifdef S_ISFIFO - || S_ISFIFO (current_stat.st_mode) -#endif - )) + || S_ISFIFO (current_stat.st_mode))) { struct link *lp; @@ -965,10 +958,7 @@ Removing leading `/' from absolute links"))); /* This is not a link to a previously dumped file, so dump it. */ if (S_ISREG (current_stat.st_mode) -#ifdef S_ISCTG - || S_ISCTG (current_stat.st_mode) -#endif - ) + || S_ISCTG (current_stat.st_mode)) { int f; /* file descriptor */ size_t bufsize; @@ -1111,12 +1101,12 @@ Removing leading `/' from absolute links"))); return; } } -#ifdef S_ISCTG + /* Mark contiguous files, if we support them. */ if (archive_format != V7_FORMAT && S_ISCTG (current_stat.st_mode)) header->header.typeflag = CONTTYPE; -#endif + isextended = header->oldgnu_header.isextended; save_typeflag = header->header.typeflag; finish_header (header); @@ -1272,7 +1262,7 @@ Read error at byte %s, reading %lu bytes, in file %s"), return; } -#ifdef S_ISLNK +#ifdef HAVE_READLINK else if (S_ISLNK (current_stat.st_mode)) { int size; @@ -1309,7 +1299,7 @@ Read error at byte %s, reading %lu bytes, in file %s"), } return; } -#endif /* S_ISLNK */ +#endif else if (S_ISDIR (current_stat.st_mode)) { @@ -1506,26 +1496,13 @@ Read error at byte %s, reading %lu bytes, in file %s"), return; } -#ifdef S_ISCHR else if (S_ISCHR (current_stat.st_mode)) type = CHRTYPE; -#endif - -#ifdef S_ISBLK else if (S_ISBLK (current_stat.st_mode)) type = BLKTYPE; -#endif - -#ifdef S_ISFIFO - else if (S_ISFIFO (current_stat.st_mode)) - type = FIFOTYPE; -#endif - -#ifdef S_ISSOCK - else if (S_ISSOCK (current_stat.st_mode)) + else if (S_ISFIFO (current_stat.st_mode) + || S_ISSOCK (current_stat.st_mode)) type = FIFOTYPE; -#endif - else goto unknown; @@ -1542,13 +1519,11 @@ Read error at byte %s, reading %lu bytes, in file %s"), header->header.typeflag = type; -#if defined S_ISBLK || defined S_ISCHR if (type != FIFOTYPE) { MAJOR_TO_OCT (major (current_stat.st_rdev), header->header.devmajor); MINOR_TO_OCT (minor (current_stat.st_rdev), header->header.devminor); } -#endif finish_header (header); if (remove_files_option)