diff --git a/pax-3.4-PATHMAX.patch b/pax-3.4-PATHMAX.patch new file mode 100644 index 0000000..43aaa0b --- /dev/null +++ b/pax-3.4-PATHMAX.patch @@ -0,0 +1,21 @@ +--- pax-3.0/src/pax.h.MAXPATH 2001-12-15 14:52:52.000000000 +0100 ++++ pax-3.0/src/pax.h 2004-10-08 11:10:50.673000632 +0200 +@@ -41,6 +41,7 @@ + /* + * BSD PAX global data structures and constants. + */ ++#include + + #define MAXBLK 64512 /* MAX blocksize supported (posix SPEC) */ + /* WARNING: increasing MAXBLK past 32256 */ +@@ -50,8 +51,8 @@ + /* Don't even think of changing this */ + #define DEVBLK 8192 /* default read blksize for devices */ + #define FILEBLK 10240 /* default read blksize for files */ +-#define PAXPATHLEN 3072 /* maximium path length for pax. MUST be */ +- /* longer than the system MAXPATHLEN */ ++#define PAXPATHLEN PATH_MAX /* maximium path length for pax. MUST be */ ++ /* longer than the system MAXPATHLEN */ + + /* + * Pax modes of operation diff --git a/pax-3.4-abs_100.patch b/pax-3.4-abs_100.patch new file mode 100644 index 0000000..53584f0 --- /dev/null +++ b/pax-3.4-abs_100.patch @@ -0,0 +1,17 @@ +--- pax-3.4/src/tar.c.abs100 2005-08-01 18:17:58.000000000 +0200 ++++ pax-3.4/src/tar.c 2007-06-20 10:44:54.000000000 +0200 +@@ -1181,6 +1181,14 @@ name_split (name, len) + * prefix we can find) + */ + start = name + len - TNMSZ; ++ /* if filename is absolute and exactly TNMSZ in length, ++ * before we invoke the strict interpretation of /str below, we ++ * check to see if there is another slash further along which ++ * would allow a safe split. if this search fails then we hit ++ * the end of the string and fail in a similar manner ++ */ ++ if((start == name) && (*start == '/')) ++ ++start; + while ((*start != '\0') && (*start != '/')) + ++start; + diff --git a/pax-3.4-fix_for_x32.patch b/pax-3.4-fix_for_x32.patch new file mode 100644 index 0000000..80878f3 --- /dev/null +++ b/pax-3.4-fix_for_x32.patch @@ -0,0 +1,185 @@ +Upstream-Status: Pending + +Author: H.J. Lu +Date: Tue Dec 6 10:34:53 2011 -0800 + + Fix pax-3.4 build for x32 + + off_t is 8byte for x32. We need to check both _FILE_OFFSET_BITS and + size of off_t to see if file offset is 64bit. This patch adds + AC_CHECK_SIZEOF(off_t) and checks SIZEOF_OFF_T == 8. + +Signed-Off-By: Nitin A Kamble 2011/12/06 + +Index: pax-3.4/configure.in +=================================================================== +--- pax-3.4.orig/configure.in ++++ pax-3.4/configure.in +@@ -33,4 +33,7 @@ dnl Checks for header files. + dnl Checks for typedefs, structures, and compiler characteristics. + AC_C_CONST + ++AC_CHECK_SIZEOF(off_t) ++AC_CHECK_SIZEOF(long) ++ + AC_OUTPUT([Makefile lib/Makefile src/Makefile]) +Index: pax-3.4/src/ar_io.c +=================================================================== +--- pax-3.4.orig/src/ar_io.c ++++ pax-3.4/src/ar_io.c +@@ -378,7 +378,8 @@ ar_close(void) + * could have written anything yet. + */ + if (frmt == NULL) { +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + (void)fprintf(listf, "%s: unknown format, %qu bytes skipped.\n", + #else + (void)fprintf(listf, "%s: unknown format, %lu bytes skipped.\n", +@@ -391,7 +392,8 @@ ar_close(void) + + if (strcmp(NM_CPIO, argv0) == 0) + (void)fprintf(listf, +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + "%qu blocks\n", + #else + "%lu blocks\n", +@@ -399,7 +401,8 @@ ar_close(void) + (rdcnt ? rdcnt : wrcnt) / 5120); + else if (strcmp(NM_TAR, argv0) != 0) + (void)fprintf(listf, +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + "%s: %s vol %d, %lu files, %qu bytes read, %qu bytes written.\n", + #else + "%s: %s vol %d, %lu files, %lu bytes read, %lu bytes written.\n", +Index: pax-3.4/src/cpio.c +=================================================================== +--- pax-3.4.orig/src/cpio.c ++++ pax-3.4/src/cpio.c +@@ -218,7 +218,8 @@ rd_ln_nm (ARCHD *arcn) + */ + if ((arcn->sb.st_size == 0) || + (arcn->sb.st_size >= (off_t) sizeof(arcn->ln_name))) { +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + paxwarn (1, "Cpio link name length is invalid: %qu", + arcn->sb.st_size); + #else +Index: pax-3.4/src/gen_subs.c +=================================================================== +--- pax-3.4.orig/src/gen_subs.c ++++ pax-3.4/src/gen_subs.c +@@ -133,7 +133,8 @@ ls_list (ARCHD *arcn, time_t now, FILE * + * print device id's for devices, or sizes for other nodes + */ + if ((arcn->type == PAX_CHR) || (arcn->type == PAX_BLK)) +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + (void) fprintf (fp, "%4lu,%4lu ", (unsigned long) MAJOR (sbp->st_rdev), + (unsigned long) MINOR (sbp->st_rdev)); + #else +@@ -142,7 +143,8 @@ ls_list (ARCHD *arcn, time_t now, FILE * + #endif + else + { +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + (void) fprintf (fp, "%9qu ", sbp->st_size); + #else + (void) fprintf (fp, "%9lu ", sbp->st_size); +@@ -334,7 +336,8 @@ ul_asc (u_long val, char *str, int len, + return (0); + } + +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + /* + * asc_uqd() + * convert hex/octal character string into a u_quad_t. We do not have to +Index: pax-3.4/src/options.c +=================================================================== +--- pax-3.4.orig/src/options.c ++++ pax-3.4/src/options.c +@@ -1545,7 +1545,8 @@ str_offt (char *val) + char *expr; + off_t num, t; + +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + num = strtoq (val, &expr, 0); + if ((num == LONG_LONG_MAX) || (num <= 0) || (expr == val)) + #else +Index: pax-3.4/src/tar.c +=================================================================== +--- pax-3.4.orig/src/tar.c ++++ pax-3.4/src/tar.c +@@ -58,7 +58,8 @@ + static unsigned long tar_chksm (char *, int); + static char *name_split (char *, int); + static int ul_oct (u_long, char *, int, int); +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + static int uqd_oct (u_quad_t, char *, int, int); + #endif + +@@ -196,7 +197,8 @@ ul_oct (u_long val, register char *str, + return (0); + } + +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + /* + * uqd_oct() + * convert an u_quad_t to an octal string. one of many oddball field +@@ -427,7 +429,8 @@ tar_rd (ARCHD *arcn, char *buf) + 0xfff); + arcn->sb.st_uid = (uid_t) asc_ul (hd->uid, sizeof (hd->uid), OCT); + arcn->sb.st_gid = (gid_t) asc_ul (hd->gid, sizeof (hd->gid), OCT); +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + arcn->sb.st_size = (off_t) asc_uqd (hd->size, sizeof (hd->size), OCT); + #else + arcn->sb.st_size = (off_t) asc_ul (hd->size, sizeof (hd->size), OCT); +@@ -659,7 +662,8 @@ tar_wr (register ARCHD * arcn) + * data follows this file, so set the pad + */ + hd->linkflag = AREGTYPE; +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + if (uqd_oct ((u_quad_t) arcn->sb.st_size, hd->size, + sizeof (hd->size), 1)) + #else +@@ -834,7 +838,8 @@ ustar_rd (ARCHD *arcn, char *buf) + */ + arcn->sb.st_mode = (mode_t) (asc_ul (hd->mode, sizeof (hd->mode), OCT) & + 0xfff); +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + arcn->sb.st_size = (off_t) asc_uqd (hd->size, sizeof (hd->size), OCT); + #else + arcn->sb.st_size = (off_t) asc_ul (hd->size, sizeof (hd->size), OCT); +@@ -1081,7 +1086,8 @@ ustar_wr (register ARCHD * arcn) + else + hd->typeflag = REGTYPE; + arcn->pad = TAR_PAD (arcn->sb.st_size); +-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 ++#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ ++ || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) + if (uqd_oct ((u_quad_t) arcn->sb.st_size, hd->size, + sizeof (hd->size), 3)) + { diff --git a/pax-3.4-gcc-4.6.0.patch b/pax-3.4-gcc-4.6.0.patch new file mode 100644 index 0000000..88779c3 --- /dev/null +++ b/pax-3.4-gcc-4.6.0.patch @@ -0,0 +1,25 @@ +Upstream-Status: Pending + +This patch fixes this compiler error with gcc 4.6.0 + +Nitin A Kamble 2011/05/08 + +| fts.c: In function 'pax_fts_set': +| fts.c:469:7: error: parameter 'sp' set but not used [-Werror=unused-but-set-parameter] +| cc1: all warnings being treated as errors +| +| make[2]: *** [fts.o] Error 1 + +Index: pax-3.4/lib/fts.c +=================================================================== +--- pax-3.4.orig/lib/fts.c ++++ pax-3.4/lib/fts.c +@@ -466,7 +466,7 @@ name: t = sp->fts_path + NAPPEND(p->fts + /* ARGSUSED */ + int + fts_set(sp, p, instr) +- FTS *sp; ++ FTS __attribute__((__unused__)) *sp; + FTSENT *p; + int instr; + { diff --git a/pax-3.4-gcc-6.1.patch b/pax-3.4-gcc-6.1.patch new file mode 100644 index 0000000..38294ef --- /dev/null +++ b/pax-3.4-gcc-6.1.patch @@ -0,0 +1,60 @@ +diff -crB pax-3.4/src/cpio.c pax-3.4-a/src/cpio.c +*** pax-3.4/src/cpio.c 2005-08-01 12:16:23.000000000 -0400 +--- pax-3.4-a/src/cpio.c 2017-03-11 04:58:22.162570602 -0300 +*************** +*** 36,42 **** + #include "config.h" + #endif + +! #include + #include + #include + #include +--- 36,42 ---- + #include "config.h" + #endif + +! #include + #include + #include + #include +diff -crB pax-3.4/src/gen_subs.c pax-3.4-a/src/gen_subs.c +*** pax-3.4/src/gen_subs.c 2005-08-01 12:15:42.000000000 -0400 +--- pax-3.4-a/src/gen_subs.c 2017-03-11 05:02:02.553239802 -0300 +*************** +*** 37,43 **** + #include "config.h" + #endif + +! #include + #include + #include + #include +--- 37,43 ---- + #include "config.h" + #endif + +! #include + #include + #include + #include +diff -crB pax-3.4/src/tar.c pax-3.4-a/src/tar.c +*** pax-3.4/src/tar.c 2005-08-01 12:17:58.000000000 -0400 +--- pax-3.4-a/src/tar.c 2017-03-11 05:04:54.493764070 -0300 +*************** +*** 37,43 **** + #include "config.h" + #endif + +! #include + #include + #include + #include +--- 37,43 ---- + #include "config.h" + #endif + +! #include + #include + #include + #include diff --git a/pax-3.4-gcc-8.patch b/pax-3.4-gcc-8.patch new file mode 100644 index 0000000..dd22189 --- /dev/null +++ b/pax-3.4-gcc-8.patch @@ -0,0 +1,59 @@ +diff -Naurp a/src/pax.c b/src/pax.c +--- a/src/pax.c 2005-07-29 07:46:31.000000000 +0000 ++++ b/src/pax.c 2019-01-01 02:59:31.257262876 +0000 +@@ -335,6 +335,10 @@ gen_init (void) + struct sigaction n_hand; + struct sigaction o_hand; + ++ // gcc8 fix: temporary pointer to avoid restricted argument aliases ++ struct sigaction *ptr_o_hand; ++ ptr_o_hand = &o_hand; ++ + /* + * Really needed to handle large archives. We can run out of memory for + * internal tables really fast when we have a whole lot of files... +@@ -403,27 +407,27 @@ gen_init (void) + + if ((sigaction (SIGHUP, &n_hand, &o_hand) < 0) && + (o_hand.sa_handler == SIG_IGN) && +- (sigaction (SIGHUP, &o_hand, &o_hand) < 0)) ++ (sigaction (SIGHUP, &o_hand, ptr_o_hand) < 0)) + goto out; + + if ((sigaction (SIGTERM, &n_hand, &o_hand) < 0) && + (o_hand.sa_handler == SIG_IGN) && +- (sigaction (SIGTERM, &o_hand, &o_hand) < 0)) ++ (sigaction (SIGTERM, &o_hand, ptr_o_hand) < 0)) + goto out; + + if ((sigaction (SIGINT, &n_hand, &o_hand) < 0) && + (o_hand.sa_handler == SIG_IGN) && +- (sigaction (SIGINT, &o_hand, &o_hand) < 0)) ++ (sigaction (SIGINT, &o_hand, ptr_o_hand) < 0)) + goto out; + + if ((sigaction (SIGQUIT, &n_hand, &o_hand) < 0) && + (o_hand.sa_handler == SIG_IGN) && +- (sigaction (SIGQUIT, &o_hand, &o_hand) < 0)) ++ (sigaction (SIGQUIT, &o_hand, ptr_o_hand) < 0)) + goto out; + + if ((sigaction (SIGXCPU, &n_hand, &o_hand) < 0) && + (o_hand.sa_handler == SIG_IGN) && +- (sigaction (SIGXCPU, &o_hand, &o_hand) < 0)) ++ (sigaction (SIGXCPU, &o_hand, ptr_o_hand) < 0)) + goto out; + + n_hand.sa_handler = SIG_IGN; +diff -Naurp a/src/tar.c b/src/tar.c +--- a/src/tar.c 2019-01-01 02:55:53.000000000 +0000 ++++ b/src/tar.c 2019-01-01 02:59:53.181069890 +0000 +@@ -1102,7 +1102,7 @@ ustar_wr (register ARCHD * arcn) + } + + strncpy (hd->magic, TMAGIC, TMAGLEN); +- strncpy (hd->version, TVERSION, TVERSLEN); ++ memcpy (hd->version, TVERSION, TVERSLEN); + + /* + * Set the remaining fields. We only write 12 bit of the mode field diff --git a/pax-3.4-options.c.patch b/pax-3.4-options.c.patch new file mode 100644 index 0000000..a625d29 --- /dev/null +++ b/pax-3.4-options.c.patch @@ -0,0 +1,27 @@ +rom eefac5786d01f1c3c4660cb218eb380eb19894a7 Mon Sep 17 00:00:00 2001 +From: Noel Kuntze +Date: Fri, 21 Jul 2017 16:39:50 +0200 +Subject: [PATCH] Fix implicit fallthrough in src/options.c + +--- + pax-3.4/src/options.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/pax-3.4/src/options.c b/pax-3.4/src/options.c +index e30a877..18c5266 100644 +--- a/pax-3.4/src/options.c ++++ b/pax-3.4/src/options.c +@@ -722,8 +722,10 @@ tar_options (int argc, char **argv) + pmtime = 0; + break; + case 'o': +- if (opt_add ("write_opt=nodir") < 0) ++ if (opt_add ("write_opt=nodir") < 0) { + tar_usage (); ++ } ++ break; + case 'O': + Oflag = 1; + break; +-- +2.13.3 diff --git a/pax-3.4-rdtruncate.patch b/pax-3.4-rdtruncate.patch new file mode 100644 index 0000000..abd0e42 --- /dev/null +++ b/pax-3.4-rdtruncate.patch @@ -0,0 +1,11 @@ +--- pax-3.4/src/tar.c.rdtruncate 2007-07-13 15:33:05.000000000 +0200 ++++ pax-3.4/src/tar.c 2007-07-13 15:34:23.000000000 +0200 +@@ -821,7 +821,7 @@ ustar_rd (ARCHD *arcn, char *buf) + if (gnu_hack_string) + { + arcn->nlen = cnt + strlcpy (dest, gnu_hack_string, +- MIN(TNMSZ+1, sizeof (arcn->name) - cnt)); ++ sizeof (arcn->name) - cnt); + free(gnu_hack_string); + gnu_hack_string = NULL; + } else diff --git a/pax-3.4-unuse_warn.patch b/pax-3.4-unuse_warn.patch new file mode 100644 index 0000000..fd731db --- /dev/null +++ b/pax-3.4-unuse_warn.patch @@ -0,0 +1,11 @@ +*** lib/fts.c Thu Feb 14 15:10:10 2013 +--- lib/fts.c Fri Jul 29 17:55:25 2005 +*************** fts_set(sp, p, instr) +*** 472,474 **** + { +! sp = NULL; /* stop compiler whinging */ + if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW && +--- 472,474 ---- + { +! (void)sp; /* stop compiler whinging */ + if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW && diff --git a/pax.spec b/pax.spec index 3d438c2..37cd783 100644 --- a/pax.spec +++ b/pax.spec @@ -1,6 +1,6 @@ Name: pax Version: 3.4 -Release: 3mamba +Release: 4mamba Summary: POSIX File System Archiver Group: Applications/Archiving Vendor: openmamba @@ -8,6 +8,19 @@ Distribution: openmamba Packager: Aleph0 URL: ftp://ftp.suse.com/pub/people/kukuk/pax/ Source: ftp://ftp.suse.com/pub/people/kukuk/pax/pax-%{version}.tar.bz2 +Patch0: pax-3.4-gcc-4.6.0.patch +Patch1: pax-3.4-gcc-8.patch +Patch2: pax-3.4-PATHMAX.patch +Patch3: pax-3.4-gcc-6.1.patch +Patch4: pax-3.4-options.c.patch +Patch5: pax-3.4-fix_for_x32.patch +Patch6: pax-3.4-unuse_warn.patch +Patch7: pax-3.4-abs_100.patch +Patch8: pax-3.4-rdtruncate.patch +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: ldconfig +## AUTOBUILDREQ-END License: BSD BuildRoot: %{_tmppath}/%{name}-%{version}-root @@ -15,12 +28,25 @@ BuildRoot: %{_tmppath}/%{name}-%{version}-root 'pax' is the POSIX standard archive tool. It supports the two most common forms of standard Unix archive (backup) files - CPIO and TAR. +%debug_package + %prep %setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p2 +%patch5 -p1 +%patch6 -p0 +%patch7 -p1 +%patch8 -p1 + +autoreconf -fi %build %configure \ - CFLAGS="-Wno-unused-but-set-parameter" + CFLAGS="%{optflags} -z muldefs" %make @@ -35,9 +61,13 @@ It supports the two most common forms of standard Unix archive (backup) files - %defattr(-,root,root) %{_bindir}/pax %{_mandir}/man1/pax.* -%doc AUTHORS COPYING ChangeLog NEWS README THANKS +%doc AUTHORS COPYING +#ChangeLog NEWS README THANKS %changelog +* Sun Sep 06 2020 Silvan Calarco 3.4-4mamba +- rebuilt with debug package and build requirements + * Sun Oct 20 2013 Automatic Build System 3.4-3mamba - automatic rebuild by autodist