--- a/src/common.h
+++ b/src/common.h
-@@ -931,4 +931,7 @@
- bool excluded_name (char const *name, struct tar_stat_info *st);
- void exclude_vcs_ignores (void);
+@@ -971,4 +971,7 @@
+ int group_map_translate (gid_t gid, gid_t *new_gid, char const **new_name);
+
+GLOBAL int debian_longlink_hack;
+GLOBAL int pristine_tar_compat;
_GL_INLINE_HEADER_END
--- a/src/create.c
+++ b/src/create.c
-@@ -27,6 +27,9 @@
+@@ -28,6 +28,9 @@
#include "common.h"
#include <hash.h>
/* Error number to use when an impostor is discovered.
Pretend the impostor isn't there. */
enum { IMPOSTOR_ERRNO = ENOENT };
-@@ -534,6 +537,11 @@
+@@ -535,6 +538,11 @@
return header;
}
/* Write a GNUTYPE_LONGLINK or GNUTYPE_LONGNAME block. */
static void
write_gnu_long_link (struct tar_stat_info *st, const char *p, char type)
-@@ -544,6 +552,11 @@
+@@ -545,6 +553,11 @@
char *tmpname;
header = start_private_header ("././@LongLink", size, 0);
uid_to_uname (0, &tmpname);
UNAME_TO_CHARS (tmpname, header->header.uname);
free (tmpname);
-@@ -724,7 +737,7 @@
+@@ -725,7 +738,7 @@
return write_short_name (st);
}
else if (NAME_FIELD_SIZE - (archive_format == OLDGNU_FORMAT)
return write_long_name (st);
else
return write_short_name (st);
-@@ -1478,7 +1491,7 @@
+@@ -1496,7 +1509,7 @@
block_ordinal = current_block_ordinal ();
assign_string (&st->link_name, link_name);
if (NAME_FIELD_SIZE - (archive_format == OLDGNU_FORMAT)
st->stat.st_size = 0;
--- a/src/tar.c
+++ b/src/tar.c
-@@ -1281,6 +1281,26 @@
+@@ -1204,6 +1204,26 @@
return res;
}
\f
static uintmax_t
parse_owner_group (char *arg, uintmax_t field_max, char const **name_option)
-@@ -2732,6 +2752,9 @@
- filename_terminator = '\n';
+@@ -2682,6 +2702,9 @@
+
set_quoting_style (0, DEFAULT_QUOTING_STYLE);
+ debian_longlink_hack_init ();