Accepting request 44237 from Archiving
Copy from Archiving/unzip based on submit request 44237 from user coolo OBS-URL: https://build.opensuse.org/request/show/44237 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/unzip?expand=0&rev=15
This commit is contained in:
commit
0ac44cf257
@ -1,50 +0,0 @@
|
|||||||
--- inflate.c 2005-02-27 06:08:46.000000000 +0000
|
|
||||||
+++ inflate.c 2006-07-19 21:45:33.543595000 +0100
|
|
||||||
@@ -983,6 +983,7 @@
|
|
||||||
unsigned l; /* last length */
|
|
||||||
unsigned m; /* mask for bit lengths table */
|
|
||||||
unsigned n; /* number of lengths to get */
|
|
||||||
+ struct huft *tlp;
|
|
||||||
struct huft *tl; /* literal/length code table */
|
|
||||||
struct huft *td; /* distance code table */
|
|
||||||
unsigned bl; /* lookup bits for tl */
|
|
||||||
@@ -996,6 +997,8 @@
|
|
||||||
int retval = 0; /* error code returned: initialized to "no error" */
|
|
||||||
|
|
||||||
|
|
||||||
+ td = tlp = tl = (struct huft *)NULL;
|
|
||||||
+
|
|
||||||
/* make local bit buffer */
|
|
||||||
Trace((stderr, "\ndynamic block"));
|
|
||||||
b = G.bb;
|
|
||||||
@@ -1047,9 +1050,9 @@
|
|
||||||
while (i < n)
|
|
||||||
{
|
|
||||||
NEEDBITS(bl)
|
|
||||||
- j = (td = tl + ((unsigned)b & m))->b;
|
|
||||||
+ j = (tlp = tl + ((unsigned)b & m))->b;
|
|
||||||
DUMPBITS(j)
|
|
||||||
- j = td->v.n;
|
|
||||||
+ j = tlp->v.n;
|
|
||||||
if (j < 16) /* length of code in bits (0..15) */
|
|
||||||
ll[i++] = l = j; /* save last length in l */
|
|
||||||
else if (j == 16) /* repeat last length 3 to 6 times */
|
|
||||||
@@ -1141,6 +1144,7 @@
|
|
||||||
huft_free(td);
|
|
||||||
}
|
|
||||||
huft_free(tl);
|
|
||||||
+
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1149,8 +1153,8 @@
|
|
||||||
|
|
||||||
cleanup_and_exit:
|
|
||||||
/* free the decoding tables, return */
|
|
||||||
- huft_free(tl);
|
|
||||||
- huft_free(td);
|
|
||||||
+ if (tl) huft_free(tl);
|
|
||||||
+ if (td) huft_free(td);
|
|
||||||
return retval;
|
|
||||||
}
|
|
||||||
|
|
@ -1,17 +1,17 @@
|
|||||||
--- process.c
|
Index: process.c
|
||||||
+++ process.c
|
===================================================================
|
||||||
@@ -156,8 +156,8 @@
|
--- process.c.orig 2009-03-06 02:25:10.000000000 +0100
|
||||||
|
+++ process.c 2010-05-21 13:17:28.292590863 +0200
|
||||||
|
@@ -203,6 +203,8 @@ static ZCONST char Far Cent64EndSigSearc
|
||||||
|
#endif
|
||||||
static ZCONST char Far ZipfileCommTrunc1[] =
|
static ZCONST char Far ZipfileCommTrunc1[] =
|
||||||
"\ncaution: zipfile comment truncated\n";
|
"\ncaution: zipfile comment truncated\n";
|
||||||
|
|
||||||
-
|
|
||||||
-
|
|
||||||
+static ZCONST char Far FileNameTooLong[] =
|
+static ZCONST char Far FileNameTooLong[] =
|
||||||
+ "%s: error: %s (truncated): %s\n";
|
+ "%s: error: %s (truncated): %s\n";
|
||||||
|
#ifndef NO_ZIPINFO
|
||||||
/*******************************/
|
static ZCONST char Far NoZipfileComment[] =
|
||||||
/* Function process_zipfiles() */
|
"There is no zipfile comment.\n";
|
||||||
@@ -314,6 +314,17 @@
|
@@ -390,6 +392,17 @@ int process_zipfiles(__G) /* return P
|
||||||
|
|
||||||
lastzipfn = G.zipfn;
|
lastzipfn = G.zipfn;
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ Description: Provides header file
|
|||||||
Index: dsrecode.c
|
Index: dsrecode.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
+++ dsrecode.c 2010-05-10 18:00:17.972091018 +0200
|
+++ dsrecode.c 2010-05-21 14:25:19.192590879 +0200
|
||||||
@@ -0,0 +1,137 @@
|
@@ -0,0 +1,137 @@
|
||||||
+#include <librcc.h>
|
+#include <librcc.h>
|
||||||
+
|
+
|
||||||
@ -145,9 +145,9 @@ Index: dsrecode.c
|
|||||||
+}
|
+}
|
||||||
Index: fileio.c
|
Index: fileio.c
|
||||||
===================================================================
|
===================================================================
|
||||||
--- fileio.c.orig 2010-05-10 18:00:17.912090858 +0200
|
--- fileio.c.orig 2010-05-21 14:25:19.172590765 +0200
|
||||||
+++ fileio.c 2010-05-10 18:00:17.976090793 +0200
|
+++ fileio.c 2010-05-21 14:25:19.192590879 +0200
|
||||||
@@ -78,7 +78,7 @@
|
@@ -82,7 +82,7 @@
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#include "ebcdic.h" /* definition/initialization of ebcdic[] */
|
#include "ebcdic.h" /* definition/initialization of ebcdic[] */
|
||||||
@ -158,9 +158,9 @@ Index: fileio.c
|
|||||||
Note: Under Windows, the maximum size of the buffer that can be used
|
Note: Under Windows, the maximum size of the buffer that can be used
|
||||||
Index: unzpriv.h
|
Index: unzpriv.h
|
||||||
===================================================================
|
===================================================================
|
||||||
--- unzpriv.h.orig 2010-05-10 18:00:17.848090721 +0200
|
--- unzpriv.h.orig 2010-05-21 14:24:55.632590821 +0200
|
||||||
+++ unzpriv.h 2010-05-10 18:00:18.016090830 +0200
|
+++ unzpriv.h 2010-05-21 14:25:19.220590722 +0200
|
||||||
@@ -2582,10 +2582,11 @@ char *GetLoadPath OF((__GPRO));
|
@@ -3025,10 +3025,11 @@ char *GetLoadPath OF((__GPRO));
|
||||||
!(((islochdr) || (isuxatt)) && \
|
!(((islochdr) || (isuxatt)) && \
|
||||||
((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
|
((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
|
||||||
(hostnum) == FS_HPFS_ || \
|
(hostnum) == FS_HPFS_ || \
|
||||||
|
@ -1,36 +0,0 @@
|
|||||||
--- unix/unix.c
|
|
||||||
+++ unix/unix.c
|
|
||||||
@@ -1042,6 +1042,16 @@
|
|
||||||
ush z_uidgid[2];
|
|
||||||
int have_uidgid_flg;
|
|
||||||
|
|
||||||
+/*---------------------------------------------------------------------------
|
|
||||||
+ Change the file permissions from default ones to those stored in the
|
|
||||||
+ zipfile. This has to done *before* closing the file.
|
|
||||||
+ ---------------------------------------------------------------------------*/
|
|
||||||
+
|
|
||||||
+#ifndef NO_CHMOD
|
|
||||||
+ if (chmod(G.filename, filtattr(__G__ G.pInfo->file_attr)))
|
|
||||||
+ perror("chmod (file attributes) error");
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
fclose(G.outfile);
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------
|
|
||||||
@@ -1151,16 +1161,6 @@
|
|
||||||
#endif /* ?AOS_VS */
|
|
||||||
}
|
|
||||||
|
|
||||||
-/*---------------------------------------------------------------------------
|
|
||||||
- Change the file permissions from default ones to those stored in the
|
|
||||||
- zipfile.
|
|
||||||
- ---------------------------------------------------------------------------*/
|
|
||||||
-
|
|
||||||
-#ifndef NO_CHMOD
|
|
||||||
- if (chmod(G.filename, filtattr(__G__ G.pInfo->file_attr)))
|
|
||||||
- perror("chmod (file attributes) error");
|
|
||||||
-#endif
|
|
||||||
-
|
|
||||||
} /* end function close_outfile() */
|
|
||||||
|
|
||||||
#endif /* !MTS */
|
|
@ -1,6 +1,8 @@
|
|||||||
--- unzip-5.52/ebcdic.h
|
Index: ebcdic.h
|
||||||
+++ unzip-5.52/ebcdic.h
|
===================================================================
|
||||||
@@ -254,6 +254,25 @@
|
--- ebcdic.h.orig 2008-03-21 13:04:22.000000000 +0100
|
||||||
|
+++ ebcdic.h 2010-05-21 14:07:51.000091055 +0200
|
||||||
|
@@ -254,6 +254,25 @@ ZCONST uch Far iso2oem_850[] = {
|
||||||
0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* F0 - F7 */
|
0xD0, 0xA4, 0x95, 0xA2, 0x93, 0xE4, 0x94, 0xF6, /* F0 - F7 */
|
||||||
0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98 /* F8 - FF */
|
0x9B, 0x97, 0xA3, 0x96, 0x81, 0xEC, 0xE7, 0x98 /* F8 - FF */
|
||||||
};
|
};
|
||||||
@ -26,7 +28,7 @@
|
|||||||
#endif /* IZ_ISO2OEM_ARRAY */
|
#endif /* IZ_ISO2OEM_ARRAY */
|
||||||
|
|
||||||
#ifdef IZ_OEM2ISO_ARRAY
|
#ifdef IZ_OEM2ISO_ARRAY
|
||||||
@@ -275,8 +294,28 @@
|
@@ -275,6 +294,25 @@ ZCONST uch Far oem2iso_850[] = {
|
||||||
0xAD, 0xB1, 0x3D, 0xBE, 0xB6, 0xA7, 0xF7, 0xB8, /* F0 - F7 */
|
0xAD, 0xB1, 0x3D, 0xBE, 0xB6, 0xA7, 0xF7, 0xB8, /* F0 - F7 */
|
||||||
0xB0, 0xA8, 0xB7, 0xB9, 0xB3, 0xB2, 0xA6, 0xA0 /* F8 - FF */
|
0xB0, 0xA8, 0xB7, 0xB9, 0xB3, 0xB2, 0xA6, 0xA0 /* F8 - FF */
|
||||||
};
|
};
|
||||||
@ -51,22 +53,21 @@
|
|||||||
+};
|
+};
|
||||||
#endif /* IZ_OEM2ISO_ARRAY */
|
#endif /* IZ_OEM2ISO_ARRAY */
|
||||||
|
|
||||||
+
|
/* The following pointers to the OEM<-->ISO translation tables are used
|
||||||
#if defined(THEOS) || defined(THEOS_SUPPORT)
|
Index: man/unzip.1
|
||||||
# include "theos/charconv.h"
|
===================================================================
|
||||||
#endif
|
--- man/unzip.1.orig 2009-04-20 02:33:10.000000000 +0200
|
||||||
--- unzip-5.52/man/unzip.1
|
+++ man/unzip.1 2010-05-21 14:23:25.824590928 +0200
|
||||||
+++ unzip-5.52/man/unzip.1
|
|
||||||
@@ -25,7 +25,7 @@
|
@@ -25,7 +25,7 @@
|
||||||
unzip \- list, test and extract compressed files in a ZIP archive
|
unzip \- list, test and extract compressed files in a ZIP archive
|
||||||
.PD
|
.PD
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
-\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCKLMVWX$/:\fP]]
|
-\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCDKLMUVWX$/:^\fP]]
|
||||||
+\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCKLMOVX$/:\fP]]
|
+\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCDKLMOUVWX$/:^\fP]]
|
||||||
\fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.]
|
\fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.]
|
||||||
[\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] [\fB\-d\fP\ \fIexdir\fP]
|
[\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] [\fB\-d\fP\ \fIexdir\fP]
|
||||||
.PD
|
.PD
|
||||||
@@ -342,6 +342,9 @@
|
@@ -386,6 +386,9 @@ of \fIzip\fP(1L), which stores filenotes
|
||||||
overwrite existing files without prompting. This is a dangerous option, so
|
overwrite existing files without prompting. This is a dangerous option, so
|
||||||
use it with care. (It is often used with \fB\-f\fP, however, and is the only
|
use it with care. (It is often used with \fB\-f\fP, however, and is the only
|
||||||
way to overwrite directory EAs under OS/2.)
|
way to overwrite directory EAs under OS/2.)
|
||||||
@ -76,9 +77,11 @@
|
|||||||
.IP \fB\-P\fP\ \fIpassword\fP
|
.IP \fB\-P\fP\ \fIpassword\fP
|
||||||
use \fIpassword\fP to decrypt encrypted zipfile entries (if any). \fBTHIS IS
|
use \fIpassword\fP to decrypt encrypted zipfile entries (if any). \fBTHIS IS
|
||||||
INSECURE!\fP Many multi-user operating systems provide ways for any user to
|
INSECURE!\fP Many multi-user operating systems provide ways for any user to
|
||||||
--- unzip-5.52/unzip.c
|
Index: unzip.c
|
||||||
+++ unzip-5.52/unzip.c
|
===================================================================
|
||||||
@@ -1327,6 +1327,12 @@
|
--- unzip.c.orig 2009-04-16 20:26:52.000000000 +0200
|
||||||
|
+++ unzip.c 2010-05-21 14:23:25.824590928 +0200
|
||||||
|
@@ -1592,6 +1592,12 @@ int uz_opts(__G__ pargc, pargv)
|
||||||
} else
|
} else
|
||||||
++uO.overwrite_all;
|
++uO.overwrite_all;
|
||||||
break;
|
break;
|
||||||
@ -91,9 +94,11 @@
|
|||||||
case ('p'): /* pipes: extract to stdout, no messages */
|
case ('p'): /* pipes: extract to stdout, no messages */
|
||||||
if (negative) {
|
if (negative) {
|
||||||
uO.cflag = FALSE;
|
uO.cflag = FALSE;
|
||||||
--- unzip-5.52/unzip.h
|
Index: unzip.h
|
||||||
+++ unzip-5.52/unzip.h
|
===================================================================
|
||||||
@@ -462,6 +462,7 @@
|
--- unzip.h.orig 2009-02-15 19:12:54.000000000 +0100
|
||||||
|
+++ unzip.h 2010-05-21 14:23:25.824590928 +0200
|
||||||
|
@@ -502,6 +502,7 @@ typedef struct _UzpOpts {
|
||||||
int K_flag; /* -K: keep setuid/setgid/tacky permissions */
|
int K_flag; /* -K: keep setuid/setgid/tacky permissions */
|
||||||
#endif
|
#endif
|
||||||
int lflag; /* -12slmv: listing format (zipinfo) */
|
int lflag; /* -12slmv: listing format (zipinfo) */
|
||||||
@ -101,15 +106,17 @@
|
|||||||
int L_flag; /* -L: convert filenames from some OSes to lowercase */
|
int L_flag; /* -L: convert filenames from some OSes to lowercase */
|
||||||
int overwrite_none; /* -n: never overwrite files (no prompting) */
|
int overwrite_none; /* -n: never overwrite files (no prompting) */
|
||||||
#ifdef AMIGA
|
#ifdef AMIGA
|
||||||
--- unzip-5.52/unzpriv.h
|
Index: unzpriv.h
|
||||||
+++ unzip-5.52/unzpriv.h
|
===================================================================
|
||||||
@@ -2456,8 +2456,15 @@
|
--- unzpriv.h.orig 2009-04-20 01:59:26.000000000 +0200
|
||||||
|
+++ unzpriv.h 2010-05-21 14:24:02.641090783 +0200
|
||||||
|
@@ -2899,8 +2899,15 @@ char *GetLoadPath OF((__GPRO));
|
||||||
# define IZ_ISO2OEM_ARRAY
|
# define IZ_ISO2OEM_ARRAY
|
||||||
# endif
|
# endif
|
||||||
# define _ISO_INTERN(str1) {register uch *p;\
|
# define _ISO_INTERN(str1) if (iso2oem) {register uch *p;\
|
||||||
- for (p=(uch *)(str1); *p; p++)\
|
- for (p=(uch *)(str1); *p; p++)\
|
||||||
- *p = native((*p & 0x80) ? iso2oem[*p & 0x7f] : *p);}
|
- *p = native((*p & 0x80) ? iso2oem[*p & 0x7f] : *p);}
|
||||||
+ if (uO.iso8859_2 == FASLE) { \
|
+ if (uO.iso8859_2 == FALSE) { \
|
||||||
+ for (p=(uch *)(str1); *p; p++) \
|
+ for (p=(uch *)(str1); *p; p++) \
|
||||||
+ *p = native((*p & 0x80) ? iso2oem[*p & 0x7f] : *p); \
|
+ *p = native((*p & 0x80) ? iso2oem[*p & 0x7f] : *p); \
|
||||||
+ } \
|
+ } \
|
||||||
@ -121,10 +128,10 @@
|
|||||||
# else
|
# else
|
||||||
# define _ISO_INTERN(str1) A_TO_N(str1)
|
# define _ISO_INTERN(str1) A_TO_N(str1)
|
||||||
# endif
|
# endif
|
||||||
@@ -2471,8 +2478,15 @@
|
@@ -2914,8 +2921,15 @@ char *GetLoadPath OF((__GPRO));
|
||||||
# define IZ_OEM2ISO_ARRAY
|
# define IZ_OEM2ISO_ARRAY
|
||||||
# endif
|
# endif
|
||||||
# define _OEM_INTERN(str1) {register uch *p;\
|
# define _OEM_INTERN(str1) if (oem2iso) {register uch *p;\
|
||||||
- for (p=(uch *)(str1); *p; p++)\
|
- for (p=(uch *)(str1); *p; p++)\
|
||||||
- *p = native((*p & 0x80) ? oem2iso[*p & 0x7f] : *p);}
|
- *p = native((*p & 0x80) ? oem2iso[*p & 0x7f] : *p);}
|
||||||
+ if (uO.iso8859_2 == FALSE) { \
|
+ if (uO.iso8859_2 == FALSE) { \
|
||||||
@ -139,37 +146,36 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -2497,7 +2511,9 @@
|
@@ -2942,6 +2956,7 @@ char *GetLoadPath OF((__GPRO));
|
||||||
#if (!defined(INTERN_TO_ISO) && !defined(ASCII2ISO))
|
|
||||||
# ifdef CRTL_CP_IS_OEM
|
|
||||||
/* know: "ASCII" is "OEM" */
|
/* know: "ASCII" is "OEM" */
|
||||||
-# define ASCII2ISO(c) (((c) & 0x80) ? oem2iso[(c) & 0x7f] : (c))
|
# define ASCII2ISO(c) \
|
||||||
+# define ASCII2ISO(c) (((c) & 0x80) ? \
|
((((c) & 0x80) && oem2iso) ? oem2iso[(c) & 0x7f] : (c))
|
||||||
+ ((uO.iso8859_2 == FALSE) ? oem2iso[(c) & 0x7f] : oem2iso_2[(c) & 0x7f]) : \
|
+ (( ((c) & 0x80) ? ((uO.iso8859_2 == FALSE) ? (oem2iso ? oem2iso[(c) & 0x7f] : (c)) : oem2iso_2[(c) & 0x7f]) : (c))
|
||||||
+ (c))
|
|
||||||
# if (defined(NEED_STR2ISO) && !defined(CRYP_USES_OEM2ISO))
|
# if (defined(NEED_STR2ISO) && !defined(CRYP_USES_OEM2ISO))
|
||||||
# define CRYP_USES_OEM2ISO
|
# define CRYP_USES_OEM2ISO
|
||||||
# endif
|
# endif
|
||||||
@@ -2513,7 +2529,9 @@
|
@@ -2957,8 +2972,9 @@ char *GetLoadPath OF((__GPRO));
|
||||||
# define ASCII2OEM(c) (c)
|
# define ASCII2OEM(c) (c)
|
||||||
# else
|
# else
|
||||||
/* assume: "ASCII" is "ISO-ANSI" */
|
/* assume: "ASCII" is "ISO-ANSI" */
|
||||||
-# define ASCII2OEM(c) (((c) & 0x80) ? iso2oem[(c) & 0x7f] : (c))
|
-# define ASCII2OEM(c) \
|
||||||
|
- ((((c) & 0x80) && iso2oem) ? iso2oem[(c) & 0x7f] : (c))
|
||||||
+# define ASCII2OEM(c) (((c) & 0x80) ? \
|
+# define ASCII2OEM(c) (((c) & 0x80) ? \
|
||||||
+ ((uO.iso8859_2 == FALSE) ? iso2oem[(c) & 0x7f] : iso2oem_2[(c) & 0x7f]) : \
|
+ ((uO.iso8859_2 == FALSE) ? (iso2oem ? iso2oem[(c) & 0x7f] : (c)) : iso2oem_2[(c) & 0x7f]) : \
|
||||||
+ (c))
|
+ (c))
|
||||||
# if (defined(NEED_STR2OEM) && !defined(CRYP_USES_ISO2OEM))
|
# if (defined(NEED_STR2OEM) && !defined(CRYP_USES_ISO2OEM))
|
||||||
# define CRYP_USES_ISO2OEM
|
# define CRYP_USES_ISO2OEM
|
||||||
# endif
|
# endif
|
||||||
@@ -2584,9 +2602,11 @@
|
@@ -3029,10 +3045,12 @@ char *GetLoadPath OF((__GPRO));
|
||||||
#endif
|
#endif
|
||||||
#ifdef IZ_ISO2OEM_ARRAY
|
#ifdef IZ_ISO2OEM_ARRAY
|
||||||
extern ZCONST uch Far iso2oem[];
|
extern ZCONST uch Far *iso2oem;
|
||||||
+ extern ZCONST uch Far iso2oem_2[];
|
+ extern ZCONST uch Far iso2oem_2[];
|
||||||
|
extern ZCONST uch Far iso2oem_850[];
|
||||||
#endif
|
#endif
|
||||||
#ifdef IZ_OEM2ISO_ARRAY
|
#ifdef IZ_OEM2ISO_ARRAY
|
||||||
extern ZCONST uch Far oem2iso[];
|
extern ZCONST uch Far *oem2iso;
|
||||||
+ extern ZCONST uch Far oem2iso_2[];
|
+ extern ZCONST uch Far oem2iso_2[];
|
||||||
|
extern ZCONST uch Far oem2iso_850[];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern ZCONST char Far VersionDate[];
|
|
||||||
|
@ -1,267 +0,0 @@
|
|||||||
--- extract.c 2005-02-26 05:47:30.000000000 +0100
|
|
||||||
+++ extract.c 2007-12-03 13:49:01.000000000 +0100
|
|
||||||
@@ -308,7 +308,7 @@ int extract_or_test_files(__G) /* ret
|
|
||||||
int reached_end, no_endsig_found;
|
|
||||||
int error, error_in_archive=PK_COOL;
|
|
||||||
int *fn_matched=NULL, *xn_matched=NULL;
|
|
||||||
- unsigned members_processed;
|
|
||||||
+ Z_OFF_T members_processed;
|
|
||||||
ulg num_skipped=0L, num_bad_pwd=0L;
|
|
||||||
Z_OFF_T old_extra_bytes = 0L;
|
|
||||||
#ifdef SET_DIR_ATTRIB
|
|
||||||
@@ -541,7 +541,7 @@ int extract_or_test_files(__G) /* ret
|
|
||||||
G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd);
|
|
||||||
#else /* !USE_STRM_INPUT */
|
|
||||||
G.cur_zipfile_bufstart =
|
|
||||||
- lseek(G.zipfd, cd_bufstart, SEEK_SET);
|
|
||||||
+ lseek64(G.zipfd,(Z_OFF_T)cd_bufstart, SEEK_SET);
|
|
||||||
#endif /* ?USE_STRM_INPUT */
|
|
||||||
read(G.zipfd, (char *)G.inbuf, INBUFSIZ); /* been here before... */
|
|
||||||
G.inptr = cd_inptr;
|
|
||||||
@@ -942,7 +942,8 @@ static int extract_or_test_entrylist(__G
|
|
||||||
Trace((stderr,
|
|
||||||
"debug: bufstart = %ld, cur_zipfile_bufstart = %ld\n",
|
|
||||||
(long)bufstart, (long)G.cur_zipfile_bufstart));
|
|
||||||
- if (request < 0) {
|
|
||||||
+ if ((request < 0) || (request > MAX_ZIP_SIZE)) { /* >2^32-8193 */
|
|
||||||
+ printf("retry - request = 0x%lu\n", (ulg)request);
|
|
||||||
Info(slide, 0x401, ((char *)slide, LoadFarStringSmall(SeekMsg),
|
|
||||||
G.zipfn, LoadFarString(ReportMsg)));
|
|
||||||
error_in_archive = PK_ERR;
|
|
||||||
@@ -982,7 +983,7 @@ static int extract_or_test_entrylist(__G
|
|
||||||
G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd);
|
|
||||||
#else /* !USE_STRM_INPUT */
|
|
||||||
G.cur_zipfile_bufstart =
|
|
||||||
- lseek(G.zipfd, bufstart, SEEK_SET);
|
|
||||||
+ lseek64(G.zipfd, bufstart, SEEK_SET);
|
|
||||||
#endif /* ?USE_STRM_INPUT */
|
|
||||||
if ((G.incnt = read(G.zipfd, (char *)G.inbuf, INBUFSIZ)) <= 0)
|
|
||||||
{
|
|
||||||
--- fileio.c 2005-02-27 03:10:12.000000000 +0100
|
|
||||||
+++ fileio.c 2007-12-03 13:49:01.000000000 +0100
|
|
||||||
@@ -113,6 +113,9 @@ static int disk_error OF((__GPRO));
|
|
||||||
/* Strings used in fileio.c */
|
|
||||||
/****************************/
|
|
||||||
|
|
||||||
+static ZCONST char Far ZipFileTooBig[] =
|
|
||||||
+ "error: Zip file too big (greater than %lu bytes)\n";
|
|
||||||
+
|
|
||||||
static ZCONST char Far CannotOpenZipfile[] =
|
|
||||||
"error: cannot open zipfile [ %s ]\n %s\n";
|
|
||||||
|
|
||||||
@@ -183,6 +186,7 @@ static ZCONST char Far ExtraFieldTooLong
|
|
||||||
int open_input_file(__G) /* return 1 if open failed */
|
|
||||||
__GDEF
|
|
||||||
{
|
|
||||||
+ struct stat64 sb;
|
|
||||||
/*
|
|
||||||
* open the zipfile for reading and in BINARY mode to prevent cr/lf
|
|
||||||
* translation, which would corrupt the bitstreams
|
|
||||||
@@ -201,9 +205,9 @@ int open_input_file(__G) /* return 1
|
|
||||||
G.zipfd = fopen(G.zipfn, FOPR);
|
|
||||||
#else /* !USE_STRM_INPUT */
|
|
||||||
# ifdef O_BINARY
|
|
||||||
- G.zipfd = open(G.zipfn, O_RDONLY | O_BINARY);
|
|
||||||
+ G.zipfd = open(G.zipfn, O_RDONLY | O_BINARY | O_LARGEFILE);
|
|
||||||
# else
|
|
||||||
- G.zipfd = open(G.zipfn, O_RDONLY);
|
|
||||||
+ G.zipfd = open(G.zipfn, O_RDONLY | O_LARGEFILE);
|
|
||||||
# endif
|
|
||||||
#endif /* ?USE_STRM_INPUT */
|
|
||||||
#endif /* ?CMS_MVS */
|
|
||||||
@@ -221,6 +225,12 @@ int open_input_file(__G) /* return 1
|
|
||||||
G.zipfn, strerror(errno)));
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
+ fstat64(G.zipfd, &sb);
|
|
||||||
+ if (sb.st_size > MAX_ZIP_SIZE) {
|
|
||||||
+ Info(slide, 0x401, ((char *)slide,
|
|
||||||
+ LoadFarString(ZipFileTooBig),
|
|
||||||
+ ((ulg)MAX_ZIP_SIZE)));
|
|
||||||
+ }
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
} /* end function open_input_file() */
|
|
||||||
@@ -238,6 +248,7 @@ int open_input_file(__G) /* return 1
|
|
||||||
int open_outfile(__G) /* return 1 if fail */
|
|
||||||
__GDEF
|
|
||||||
{
|
|
||||||
+ int fd;
|
|
||||||
#ifdef DLL
|
|
||||||
if (G.redirect_data)
|
|
||||||
return (redirect_outfile(__G) == FALSE);
|
|
||||||
@@ -259,7 +270,7 @@ int open_outfile(__G) /* return
|
|
||||||
}
|
|
||||||
#endif /* BORLAND_STAT_BUG */
|
|
||||||
#ifdef SYMLINKS
|
|
||||||
- if (SSTAT(G.filename, &G.statbuf) == 0 || lstat(G.filename,&G.statbuf) == 0)
|
|
||||||
+ if (SSTAT(G.filename, &G.statbuf) == 0 || lstat64(G.filename,&G.statbuf) == 0)
|
|
||||||
#else
|
|
||||||
if (SSTAT(G.filename, &G.statbuf) == 0)
|
|
||||||
#endif /* ?SYMLINKS */
|
|
||||||
@@ -413,7 +424,9 @@ int open_outfile(__G) /* return
|
|
||||||
#endif /* NOVELL_BUG_FAILSAFE */
|
|
||||||
Trace((stderr, "open_outfile: doing fopen(%s) for writing\n",
|
|
||||||
FnFilter1(G.filename)));
|
|
||||||
- if ((G.outfile = fopen(G.filename, FOPW)) == (FILE *)NULL) {
|
|
||||||
+
|
|
||||||
+ fd = open(G.filename, O_WRONLY | O_LARGEFILE | O_CREAT);
|
|
||||||
+ if ((G.outfile = fdopen(fd, FOPW)) == (FILE *)NULL) {
|
|
||||||
Info(slide, 0x401, ((char *)slide, LoadFarString(CannotCreateFile),
|
|
||||||
FnFilter1(G.filename)));
|
|
||||||
return 1;
|
|
||||||
@@ -682,7 +695,7 @@ int seek_zipf(__G__ abs_offset)
|
|
||||||
Z_OFF_T inbuf_offset = request % INBUFSIZ;
|
|
||||||
Z_OFF_T bufstart = request - inbuf_offset;
|
|
||||||
|
|
||||||
- if (request < 0) {
|
|
||||||
+ if (request < 0) {
|
|
||||||
Info(slide, 1, ((char *)slide, LoadFarStringSmall(SeekMsg),
|
|
||||||
G.zipfn, LoadFarString(ReportMsg)));
|
|
||||||
return(PK_BADERR);
|
|
||||||
@@ -694,7 +707,7 @@ int seek_zipf(__G__ abs_offset)
|
|
||||||
fseek(G.zipfd, bufstart, SEEK_SET);
|
|
||||||
G.cur_zipfile_bufstart = ftell(G.zipfd);
|
|
||||||
#else /* !USE_STRM_INPUT */
|
|
||||||
- G.cur_zipfile_bufstart = lseek(G.zipfd, bufstart, SEEK_SET);
|
|
||||||
+ G.cur_zipfile_bufstart = lseek64(G.zipfd, bufstart, SEEK_SET);
|
|
||||||
#endif /* ?USE_STRM_INPUT */
|
|
||||||
Trace((stderr,
|
|
||||||
" request = %ld, (abs+extra) = %ld, inbuf_offset = %ld\n",
|
|
||||||
@@ -1850,7 +1863,7 @@ int check_for_newer(__G__ filename) /*
|
|
||||||
Trace((stderr, "check_for_newer: doing lstat(%s)\n",
|
|
||||||
FnFilter1(filename)));
|
|
||||||
/* GRR OPTION: could instead do this test ONLY if G.symlnk is true */
|
|
||||||
- if (lstat(filename, &G.statbuf) == 0) {
|
|
||||||
+ if (lstat64(filename, &G.statbuf) == 0) {
|
|
||||||
Trace((stderr,
|
|
||||||
"check_for_newer: lstat(%s) returns 0: symlink does exist\n",
|
|
||||||
FnFilter1(filename)));
|
|
||||||
@@ -1867,7 +1880,7 @@ int check_for_newer(__G__ filename) /*
|
|
||||||
|
|
||||||
#ifdef SYMLINKS
|
|
||||||
/* GRR OPTION: could instead do this test ONLY if G.symlnk is true */
|
|
||||||
- if (lstat(filename, &G.statbuf) == 0 && S_ISLNK(G.statbuf.st_mode)) {
|
|
||||||
+ if (lstat64(filename, &G.statbuf) == 0 && S_ISLNK(G.statbuf.st_mode)) {
|
|
||||||
Trace((stderr, "check_for_newer: %s is a symbolic link\n",
|
|
||||||
FnFilter1(filename)));
|
|
||||||
if (QCOND2 && !IS_OVERWRT_ALL)
|
|
||||||
--- globals.h 2004-11-22 01:42:00.000000000 +0100
|
|
||||||
+++ globals.h 2007-12-03 13:49:01.000000000 +0100
|
|
||||||
@@ -256,7 +256,12 @@ typedef struct Globals {
|
|
||||||
local_file_hdr lrec; /* used in unzip.c, extract.c */
|
|
||||||
cdir_file_hdr crec; /* used in unzip.c, extract.c, misc.c */
|
|
||||||
ecdir_rec ecrec; /* used in unzip.c, extract.c */
|
|
||||||
- struct stat statbuf; /* used by main, mapname, check_for_newer */
|
|
||||||
+#ifdef _LARGEFILE64_SOURCE
|
|
||||||
+ struct stat64 statbuf; /* used by main, mapname, check_for_newer */
|
|
||||||
+#else
|
|
||||||
+ struct stat statbuf; /* used by main, mapname, check_for_newer */
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
|
|
||||||
int mem_mode;
|
|
||||||
uch *outbufptr; /* extract.c static */
|
|
||||||
--- list.c 2005-01-27 02:02:02.000000000 +0100
|
|
||||||
+++ list.c 2007-12-03 13:55:10.000000000 +0100
|
|
||||||
@@ -62,12 +62,12 @@
|
|
||||||
"%8lu %-7s%8lu %4s %02u%c%02u%c%02u %02u:%02u %08lx %c";
|
|
||||||
static ZCONST char Far LongFileTrailer[] =
|
|
||||||
"-------- ------- --- \
|
|
||||||
- -------\n%8lu %8lu %4s %lu file%s\n";
|
|
||||||
+ -------\n%8ju %8ju %4s %lu file%s\n";
|
|
||||||
#ifdef OS2_EAS
|
|
||||||
static ZCONST char Far ShortHdrStats[] =
|
|
||||||
"%9lu %6lu %6lu %02u%c%02u%c%02u %02u:%02u %c";
|
|
||||||
static ZCONST char Far ShortFileTrailer[] = " -------- ----- ----- \
|
|
||||||
- -------\n%9lu %6lu %6lu %lu file%s\n";
|
|
||||||
+ -------\n%9ju %6lu %6lu %lu file%s\n";
|
|
||||||
static ZCONST char Far OS2ExtAttrTrailer[] =
|
|
||||||
"%lu file%s %lu bytes of OS/2 extended attributes attached.\n";
|
|
||||||
static ZCONST char Far OS2ACLTrailer[] =
|
|
||||||
@@ -76,7 +76,7 @@
|
|
||||||
static ZCONST char Far ShortHdrStats[] =
|
|
||||||
"%9lu %02u%c%02u%c%02u %02u:%02u %c";
|
|
||||||
static ZCONST char Far ShortFileTrailer[] = " -------- \
|
|
||||||
- -------\n%9lu %lu file%s\n";
|
|
||||||
+ -------\n%9ju %lu file%s\n";
|
|
||||||
#endif /* ?OS2_EAS */
|
|
||||||
#endif /* !WINDLL */
|
|
||||||
|
|
||||||
@@ -105,7 +105,8 @@ int list_files(__G) /* return PK-type
|
|
||||||
struct tm *t;
|
|
||||||
#endif
|
|
||||||
unsigned yr, mo, dy, hh, mm;
|
|
||||||
- ulg csiz, tot_csize=0L, tot_ucsize=0L;
|
|
||||||
+ ulg csiz;
|
|
||||||
+ unsigned long long tot_csize=0, tot_ucsize=0;
|
|
||||||
#ifdef OS2_EAS
|
|
||||||
ulg ea_size, tot_easize=0L, tot_eafiles=0L;
|
|
||||||
ulg acl_size, tot_aclsize=0L, tot_aclfiles=0L;
|
|
||||||
--- process.c 2007-12-03 13:44:30.000000000 +0100
|
|
||||||
+++ process.c 2007-12-03 13:49:01.000000000 +0100
|
|
||||||
@@ -934,8 +934,8 @@ static int find_ecrec(__G__ searchlen)
|
|
||||||
Treat case of short zipfile separately.
|
|
||||||
---------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
- if (G.ziplen <= INBUFSIZ) {
|
|
||||||
- lseek(G.zipfd, 0L, SEEK_SET);
|
|
||||||
+ if ((unsigned long)G.ziplen <= (unsigned long)INBUFSIZ) {
|
|
||||||
+ lseek64(G.zipfd, 0L, SEEK_SET);
|
|
||||||
if ((G.incnt = read(G.zipfd,(char *)G.inbuf,(unsigned int)G.ziplen))
|
|
||||||
== (int)G.ziplen)
|
|
||||||
|
|
||||||
@@ -962,7 +962,7 @@ static int find_ecrec(__G__ searchlen)
|
|
||||||
fseek((FILE *)G.zipfd, G.ziplen-tail_len, SEEK_SET);
|
|
||||||
G.cur_zipfile_bufstart = ftell((FILE *)G.zipfd);
|
|
||||||
#else /* !USE_STRM_INPUT */
|
|
||||||
- G.cur_zipfile_bufstart = lseek(G.zipfd, G.ziplen-tail_len,
|
|
||||||
+ G.cur_zipfile_bufstart = lseek64(G.zipfd, G.ziplen-tail_len,
|
|
||||||
SEEK_SET);
|
|
||||||
#endif /* ?USE_STRM_INPUT */
|
|
||||||
if ((G.incnt = read(G.zipfd, (char *)G.inbuf,
|
|
||||||
@@ -996,7 +996,7 @@ static int find_ecrec(__G__ searchlen)
|
|
||||||
|
|
||||||
for (i = 1; !found && (i <= numblks); ++i) {
|
|
||||||
G.cur_zipfile_bufstart -= INBUFSIZ;
|
|
||||||
- lseek(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET);
|
|
||||||
+ lseek64(G.zipfd, G.cur_zipfile_bufstart, SEEK_SET);
|
|
||||||
if ((G.incnt = read(G.zipfd,(char *)G.inbuf,INBUFSIZ))
|
|
||||||
!= INBUFSIZ)
|
|
||||||
break; /* fall through and fail */
|
|
||||||
--- unix/Makefile 2007-12-03 13:44:30.000000000 +0100
|
|
||||||
+++ unix/Makefile 2007-12-03 13:54:38.000000000 +0100
|
|
||||||
@@ -783,7 +783,7 @@ linux_asm: linux
|
|
||||||
# Linux (Posix, approximately SysV): virtually any version since before 0.96,
|
|
||||||
# for any platform. Change "-O" to "-O3" or whatever, as desired...
|
|
||||||
linux_noasm: unix_make
|
|
||||||
- $(MAKE) unzips CC=gcc LD=gcc CF="$(RPM_OPT_FLAGS) -I. $(LOC)"
|
|
||||||
+ $(MAKE) unzips CC=gcc LD=gcc CF="$(RPM_OPT_FLAGS) -D_LARGEFILE64_SOURCE -I. $(LOC)"
|
|
||||||
|
|
||||||
# Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit
|
|
||||||
# /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3
|
|
||||||
--- unzip.h 2007-12-03 13:44:30.000000000 +0100
|
|
||||||
+++ unzip.h 2007-12-03 13:49:01.000000000 +0100
|
|
||||||
@@ -606,6 +606,8 @@ typedef struct central_directory_file_he
|
|
||||||
#define UZ_ST_CONTINUE 0
|
|
||||||
#define UZ_ST_BREAK 1
|
|
||||||
|
|
||||||
+#define MAX_ZIP_SIZE 0xffffdffe
|
|
||||||
+
|
|
||||||
|
|
||||||
/*---------------------------------------------------------------------------
|
|
||||||
Prototypes for public UnZip API (DLL) functions.
|
|
||||||
--- unzpriv.h 2007-12-03 13:44:30.000000000 +0100
|
|
||||||
+++ unzpriv.h 2007-12-03 13:49:01.000000000 +0100
|
|
||||||
@@ -785,9 +785,9 @@
|
|
||||||
#endif
|
|
||||||
#ifndef SSTAT
|
|
||||||
# ifdef WILD_STAT_BUG
|
|
||||||
-# define SSTAT(path,pbuf) (iswild(path) || stat(path,pbuf))
|
|
||||||
+# define SSTAT(path,pbuf) (iswild(path) || stat64(path,pbuf))
|
|
||||||
# else
|
|
||||||
-# define SSTAT stat
|
|
||||||
+# define SSTAT stat64
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
#ifndef STRNICMP
|
|
@ -1,6 +1,8 @@
|
|||||||
--- man/zipinfo.1-dist 2007-04-25 12:18:27.000000000 +0200
|
Index: man/zipinfo.1
|
||||||
+++ man/zipinfo.1 2007-04-25 12:19:43.000000000 +0200
|
===================================================================
|
||||||
@@ -114,7 +114,10 @@
|
--- man/zipinfo.1.orig 2010-05-21 14:23:25.824590928 +0200
|
||||||
|
+++ man/zipinfo.1 2010-05-21 14:24:41.631590822 +0200
|
||||||
|
@@ -114,7 +114,10 @@ useful in cases where the stored filenam
|
||||||
.TP
|
.TP
|
||||||
.B \-s
|
.B \-s
|
||||||
list zipfile info in short Unix ``\fCls \-l\fR'' format. This is the default
|
list zipfile info in short Unix ``\fCls \-l\fR'' format. This is the default
|
||||||
@ -12,32 +14,24 @@
|
|||||||
.TP
|
.TP
|
||||||
.B \-m
|
.B \-m
|
||||||
list zipfile info in medium Unix ``\fCls \-l\fR'' format. Identical to the
|
list zipfile info in medium Unix ``\fCls \-l\fR'' format. Identical to the
|
||||||
--- man/unzip.1-dist 2007-04-25 12:04:20.000000000 +0200
|
Index: man/unzip.1
|
||||||
+++ man/unzip.1 2007-04-25 12:19:54.000000000 +0200
|
===================================================================
|
||||||
|
--- man/unzip.1.orig 2010-05-21 14:23:25.824590928 +0200
|
||||||
|
+++ man/unzip.1 2010-05-21 14:24:41.635590912 +0200
|
||||||
@@ -25,7 +25,7 @@
|
@@ -25,7 +25,7 @@
|
||||||
unzip \- list, test and extract compressed files in a ZIP archive
|
unzip \- list, test and extract compressed files in a ZIP archive
|
||||||
.PD
|
.PD
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
-\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCKLMOVX$/:\fP]]
|
-\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCDKLMOUVWX$/:^\fP]]
|
||||||
+\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCKLMOSVX$/:\fP]]
|
+\fBunzip\fP [\fB\-Z\fP] [\fB\-cflptTuvz\fP[\fBabjnoqsCDKLMOSUVWX$/:^\fP]]
|
||||||
\fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.]
|
\fIfile\fP[\fI.zip\fP] [\fIfile(s)\fP\ .\|.\|.]
|
||||||
[\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] [\fB\-d\fP\ \fIexdir\fP]
|
[\fB\-x\fP\ \fIxfile(s)\fP\ .\|.\|.] [\fB\-d\fP\ \fIexdir\fP]
|
||||||
.PD
|
.PD
|
||||||
@@ -371,6 +371,11 @@
|
Index: unzpriv.h
|
||||||
spaces in filenames. Conversion of spaces to underscores can eliminate the
|
===================================================================
|
||||||
awkwardness in some cases.
|
--- unzpriv.h.orig 2010-05-21 14:24:02.641090783 +0200
|
||||||
.TP
|
+++ unzpriv.h 2010-05-21 14:24:55.632590821 +0200
|
||||||
+.B \-S
|
@@ -3020,6 +3020,7 @@ char *GetLoadPath OF((__GPRO));
|
||||||
+suppress the conversion of file name encodings. This is useful when an
|
|
||||||
+archive contains file names with non-latin letters. You have to convert
|
|
||||||
+the file names appropriately to your native encoding manually afterwards.
|
|
||||||
+.TP
|
|
||||||
.B \-U
|
|
||||||
(obsolete; to be removed in a future release) leave filenames uppercase if
|
|
||||||
created under MS-DOS, VMS, etc. See \fB\-L\fP above.
|
|
||||||
--- unzpriv.h-dist 2007-04-25 11:55:59.000000000 +0200
|
|
||||||
+++ unzpriv.h 2007-04-25 12:12:22.000000000 +0200
|
|
||||||
@@ -2577,6 +2577,7 @@ char *GetLoadPath OF((__GPRO));
|
|
||||||
*/
|
*/
|
||||||
#ifndef Ext_ASCII_TO_Native
|
#ifndef Ext_ASCII_TO_Native
|
||||||
# define Ext_ASCII_TO_Native(string, hostnum, hostver, isuxatt, islochdr) \
|
# define Ext_ASCII_TO_Native(string, hostnum, hostver, isuxatt, islochdr) \
|
||||||
@ -45,7 +39,7 @@
|
|||||||
if (((hostnum) == FS_FAT_ && \
|
if (((hostnum) == FS_FAT_ && \
|
||||||
!(((islochdr) || (isuxatt)) && \
|
!(((islochdr) || (isuxatt)) && \
|
||||||
((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
|
((hostver) == 25 || (hostver) == 26 || (hostver) == 40))) || \
|
||||||
@@ -2585,7 +2586,7 @@ char *GetLoadPath OF((__GPRO));
|
@@ -3028,7 +3029,7 @@ char *GetLoadPath OF((__GPRO));
|
||||||
_OEM_INTERN((string)); \
|
_OEM_INTERN((string)); \
|
||||||
} else { \
|
} else { \
|
||||||
_ISO_INTERN((string)); \
|
_ISO_INTERN((string)); \
|
||||||
@ -54,9 +48,11 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
--- zipinfo.c-dist 2007-04-25 12:17:17.000000000 +0200
|
Index: zipinfo.c
|
||||||
+++ zipinfo.c 2007-04-25 12:18:09.000000000 +0200
|
===================================================================
|
||||||
@@ -517,6 +517,12 @@ int zi_opts(__G__ pargc, pargv)
|
--- zipinfo.c.orig 2010-05-21 14:23:25.824590928 +0200
|
||||||
|
+++ zipinfo.c 2010-05-21 14:24:41.695590831 +0200
|
||||||
|
@@ -527,6 +527,12 @@ int zi_opts(__G__ pargc, pargv)
|
||||||
else
|
else
|
||||||
uO.lflag = 3;
|
uO.lflag = 3;
|
||||||
break;
|
break;
|
||||||
@ -69,24 +65,29 @@
|
|||||||
case 't': /* totals line */
|
case 't': /* totals line */
|
||||||
if (negative)
|
if (negative)
|
||||||
tflag_2v = tflag_slm = FALSE, negative = 0;
|
tflag_2v = tflag_slm = FALSE, negative = 0;
|
||||||
--- unzip.c-dist 2007-04-25 11:58:44.000000000 +0200
|
Index: unzip.c
|
||||||
+++ unzip.c 2007-04-25 12:12:35.000000000 +0200
|
===================================================================
|
||||||
@@ -1416,6 +1416,12 @@ int uz_opts(__G__ pargc, pargv)
|
--- unzip.c.orig 2010-05-21 14:23:25.824590928 +0200
|
||||||
uO.sflag = TRUE;
|
+++ unzip.c 2010-05-21 14:24:41.727590745 +0200
|
||||||
|
@@ -1689,6 +1689,13 @@ int uz_opts(__G__ pargc, pargv)
|
||||||
|
else
|
||||||
|
uO.S_flag = TRUE;
|
||||||
break;
|
break;
|
||||||
#endif /* DOS_FLX_NLM_OS2_W32 */
|
+#else
|
||||||
+ case ('S'): /* suppress file name encoding conversions */
|
+ case ('S'): /* suppress file name encoding conversions */
|
||||||
+ if (negative)
|
+ if (negative)
|
||||||
+ uO.no_conv_enc = FALSE, negative = 0;
|
+ uO.no_conv_enc = FALSE, negative = 0;
|
||||||
+ else
|
+ else
|
||||||
+ uO.no_conv_enc = TRUE;
|
+ uO.no_conv_enc = TRUE;
|
||||||
+ break;
|
+ break;
|
||||||
|
#endif /* VMS */
|
||||||
case ('t'):
|
case ('t'):
|
||||||
if (negative)
|
if (negative)
|
||||||
uO.tflag = FALSE, negative = 0;
|
Index: unzip.h
|
||||||
--- unzip.h-dist 2007-04-25 11:59:03.000000000 +0200
|
===================================================================
|
||||||
+++ unzip.h 2007-04-25 12:12:11.000000000 +0200
|
--- unzip.h.orig 2010-05-21 14:23:25.824590928 +0200
|
||||||
@@ -478,6 +478,7 @@ typedef struct _UzpOpts {
|
+++ unzip.h 2010-05-21 14:24:41.731591035 +0200
|
||||||
|
@@ -518,6 +518,7 @@ typedef struct _UzpOpts {
|
||||||
#if (defined(MSDOS) || defined(FLEXOS) || defined(OS2) || defined(WIN32))
|
#if (defined(MSDOS) || defined(FLEXOS) || defined(OS2) || defined(WIN32))
|
||||||
int sflag; /* -s: convert spaces in filenames to underscores */
|
int sflag; /* -s: convert spaces in filenames to underscores */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,13 +1,77 @@
|
|||||||
--- fileio.c
|
Index: fileio.c
|
||||||
+++ fileio.c
|
===================================================================
|
||||||
@@ -425,7 +425,9 @@
|
--- fileio.c.orig 2009-04-20 02:03:44.000000000 +0200
|
||||||
Trace((stderr, "open_outfile: doing fopen(%s) for writing\n",
|
+++ fileio.c 2010-06-25 18:32:49.960030697 +0200
|
||||||
FnFilter1(G.filename)));
|
@@ -71,6 +71,11 @@
|
||||||
|
#include "crc32.h"
|
||||||
|
#include "crypt.h"
|
||||||
|
#include "ttyio.h"
|
||||||
|
+#include <sys/types.h>
|
||||||
|
+#include <sys/stat.h>
|
||||||
|
+#include <fcntl.h>
|
||||||
|
+
|
||||||
|
+
|
||||||
|
|
||||||
- fd = open(G.filename, O_WRONLY | O_LARGEFILE | O_CREAT);
|
/* setup of codepage conversion for decryption passwords */
|
||||||
+ fd = open(G.filename, O_WRONLY | O_LARGEFILE | O_CREAT,
|
#if CRYPT
|
||||||
+ /* 0644 in portable POSIX notation: */
|
@@ -270,6 +275,7 @@ int open_input_file(__G) /* return 1
|
||||||
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
int open_outfile(__G) /* return 1 if fail */
|
||||||
if ((G.outfile = fdopen(fd, FOPW)) == (FILE *)NULL) {
|
__GDEF
|
||||||
|
{
|
||||||
|
+ int fd;
|
||||||
|
#ifdef DLL
|
||||||
|
if (G.redirect_data)
|
||||||
|
return (redirect_outfile(__G) == FALSE);
|
||||||
|
@@ -448,23 +454,48 @@ int open_outfile(__G) /* retur
|
||||||
|
return 1; /* with "./" fix in checkdir(), should never reach here */
|
||||||
|
}
|
||||||
|
#endif /* NOVELL_BUG_FAILSAFE */
|
||||||
|
- Trace((stderr, "open_outfile: doing fopen(%s) for writing\n",
|
||||||
|
- FnFilter1(G.filename)));
|
||||||
|
{
|
||||||
|
#if defined(ATH_BE_UNX) || defined(AOS_VS) || defined(QDOS) || defined(TANDEM)
|
||||||
|
mode_t umask_sav = umask(0077);
|
||||||
|
#endif
|
||||||
|
+
|
||||||
|
+#if defined(SYMLINKS) || defined(QLZIP)
|
||||||
|
+ fd = open(G.filename, O_RDWR | O_LARGEFILE | O_CREAT,
|
||||||
|
+ /* 0644 in portable POSIX notation: */
|
||||||
|
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||||
|
+#else
|
||||||
|
+ fd = open(G.filename, O_WRONLY | O_LARGEFILE | O_CREAT,
|
||||||
|
+ /* 0644 in portable POSIX notation: */
|
||||||
|
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||||
|
+#endif
|
||||||
|
+ Trace((stderr, "open_outfile: open(%s, O_WRONLY | O_LARGEFILE | O_CREAT) returned %d\n",
|
||||||
|
+ FnFilter1(G.filename), fd));
|
||||||
|
+
|
||||||
|
+ if (fd < 0) {
|
||||||
|
+ Info(slide, 0x401, ((char *)slide, LoadFarString(CannotCreateFile),
|
||||||
|
+ FnFilter1(G.filename), strerror(errno)));
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
|
#if defined(SYMLINKS) || defined(QLZIP)
|
||||||
|
/* These features require the ability to re-read extracted data from
|
||||||
|
the output files. Output files are created with Read&Write access.
|
||||||
|
*/
|
||||||
|
- G.outfile = zfopen(G.filename, FOPWR);
|
||||||
|
+
|
||||||
|
+ G.outfile = zfdopen(fd, FOPWR);
|
||||||
|
+
|
||||||
|
+ Trace((stderr, "open_outfile: doing fdopen(%s, FOPWR) returned %p\n",
|
||||||
|
+ G.outfile));
|
||||||
|
#else
|
||||||
|
- G.outfile = zfopen(G.filename, FOPW);
|
||||||
|
+ G.outfile = zfdopen(fd, FOPW);
|
||||||
|
+
|
||||||
|
+ Trace((stderr, "open_outfile: doing fdopen(%s, FOPW) returned %p\n",
|
||||||
|
+ G.outfile));
|
||||||
|
#endif
|
||||||
|
#if defined(ATH_BE_UNX) || defined(AOS_VS) || defined(QDOS) || defined(TANDEM)
|
||||||
|
umask(umask_sav);
|
||||||
|
#endif
|
||||||
|
+ if (G.outfile == NULL && fd != 0)
|
||||||
|
+ unlink(G.filename);
|
||||||
|
}
|
||||||
|
if (G.outfile == (FILE *)NULL) {
|
||||||
Info(slide, 0x401, ((char *)slide, LoadFarString(CannotCreateFile),
|
Info(slide, 0x401, ((char *)slide, LoadFarString(CannotCreateFile),
|
||||||
FnFilter1(G.filename)));
|
|
||||||
|
@ -1,22 +1,22 @@
|
|||||||
Index: unix/Makefile
|
Index: unix/Makefile
|
||||||
===================================================================
|
===================================================================
|
||||||
--- unix/Makefile.orig 2010-05-10 17:45:59.892090727 +0200
|
--- unix/Makefile.orig 2010-05-21 13:11:26.128591070 +0200
|
||||||
+++ unix/Makefile 2010-05-10 17:46:18.636090912 +0200
|
+++ unix/Makefile 2010-05-21 13:14:45.429090869 +0200
|
||||||
@@ -773,7 +773,7 @@ isi: unix_make
|
@@ -809,7 +809,7 @@ isi: unix_make
|
||||||
linux: unix_make
|
linux: unix_make
|
||||||
@echo 'NOTE: use linux_noasm target for non-Intel Linux compiles.'
|
@echo 'NOTE: use linux_noasm target for non-Intel Linux compiles.'
|
||||||
$(MAKE) unzips CC=gcc LD=gcc AS=gcc\
|
$(MAKE) unzips CC=gcc LD=gcc AS=gcc\
|
||||||
- CF="-O3 -Wall -I. -DASM_CRC $(LOC)"\
|
- CFLAGS="-O3 -Wall -DASM_CRC"\
|
||||||
+ CF="$(RPM_OPT_FLAGS) -I. -DASM_CRC $(LOC)"\
|
+ CFLAGS="$(RPM_OPT_FLAGS) -DASM_CRC"\
|
||||||
AF="-Di386 $(AF)" CRC32=crc_gcc
|
AF="-Di386 $(AF)" CRCA_O=crc_gcc$O
|
||||||
# GRR: this echo is pointless; if user gets this far, no difference to install
|
# GRR: this echo is pointless; if user gets this far, no difference to install
|
||||||
# @echo 'Be sure to use the install_asm target rather than the install target'
|
# @echo 'Be sure to use the install_asm target rather than the install target'
|
||||||
@@ -783,7 +783,7 @@ linux_asm: linux
|
@@ -819,7 +819,7 @@ linux_asm: linux
|
||||||
# Linux (Posix, approximately SysV): virtually any version since before 0.96,
|
# Linux (Posix, approximately SysV): virtually any version since before 0.96,
|
||||||
# for any platform. Change "-O" to "-O3" or whatever, as desired...
|
# for any platform. Change "-O" to "-O3" or whatever, as desired...
|
||||||
linux_noasm: unix_make
|
linux_noasm: unix_make
|
||||||
- $(MAKE) unzips CC=gcc LD=gcc CF="-O -Wall -I. $(LOC)"
|
- $(MAKE) unzips CC=gcc LD=gcc CFLAGS="-O -Wall"
|
||||||
+ $(MAKE) unzips CC=gcc LD=gcc CF="$(RPM_OPT_FLAGS) -I. $(LOC)"
|
+ $(MAKE) unzips CC=gcc LD=gcc CF="$(RPM_OPT_FLAGS)"
|
||||||
|
|
||||||
# Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit
|
# Linux with lcc compiler: __inline__ (stat.h) not recognized, and must edit
|
||||||
# /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3
|
# /usr/include/gnu/types.h to get rid of "long long" if __LCC__ defined. -O3
|
||||||
|
@ -1,3 +1,52 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jun 25 18:21:34 CEST 2010 - pth@suse.de
|
||||||
|
|
||||||
|
- Doing open(O_WRONLY) and then fdopen("w+") will now fail with
|
||||||
|
"Invalid Argument" whereas former glibcs would succeed. So now
|
||||||
|
do open(O_RDWR).
|
||||||
|
- Print error message when open(2) fails.
|
||||||
|
- Add debugging traces in open_outfile.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri May 21 16:39:24 CEST 2010 - pth@suse.de
|
||||||
|
|
||||||
|
- Update to 6.0:
|
||||||
|
* Support PKWARE ZIP64 extensions, allowing Zip archives and Zip archive
|
||||||
|
entries larger than 4 GiBytes and more than 65536 entries within a
|
||||||
|
single Zip archive. This support is currently only available for Unix,
|
||||||
|
OpenVMS and Win32/Win64.
|
||||||
|
* Support for bzip2 compression method.
|
||||||
|
* Support for UTF-8 encoded entry names, both through PKWARE's "General
|
||||||
|
Purpose Flags Bit 11" indicator and Info-ZIP's new "up" unicode path
|
||||||
|
extra field. (Currently, on Windows the UTF-8 handling is limited to
|
||||||
|
the character subset contained in the configured non-unicode "system
|
||||||
|
code page".)
|
||||||
|
* Fixed "Time of Creation/Time of Use" vulnerability when setting
|
||||||
|
attributes of extracted files, for Unix and Unix-like ports.
|
||||||
|
* Fixed memory leak when processing invalid deflated data.
|
||||||
|
* Fixed long-standing bug in unshrink (partial_clear), added boundary
|
||||||
|
checks against invalid compressed data.
|
||||||
|
* On Unix, keep inherited SGID attribute bit for extracted directories
|
||||||
|
unless restoration of owner/group id or SUID/SGID/Tacky attributes was
|
||||||
|
requested.
|
||||||
|
* On Unix, allow extracted filenames to contain embedded control
|
||||||
|
characters when explicitly requested by specifying the new command line
|
||||||
|
option "-^".
|
||||||
|
* On Unix, support restoration of symbolic link attributes.
|
||||||
|
* On Unix, support restoration of 32-bit UID/GID data using the new "ux"
|
||||||
|
IZUNIX3 extra field introduced with Zip 3.0.
|
||||||
|
* Support symbolic links zipped up on VMS.
|
||||||
|
* New -D option to suppress restoration of timestamps for extracted
|
||||||
|
directory entries (on those ports that support setting of directory
|
||||||
|
timestamps). By specifying "-DD", this new option also allows to
|
||||||
|
suppress timestamp restoration for ALL extracted files on all UnZip
|
||||||
|
ports which support restoration of timestamps. On VMS, the default
|
||||||
|
behaviour is now to skip restoration of directory timestamps; here,
|
||||||
|
"--D" restores ALL timestamps, "-D" restores none.
|
||||||
|
* On OS/2, Win32, and Unix, the (previously optional) feature UNIXBACKUP
|
||||||
|
to allow saving backup copies of overwritten files on extraction is now
|
||||||
|
enabled by default.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon May 10 16:39:20 UTC 2010 - pth@suse.de
|
Mon May 10 16:39:20 UTC 2010 - pth@suse.de
|
||||||
|
|
||||||
|
11
unzip.dif
11
unzip.dif
@ -1,7 +1,8 @@
|
|||||||
diff -Nur unzip-5.50.orig/unix/Makefile unzip-5.50/unix/Makefile
|
Index: unix/Makefile
|
||||||
--- unzip-5.50.orig/unix/Makefile Sat Feb 16 18:00:38 2002
|
===================================================================
|
||||||
+++ unzip-5.50/unix/Makefile Mon Mar 11 08:40:41 2002
|
--- unix/Makefile.orig 2009-01-18 23:41:18.000000000 +0100
|
||||||
@@ -61,8 +61,8 @@
|
+++ unix/Makefile 2010-05-21 14:06:56.192590841 +0200
|
||||||
|
@@ -64,8 +64,8 @@ FL2 = $(LF2)
|
||||||
|
|
||||||
# general-purpose stuff
|
# general-purpose stuff
|
||||||
#CP = cp
|
#CP = cp
|
||||||
@ -12,7 +13,7 @@ diff -Nur unzip-5.50.orig/unix/Makefile unzip-5.50/unix/Makefile
|
|||||||
RM = rm -f
|
RM = rm -f
|
||||||
CHMOD = chmod
|
CHMOD = chmod
|
||||||
BINPERMS = 755
|
BINPERMS = 755
|
||||||
@@ -102,7 +102,7 @@
|
@@ -121,7 +121,7 @@ INSTALL_PROGRAM = $(INSTALL)
|
||||||
INSTALL_D = mkdir -p
|
INSTALL_D = mkdir -p
|
||||||
# on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
|
# on some systems, manext=l and MANDIR=/usr/man/man$(manext) may be appropriate
|
||||||
manext = 1
|
manext = 1
|
||||||
|
25
unzip.spec
25
unzip.spec
@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# spec file for package unzip (Version 5.52)
|
# spec file for package unzip (Version 6.00)
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||||
#
|
#
|
||||||
@ -23,20 +23,18 @@ Group: Productivity/Archiving/Compression
|
|||||||
Provides: crunzip
|
Provides: crunzip
|
||||||
Obsoletes: crunzip
|
Obsoletes: crunzip
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Version: 5.52
|
Version: 6.00
|
||||||
Release: 144
|
Release: 1
|
||||||
|
%define fileversion 60
|
||||||
Summary: A program to unpack compressed files
|
Summary: A program to unpack compressed files
|
||||||
Source: unzip552.tar.bz2
|
Source: %{name}%{fileversion}.tar.bz2
|
||||||
Url: http://www.info-zip.org/
|
Url: http://www.info-zip.org/
|
||||||
Patch: unzip.dif
|
Patch0: unzip.dif
|
||||||
Patch1: unzip-iso8859_2.patch
|
Patch1: unzip-iso8859_2.patch
|
||||||
Patch3: unzip-optflags.patch
|
Patch3: unzip-optflags.patch
|
||||||
Patch4: unzip-5.52-filename_too_long.patch
|
Patch4: unzip-5.52-filename_too_long.patch
|
||||||
Patch5: unzip-no_file_name_translation.patch
|
Patch5: unzip-no_file_name_translation.patch
|
||||||
Patch6: unzip-near-4GB.patch
|
|
||||||
Patch7: unzip-CVE-2005-2475.patch
|
|
||||||
Patch8: unzip-open_missing_mode.patch
|
Patch8: unzip-open_missing_mode.patch
|
||||||
Patch9: unzip-5.5.2-goo-sec.patch
|
|
||||||
Patch10: unzip-5.52-use_librcc.patch
|
Patch10: unzip-5.52-use_librcc.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
BuildRequires: librcc-devel
|
BuildRequires: librcc-devel
|
||||||
@ -55,20 +53,17 @@ Authors:
|
|||||||
Info-ZIP <zip-bugs@lists.wku.edu>
|
Info-ZIP <zip-bugs@lists.wku.edu>
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q -n %{name}%{fileversion}
|
||||||
%patch -p1
|
%patch0
|
||||||
%patch1 -p1
|
%patch1
|
||||||
%patch3
|
%patch3
|
||||||
%patch4
|
%patch4
|
||||||
%patch5
|
%patch5
|
||||||
%patch6
|
|
||||||
%patch7
|
|
||||||
%patch8
|
%patch8
|
||||||
%patch9
|
|
||||||
%patch10
|
%patch10
|
||||||
|
|
||||||
%build
|
%build
|
||||||
export RPM_OPT_FLAGS="%optflags -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -fstack-protector"
|
export RPM_OPT_FLAGS="%optflags -DLARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -fstack-protector -I."
|
||||||
make %{?jobs:-j%jobs} -f unix/Makefile LF2=-lrcc linux_noasm
|
make %{?jobs:-j%jobs} -f unix/Makefile LF2=-lrcc linux_noasm
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:67ac960892936d07286da931f66e02fdd472192cef3d48fd88ba0046c2ea04a4
|
|
||||||
size 864023
|
|
3
unzip60.tar.bz2
Normal file
3
unzip60.tar.bz2
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:d8ce25f541563a112b077b4d61cfabee81d3d98b99c9ce60cf51266703dce9b2
|
||||||
|
size 1063255
|
Loading…
x
Reference in New Issue
Block a user