if (group_option != (gid_t) -1)
st->st_gid = group_option;
if (mode_option)
- st->st_mode = ((st->st_mode & S_IFMT)
+ st->st_mode = ((st->st_mode & ~MODE_ALL)
| mode_adjust (st->st_mode, mode_option));
/* Paul Eggert tried the trivial test ($WRITER cf a b; $READER tvf a)
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)
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 ();
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;
/* 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;
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);
return;
}
-#ifdef S_ISLNK
+#ifdef HAVE_READLINK
else if (S_ISLNK (current_stat.st_mode))
{
int size;
}
return;
}
-#endif /* S_ISLNK */
+#endif
else if (S_ISDIR (current_stat.st_mode))
{
while (entry = readdir (directory), entry)
{
- /* Skip `.' and `..'. */
+ /* Skip `.', `..', and excluded file names. */
- if (is_dot_or_dotdot (entry->d_name))
+ if (is_dot_or_dotdot (entry->d_name)
+ || excluded_filename (excluded, entry->d_name))
continue;
if ((int) NAMLEN (entry) + len >= buflen)
#endif
}
strcpy (namebuf + len, entry->d_name);
- if (exclude_option && check_exclude (namebuf))
- continue;
dump_file (namebuf, our_device, 0);
}
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
-
- /* Avoid screwy apollo lossage where S_IFIFO == S_IFSOCK. */
-
-#if (_ISP__M68K == 0) && (_ISP__A88K == 0) && defined(S_ISFIFO)
- else if (S_ISFIFO (current_stat.st_mode))
+ else if (S_ISFIFO (current_stat.st_mode)
+ || S_ISSOCK (current_stat.st_mode))
type = FIFOTYPE;
-#endif
-
-#ifdef S_ISSOCK
- else if (S_ISSOCK (current_stat.st_mode))
- type = FIFOTYPE;
-#endif
-
else
goto unknown;
header->header.typeflag = type;
-#if defined(S_IFBLK) || defined(S_IFCHR)
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)