* 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.
#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);
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
{
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);
&& !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
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);
+}
\f
/* Handling strings. */
delete03.at\
delete04.at\
delete05.at\
+ difflink.at\
exclude.at\
exclude01.at\
exclude02.at\
--- /dev/null
+# This file is part of GNU tar test suite -*- Autotest -*-
+#
+# Copyright 2017 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+AT_SETUP([link mismatch])
+AT_KEYWORDS([diff difflink])
+AT_TAR_CHECK([
+mkdir a
+genfile -f a/x
+ln -s x a/y
+ln a/y a/z
+tar cf a.tar a
+rm a/z
+ln -s x a/z
+tar df a.tar
+],
+[1],
+[a/z: Not linked to a/y
+],
+[],
+[],[],[ustar]) # Testing one format is enough
+AT_CLEANUP
+
m4_include([extrac20.at])
m4_include([backup01.at])
+AT_BANNER([Comparing])
+m4_include([difflink.at])
+
AT_BANNER([Volume label operations])
m4_include([label01.at])
m4_include([label02.at])