#include "common.h"
#include <hash.h>
+extern int debian_longlink_hack;
+
/* Error number to use when an impostor is discovered.
Pretend the impostor isn't there. */
enum { IMPOSTOR_ERRNO = ENOENT };
return write_short_name (st);
}
else if (NAME_FIELD_SIZE - (archive_format == OLDGNU_FORMAT)
- < strlen (st->file_name))
+ < strlen (st->file_name) + debian_longlink_hack)
return write_long_name (st);
else
return write_short_name (st);
block_ordinal = current_block_ordinal ();
assign_string (&st->link_name, link_name);
if (NAME_FIELD_SIZE - (archive_format == OLDGNU_FORMAT)
- < strlen (link_name))
+ < strlen (link_name) + debian_longlink_hack)
write_long_link (st);
st->stat.st_size = 0;
report_textual_dates (&args);
}
+/* Debian specific environment variable used by pristine-tar to enable use of
+ * longlinks for filenames exactly 100 bytes long. */
+void debian_longlink_hack_init () {
+ char *s=getenv ("TAR_LONGLINK_100");
+ if (s && strcmp(s, "1") == 0)
+ debian_longlink_hack=1;
+ else
+ debian_longlink_hack=0;
+}
+
\f
/* Tar proper. */
filename_terminator = '\n';
set_quoting_style (0, DEFAULT_QUOTING_STYLE);
+ debian_longlink_hack_init ();
+
/* Make sure we have first three descriptors available */
stdopen ();