mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-06-09 16:52:37 +00:00
Fix reporting of hardlink mismatch during compare
* src/common.h (quote_n_colon): New prototype. * src/misc.c (quote_n_colon): New function. * src/compare.c (report_difference, diff_link): Use quote_n_colon. * tests/difflink.at: New file. * tests/Makefile.am: Add difflink.at * tests/testsuite.at: Likewise.
This commit is contained in:
@@ -619,6 +619,8 @@ void skip_member (void);
|
||||
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define max(a, b) ((a) < (b) ? (b) : (a))
|
||||
|
||||
char const *quote_n_colon (int n, char const *arg);
|
||||
void assign_string (char **dest, const char *src);
|
||||
int unquote_string (char *str);
|
||||
char *zap_slashes (char *name);
|
||||
|
||||
@@ -51,6 +51,8 @@ diff_init (void)
|
||||
read_directory_file ();
|
||||
}
|
||||
|
||||
enum { QUOTE_ARG, QUOTE_NAME };
|
||||
|
||||
/* Sigh about something that differs by writing a MESSAGE to stdlis,
|
||||
given MESSAGE is nonzero. Also set the exit status if not already. */
|
||||
void
|
||||
@@ -60,7 +62,7 @@ report_difference (struct tar_stat_info *st, const char *fmt, ...)
|
||||
{
|
||||
va_list ap;
|
||||
|
||||
fprintf (stdlis, "%s: ", quotearg_colon (st->file_name));
|
||||
fprintf (stdlis, "%s: ", quote_n_colon (QUOTE_NAME, st->file_name));
|
||||
va_start (ap, fmt);
|
||||
vfprintf (stdlis, fmt, ap);
|
||||
va_end (ap);
|
||||
@@ -263,7 +265,8 @@ diff_link (void)
|
||||
&& !sys_compare_links (&file_data, &link_data))
|
||||
report_difference (¤t_stat_info,
|
||||
_("Not linked to %s"),
|
||||
quote (current_stat_info.link_name));
|
||||
quote_n_colon (QUOTE_ARG,
|
||||
current_stat_info.link_name));
|
||||
}
|
||||
|
||||
#ifdef HAVE_READLINK
|
||||
|
||||
@@ -33,6 +33,11 @@ static void namebuf_add_dir (namebuf_t, char const *);
|
||||
static char *namebuf_finish (namebuf_t);
|
||||
static const char *tar_getcdpath (int);
|
||||
|
||||
char const *
|
||||
quote_n_colon (int n, char const *arg)
|
||||
{
|
||||
return quotearg_n_style_colon (n, get_quoting_style (NULL), arg);
|
||||
}
|
||||
|
||||
/* Handling strings. */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user