X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=inline;f=src%2Fincremen.c;h=c0bbf4e8d06beb90ba21081e66c830636886f933;hb=91abd3da82fe8161c5f4f53270d976ff8ffe6c7a;hp=cc5856a5272569b9098081f4d0653581f81457b5;hpb=52429bb9563d5b4bfece4cf9036ce9363e05996b;p=chaz%2Ftar diff --git a/src/incremen.c b/src/incremen.c index cc5856a..c0bbf4e 100644 --- a/src/incremen.c +++ b/src/incremen.c @@ -150,6 +150,7 @@ procdir (char *name_buffer, struct stat *stat_data, { struct directory *directory; bool nfs = NFS_FILE_STAT (*stat_data); + struct name *np; if ((directory = find_directory (name_buffer)) != NULL) { @@ -202,8 +203,12 @@ procdir (char *name_buffer, struct stat *stat_data, ? ALL_CHILDREN : CHANGED_CHILDREN; } - - if (one_file_system_option && device != stat_data->st_dev) + + /* If the directory is on another device and --one-file-system was given, + omit it... */ + if (one_file_system_option && device != stat_data->st_dev + /* ... except if it was explicitely given in the command line */ + && !((np = name_scan (name_buffer)) && np->explicit)) directory->children = NO_CHILDREN; else if (children == ALL_CHILDREN) directory->children = ALL_CHILDREN; @@ -454,7 +459,7 @@ read_directory_file (void) incremental_version = 0; if (incremental_version > TAR_INCREMENTAL_VERSION) - ERROR((1, 0, _("Unsupported incremental format version: %s"), + ERROR((1, 0, _("Unsupported incremental format version: %d"), incremental_version)); t = u = (errno = 0, strtoumax (buf, &ebuf, 10)); @@ -681,6 +686,12 @@ purge_directory (char const *directory_name) char *current_dir; char *cur, *arc; + if (!current_stat_info.dumpdir) + { + skip_member (); + return; + } + current_dir = savedir (directory_name); if (!current_dir)