merge patch from Joey Hess into working tree
authorBdale Garbee <bdale@gag.com>
Sun, 3 Nov 2013 16:48:18 +0000 (09:48 -0700)
committerBdale Garbee <bdale@gag.com>
Sun, 3 Nov 2013 16:48:18 +0000 (09:48 -0700)
debian/patches/longlink-hack.diff [deleted file]
debian/patches/pristine-tar.diff [new file with mode: 0644]
debian/patches/pristine_tar_compat [deleted file]
debian/patches/series

diff --git a/debian/patches/longlink-hack.diff b/debian/patches/longlink-hack.diff
deleted file mode 100644 (file)
index b6bc385..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-diff --git a/src/common.h b/src/common.h
-index eb801bb..4aaace5 100644
---- a/src/common.h
-+++ b/src/common.h
-@@ -907,4 +907,6 @@ void finish_deferred_unlinks (void);
- /* Module exit.c */
- extern void (*fatal_exit_hook) (void);
-+GLOBAL int debian_longlink_hack;
-+
- _GL_INLINE_HEADER_END
-diff --git a/src/create.c b/src/create.c
-index e14e13d..3a84c79 100644
---- a/src/create.c
-+++ b/src/create.c
-@@ -27,6 +27,8 @@
- #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 };
-@@ -724,7 +726,7 @@ write_header_name (struct tar_stat_info *st)
-       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);
-@@ -1476,7 +1478,7 @@ dump_hard_link (struct tar_stat_info *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;
-diff --git a/src/tar.c b/src/tar.c
-index 4f5017d..e9a5126 100644
---- a/src/tar.c
-+++ b/src/tar.c
-@@ -1246,6 +1246,16 @@ expand_pax_option (struct tar_args *targs, const char *arg)
-   return res;
- }
-+/* 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
- static uintmax_t
- parse_owner_group (char *arg, uintmax_t field_max, char const **name_option)
-@@ -2626,6 +2636,8 @@ main (int argc, char **argv)
-   filename_terminator = '\n';
-   set_quoting_style (0, DEFAULT_QUOTING_STYLE);
-+  debian_longlink_hack_init ();
-+
-   /* Make sure we have first three descriptors available */
-   stdopen ();
diff --git a/debian/patches/pristine-tar.diff b/debian/patches/pristine-tar.diff
new file mode 100644 (file)
index 0000000..f350acc
--- /dev/null
@@ -0,0 +1,108 @@
+diff --git a/src/common.h b/src/common.h
+index eb801bb..30f8cf5 100644
+--- a/src/common.h
++++ b/src/common.h
+@@ -907,4 +907,7 @@ void finish_deferred_unlinks (void);
+ /* Module exit.c */
+ extern void (*fatal_exit_hook) (void);
++GLOBAL int debian_longlink_hack;
++GLOBAL int pristine_tar_compat;
++
+ _GL_INLINE_HEADER_END
+diff --git a/src/create.c b/src/create.c
+index e14e13d..d6e8ea7 100644
+--- a/src/create.c
++++ b/src/create.c
+@@ -27,6 +27,9 @@
+ #include "common.h"
+ #include <hash.h>
++extern int debian_longlink_hack;
++extern int pristine_tar_compat;
++
+ /* Error number to use when an impostor is discovered.
+    Pretend the impostor isn't there.  */
+ enum { IMPOSTOR_ERRNO = ENOENT };
+@@ -534,6 +537,11 @@ write_short_name (struct tar_stat_info *st)
+   return header;
+ }
++#define FILL(field,byte) do {            \
++  memset(field, byte, sizeof(field)-1);  \
++  (field)[sizeof(field)-1] = 0;          \
++} while (0)
++
+ /* 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,10 @@ write_gnu_long_link (struct tar_stat_info *st, const char *p, char type)
+   char *tmpname;
+   header = start_private_header ("././@LongLink", size, start_time.tv_sec);
++  if (pristine_tar_compat) {
++        FILL (header->header.mtime, '0');
++        FILL (header->header.mode, '0');
++  }
+   uid_to_uname (0, &tmpname);
+   UNAME_TO_CHARS (tmpname, header->header.uname);
+   free (tmpname);
+@@ -724,7 +736,7 @@ write_header_name (struct tar_stat_info *st)
+       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);
+@@ -1476,7 +1488,7 @@ dump_hard_link (struct tar_stat_info *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;
+diff --git a/src/tar.c b/src/tar.c
+index 4f5017d..b72e25b 100644
+--- a/src/tar.c
++++ b/src/tar.c
+@@ -1246,6 +1246,26 @@ expand_pax_option (struct tar_args *targs, const char *arg)
+   return res;
+ }
++/* Debian specific environment variable used by pristine-tar to enable use of
++ * longlinks for filenames exactly 100 bytes long. */
++void debian_longlink_hack_init (void) {
++ char *s=getenv ("TAR_LONGLINK_100");
++ if (s && strcmp(s, "1") == 0)
++       debian_longlink_hack=1;
++ else
++       debian_longlink_hack=0;
++}
++
++/* pristine-tar sets this environment variable to force fields in longlinks
++ * to be zeroed as was the case in tar 1.26. */
++void pristine_tar_compat_init (void) {
++ char *s=getenv ("PRISTINE_TAR_COMPAT");
++ if (s && strcmp(s, "1") == 0)
++       pristine_tar_compat=1;
++ else
++       pristine_tar_compat=0;
++}
++
\f
+ static uintmax_t
+ parse_owner_group (char *arg, uintmax_t field_max, char const **name_option)
+@@ -2626,6 +2646,9 @@ main (int argc, char **argv)
+   filename_terminator = '\n';
+   set_quoting_style (0, DEFAULT_QUOTING_STYLE);
++  debian_longlink_hack_init ();
++  pristine_tar_compat_init ();
++
+   /* Make sure we have first three descriptors available */
+   stdopen ();
diff --git a/debian/patches/pristine_tar_compat b/debian/patches/pristine_tar_compat
deleted file mode 100644 (file)
index e15d4f6..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-From e36454201ec81374bf4d2d09877e6c345a6fddab Mon Sep 17 00:00:00 2001
-From: Joey Hess <joeyh@debian.org>
-Date: Sun, 27 Oct 2013 13:16:52 -0400
-Subject: [PATCH] add PRISTINE_TAR_COMPAT
-
----
- debian/patches/longlink-hack.diff |  72 -------------------------
- debian/patches/pristine-tar.diff  | 108 ++++++++++++++++++++++++++++++++++++++
- debian/patches/series             |   2 +-
- 3 files changed, 109 insertions(+), 73 deletions(-)
- delete mode 100644 debian/patches/longlink-hack.diff
- create mode 100644 debian/patches/pristine-tar.diff
-
-diff --git a/debian/patches/longlink-hack.diff b/debian/patches/longlink-hack.diff
-deleted file mode 100644
-index b6bc385..0000000
---- a/debian/patches/longlink-hack.diff
-+++ /dev/null
-@@ -1,72 +0,0 @@
--diff --git a/src/common.h b/src/common.h
--index eb801bb..4aaace5 100644
----- a/src/common.h
--+++ b/src/common.h
--@@ -907,4 +907,6 @@ void finish_deferred_unlinks (void);
-- /* Module exit.c */
-- extern void (*fatal_exit_hook) (void);
-- 
--+GLOBAL int debian_longlink_hack;
--+
-- _GL_INLINE_HEADER_END
--diff --git a/src/create.c b/src/create.c
--index e14e13d..3a84c79 100644
----- a/src/create.c
--+++ b/src/create.c
--@@ -27,6 +27,8 @@
-- #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 };
--@@ -724,7 +726,7 @@ write_header_name (struct tar_stat_info *st)
--       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);
--@@ -1476,7 +1478,7 @@ dump_hard_link (struct tar_stat_info *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;
--diff --git a/src/tar.c b/src/tar.c
--index 4f5017d..e9a5126 100644
----- a/src/tar.c
--+++ b/src/tar.c
--@@ -1246,6 +1246,16 @@ expand_pax_option (struct tar_args *targs, const char *arg)
--   return res;
-- }
-- 
--+/* 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
-- static uintmax_t
-- parse_owner_group (char *arg, uintmax_t field_max, char const **name_option)
--@@ -2626,6 +2636,8 @@ main (int argc, char **argv)
--   filename_terminator = '\n';
--   set_quoting_style (0, DEFAULT_QUOTING_STYLE);
-- 
--+  debian_longlink_hack_init ();
--+
--   /* Make sure we have first three descriptors available */
--   stdopen ();
-- 
-diff --git a/debian/patches/pristine-tar.diff b/debian/patches/pristine-tar.diff
-new file mode 100644
-index 0000000..f350acc
---- /dev/null
-+++ b/debian/patches/pristine-tar.diff
-@@ -0,0 +1,108 @@
-+diff --git a/src/common.h b/src/common.h
-+index eb801bb..30f8cf5 100644
-+--- a/src/common.h
-++++ b/src/common.h
-+@@ -907,4 +907,7 @@ void finish_deferred_unlinks (void);
-+ /* Module exit.c */
-+ extern void (*fatal_exit_hook) (void);
-+ 
-++GLOBAL int debian_longlink_hack;
-++GLOBAL int pristine_tar_compat;
-++
-+ _GL_INLINE_HEADER_END
-+diff --git a/src/create.c b/src/create.c
-+index e14e13d..d6e8ea7 100644
-+--- a/src/create.c
-++++ b/src/create.c
-+@@ -27,6 +27,9 @@
-+ #include "common.h"
-+ #include <hash.h>
-+ 
-++extern int debian_longlink_hack;
-++extern int pristine_tar_compat;
-++
-+ /* Error number to use when an impostor is discovered.
-+    Pretend the impostor isn't there.  */
-+ enum { IMPOSTOR_ERRNO = ENOENT };
-+@@ -534,6 +537,11 @@ write_short_name (struct tar_stat_info *st)
-+   return header;
-+ }
-+ 
-++#define FILL(field,byte) do {            \
-++  memset(field, byte, sizeof(field)-1);  \
-++  (field)[sizeof(field)-1] = 0;          \
-++} while (0)
-++
-+ /* 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,10 @@ write_gnu_long_link (struct tar_stat_info *st, const char *p, char type)
-+   char *tmpname;
-+ 
-+   header = start_private_header ("././@LongLink", size, start_time.tv_sec);
-++  if (pristine_tar_compat) {
-++       FILL (header->header.mtime, '0');
-++       FILL (header->header.mode, '0');
-++  }
-+   uid_to_uname (0, &tmpname);
-+   UNAME_TO_CHARS (tmpname, header->header.uname);
-+   free (tmpname);
-+@@ -724,7 +736,7 @@ write_header_name (struct tar_stat_info *st)
-+       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);
-+@@ -1476,7 +1488,7 @@ dump_hard_link (struct tar_stat_info *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;
-+diff --git a/src/tar.c b/src/tar.c
-+index 4f5017d..b72e25b 100644
-+--- a/src/tar.c
-++++ b/src/tar.c
-+@@ -1246,6 +1246,26 @@ expand_pax_option (struct tar_args *targs, const char *arg)
-+   return res;
-+ }
-+ 
-++/* Debian specific environment variable used by pristine-tar to enable use of
-++ * longlinks for filenames exactly 100 bytes long. */
-++void debian_longlink_hack_init (void) {
-++ char *s=getenv ("TAR_LONGLINK_100");
-++ if (s && strcmp(s, "1") == 0)
-++      debian_longlink_hack=1;
-++ else
-++      debian_longlink_hack=0;
-++}
-++
-++/* pristine-tar sets this environment variable to force fields in longlinks
-++ * to be zeroed as was the case in tar 1.26. */
-++void pristine_tar_compat_init (void) {
-++ char *s=getenv ("PRISTINE_TAR_COMPAT");
-++ if (s && strcmp(s, "1") == 0)
-++      pristine_tar_compat=1;
-++ else
-++      pristine_tar_compat=0;
-++}
-++
-+ \f
-+ static uintmax_t
-+ parse_owner_group (char *arg, uintmax_t field_max, char const **name_option)
-+@@ -2626,6 +2646,9 @@ main (int argc, char **argv)
-+   filename_terminator = '\n';
-+   set_quoting_style (0, DEFAULT_QUOTING_STYLE);
-+ 
-++  debian_longlink_hack_init ();
-++  pristine_tar_compat_init ();
-++
-+   /* Make sure we have first three descriptors available */
-+   stdopen ();
-+ 
-diff --git a/debian/patches/series b/debian/patches/series
-index 1dfef41..5974cbb 100644
---- a/debian/patches/series
-+++ b/debian/patches/series
-@@ -1,2 +1,2 @@
--longlink-hack.diff
-+pristine-tar.diff
- listed03-linux-only
--- 
-1.8.4.rc0
-
index f3d235b44509084fa367750f75975dcf5b59d4f0..9264bdca5344c6292b6e3deebc2d7bbd485060b6 100644 (file)
@@ -1,3 +1,3 @@
-longlink-hack.diff
+pristine-tar.diff
 listed03-linux-only
 pristine_tar_compat