(start_header): Include text of ignored filesystem prefix in warning.
(create_archive): Check for excluded names when doing incremental pass through directory. (dump_file): Do not dump old files explicitly given on command line when using --listed-incremental. Do not strip ./ from front of file names.
This commit is contained in:
62
src/create.c
62
src/create.c
@@ -372,28 +372,29 @@ start_header (const char *name, struct stat *st)
|
||||
|
||||
if (!absolute_names_option)
|
||||
{
|
||||
static int warned_once = 0;
|
||||
size_t prefix_len = FILESYSTEM_PREFIX_LEN (name);
|
||||
|
||||
if (prefix_len)
|
||||
{
|
||||
name += prefix_len;
|
||||
static int warned_once;
|
||||
if (!warned_once)
|
||||
{
|
||||
warned_once = 1;
|
||||
WARN ((0, 0, _("Removing filesystem prefix from names in the archive")));
|
||||
WARN ((0, 0, _("Removing `%.*s' prefix from archive names"),
|
||||
(int) prefix_len, name));
|
||||
}
|
||||
name += prefix_len;
|
||||
}
|
||||
|
||||
while (*name == '/')
|
||||
{
|
||||
name++; /* force relative path */
|
||||
static int warned_once;
|
||||
if (!warned_once)
|
||||
{
|
||||
warned_once = 1;
|
||||
WARN ((0, 0, _("\
|
||||
Removing leading `/' from absolute path names in the archive")));
|
||||
WARN ((0, 0, _("Removing leading `/' from archive names")));
|
||||
}
|
||||
name++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -851,22 +852,21 @@ create_archive (void)
|
||||
|
||||
blank_name_list ();
|
||||
while (p = name_from_list (), p)
|
||||
{
|
||||
strcpy (buffer, p);
|
||||
if (p[strlen (p) - 1] != '/')
|
||||
strcat (buffer, "/");
|
||||
bufp = buffer + strlen (buffer);
|
||||
for (q = gnu_list_name->dir_contents;
|
||||
q && *q;
|
||||
q += strlen (q) + 1)
|
||||
{
|
||||
if (*q == 'Y')
|
||||
{
|
||||
strcpy (bufp, q + 1);
|
||||
dump_file (buffer, (dev_t) -1, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!excluded_name (p))
|
||||
{
|
||||
strcpy (buffer, p);
|
||||
if (p[strlen (p) - 1] != '/')
|
||||
strcat (buffer, "/");
|
||||
bufp = buffer + strlen (buffer);
|
||||
q = gnu_list_name->dir_contents;
|
||||
if (q)
|
||||
for (; *q; q += strlen (q) + 1)
|
||||
if (*q == 'Y')
|
||||
{
|
||||
strcpy (bufp, q + 1);
|
||||
dump_file (buffer, (dev_t) -1, 1);
|
||||
}
|
||||
}
|
||||
free (buffer);
|
||||
}
|
||||
else
|
||||
@@ -945,14 +945,15 @@ dump_file (char *p, dev_t parent_device, int top_level)
|
||||
}
|
||||
#endif
|
||||
|
||||
/* See if we only want new files, and check if this one is too old to
|
||||
/* See if we want only new files, and check if this one is too old to
|
||||
put in the archive. */
|
||||
|
||||
if (!incremental_option && !S_ISDIR (current_stat.st_mode)
|
||||
if ((!incremental_option || listed_incremental_option)
|
||||
&& !S_ISDIR (current_stat.st_mode)
|
||||
&& current_stat.st_mtime < newer_mtime_option
|
||||
&& (!after_date_option || current_stat.st_ctime < newer_ctime_option))
|
||||
{
|
||||
if (parent_device == (dev_t) -1)
|
||||
if (!listed_incremental_option && parent_device == (dev_t) -1)
|
||||
WARN ((0, 0, _("%s: is unchanged; not dumped"), p));
|
||||
/* FIXME: recheck this return. */
|
||||
return;
|
||||
@@ -994,13 +995,11 @@ dump_file (char *p, dev_t parent_device, int top_level)
|
||||
|
||||
while (!absolute_names_option && *link_name == '/')
|
||||
{
|
||||
static int warned_once = 0;
|
||||
|
||||
static int warned_once;
|
||||
if (!warned_once)
|
||||
{
|
||||
warned_once = 1;
|
||||
WARN ((0, 0, _("\
|
||||
Removing leading `/' from absolute links")));
|
||||
WARN ((0, 0, _("Removing leading `/' from link names")));
|
||||
}
|
||||
link_name++;
|
||||
}
|
||||
@@ -1550,11 +1549,6 @@ Read error at byte %s, reading %lu bytes, in file %s"),
|
||||
return;
|
||||
}
|
||||
|
||||
/* Hack to remove "./" from the front of all the file names. */
|
||||
|
||||
if (len == 2 && namebuf[0] == '.' && namebuf[1] == '/')
|
||||
len = 0;
|
||||
|
||||
/* FIXME: Should speed this up by cd-ing into the dir. */
|
||||
|
||||
while (entry = readdir (directory), entry)
|
||||
|
||||
Reference in New Issue
Block a user