Compare commits
3 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6e6d2f22dc | ||
|
|
1d66133120 | ||
|
|
c9b42a4ced |
30 changed files with 738 additions and 1362 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1 +1,2 @@
|
|||
zip30.tar.gz
|
||||
zcrypt29.tar.gz
|
||||
zip231.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,12 +0,0 @@
|
|||
diff -urp zip30/fileio.c zip30/fileio.c
|
||||
--- zip30/fileio.c 2008-05-29 03:13:24.000000000 +0300
|
||||
+++ zip30/fileio.c 2023-05-02 12:19:50.488314853 +0300
|
||||
@@ -3502,7 +3502,7 @@ zwchar *local_to_wide_string(local_strin
|
||||
if ((wc_string = (wchar_t *)malloc((wsize + 1) * sizeof(wchar_t))) == NULL) {
|
||||
ZIPERR(ZE_MEM, "local_to_wide_string");
|
||||
}
|
||||
- wsize = mbstowcs(wc_string, local_string, strlen(local_string) + 1);
|
||||
+ wsize = mbstowcs(wc_string, local_string, wsize + 1);
|
||||
wc_string[wsize] = (wchar_t) 0;
|
||||
|
||||
/* in case wchar_t is not zwchar */
|
||||
19
exec-shield.patch
Normal file
19
exec-shield.patch
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
diff -ur zip-2.3/crc_i386.S zip-2.3-lhh/crc_i386.S
|
||||
--- zip-2.3/crc_i386.S 1999-10-09 16:10:26.000000000 -0400
|
||||
+++ zip-2.3-lhh/crc_i386.S 2003-10-24 16:15:52.000000000 -0400
|
||||
@@ -230,3 +230,6 @@
|
||||
#endif /* i386 || _i386 || _I386 || __i386 */
|
||||
|
||||
#endif /* !USE_ZLIB */
|
||||
+
|
||||
+.section .note.GNU-stack, "", @progbits
|
||||
+.previous
|
||||
diff -ur zip-2.3/match.S zip-2.3-lhh/match.S
|
||||
--- zip-2.3/match.S 1999-07-27 17:18:14.000000000 -0400
|
||||
+++ zip-2.3-lhh/match.S 2003-10-24 16:15:38.000000000 -0400
|
||||
@@ -405,3 +405,5 @@
|
||||
#endif /* i386 || _I386 || _i386 || __i386 */
|
||||
|
||||
#endif /* !USE_ZLIB */
|
||||
+.section .note.GNU-stack, "", @progbits
|
||||
+.previous
|
||||
40
man.patch
40
man.patch
|
|
@ -1,40 +0,0 @@
|
|||
--- ./man/zipsplit.1 2008-05-08 10:17:48.000000000 +0200
|
||||
+++ ./man/zipsplit.1 2013-04-26 18:33:12.492008280 +0200
|
||||
@@ -12,6 +12,7 @@
|
||||
.RB [ \-r\ room ]
|
||||
.RB [ \-b\ path ]
|
||||
.RB [ \-h ]
|
||||
+.RB [ \-q ]
|
||||
.RB [ \-v ]
|
||||
.RB [ \-L ]
|
||||
zipfile
|
||||
@@ -47,6 +48,9 @@
|
||||
.BI \-h
|
||||
Show a short help.
|
||||
.TP
|
||||
+.BI \-q
|
||||
+Suppress some informational messages.
|
||||
+.TP
|
||||
.BI \-v
|
||||
Show version information.
|
||||
.TP
|
||||
--- ./man/zipnote.1 2013-04-26 18:40:32.145018756 +0200
|
||||
+++ ./man/zipnote.1 2013-04-26 18:40:18.943018442 +0200
|
||||
@@ -7,6 +7,7 @@
|
||||
.RB [ \-w ]
|
||||
.RB [ \-b\ path ]
|
||||
.RB [ \-h ]
|
||||
+.RB [ \-q ]
|
||||
.RB [ \-v ]
|
||||
.RB [ \-L ]
|
||||
zipfile
|
||||
@@ -27,6 +28,9 @@
|
||||
.BI \-h
|
||||
Show a short help.
|
||||
.TP
|
||||
+.BI \-q
|
||||
+Suppress some informational messages.
|
||||
+.TP
|
||||
.BI \-v
|
||||
Show version information.
|
||||
.TP
|
||||
3
sources
3
sources
|
|
@ -1 +1,2 @@
|
|||
7b74551e63f8ee6aab6fbc86676c0d37 zip30.tar.gz
|
||||
922f7f38f8e50ec353fd5b3102e4d4d6 zcrypt29.tar.gz
|
||||
6bfc076664416251d7624ab3538d1cb9 zip231.tar.gz
|
||||
|
|
|
|||
|
|
@ -1,47 +0,0 @@
|
|||
---
|
||||
- hosts: localhost
|
||||
tags:
|
||||
- classic
|
||||
|
||||
tasks:
|
||||
- name: Define remote_artifacts if it is not already defined
|
||||
set_fact:
|
||||
artifacts: ${HOME}/artifacts
|
||||
when: artifacts is not defined
|
||||
|
||||
- name: Make artifacts directory
|
||||
file: path={{ artifacts }} state=directory recurse=yes
|
||||
|
||||
- block:
|
||||
- name: Execute tests
|
||||
shell: |
|
||||
logfile={{ artifacts }}/test.{{ item }}.log
|
||||
exec 2>>$logfile 1>>$logfile
|
||||
cd tests
|
||||
#make script executable
|
||||
chmod 0775 {{ item }}
|
||||
#execute the test
|
||||
python2 {{ item }}.py
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "PASS {{ item }}" >> {{ artifacts }}/test.log
|
||||
else
|
||||
echo "FAIL {{ item }}" >> {{ artifacts }}/test.log
|
||||
fi
|
||||
with_items:
|
||||
- "test_4GBsegfault"
|
||||
- "test_big_file_in_archive"
|
||||
- "test_long_path_in_archive"
|
||||
- "test_many_files_in_archive"
|
||||
- "test_umask"
|
||||
- "test_umask_when_creating"
|
||||
- "test_zipnote_fails_to_update_the_archive"
|
||||
|
||||
# Can't go in block. See
|
||||
# https://github.com/ansible/ansible/issues/20736
|
||||
- name: Check the results
|
||||
shell: grep "^FAIL" {{ artifacts }}/test.log
|
||||
register: test_fails
|
||||
failed_when: test_fails.stdout or test_fails.stderr
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,154 +0,0 @@
|
|||
'''
|
||||
author = esakaiev@redhat.com
|
||||
'''
|
||||
import logging
|
||||
import sys
|
||||
import subprocess
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
||||
def decorated_message(message):
|
||||
"""
|
||||
This decorator is used for providing logging header for different sections in the scripts
|
||||
:param message: (`STRING`)
|
||||
:return: decorated_function
|
||||
"""
|
||||
|
||||
def decorated_function(func):
|
||||
"""
|
||||
|
||||
:param func:
|
||||
:return:
|
||||
"""
|
||||
|
||||
def wrapper(self):
|
||||
"""
|
||||
|
||||
:param self:
|
||||
:return:
|
||||
"""
|
||||
print " "
|
||||
print ("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
|
||||
print (":: {0}".format(message))
|
||||
print ("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::")
|
||||
|
||||
func(self)
|
||||
|
||||
return wrapper
|
||||
|
||||
return decorated_function
|
||||
|
||||
|
||||
class BaseZipTests(object):
|
||||
"""
|
||||
This is a Base class for zip tests
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._set_logger()
|
||||
self._purpose = ""
|
||||
self.print_test_purpose()
|
||||
|
||||
def _set_logger(self):
|
||||
"""
|
||||
This method is used for instantiating of logger
|
||||
:return:
|
||||
- None
|
||||
"""
|
||||
self.logger = logging.getLogger()
|
||||
self.logger.setLevel(logging.DEBUG)
|
||||
|
||||
self.handler = logging.StreamHandler(sys.stdout)
|
||||
self.handler.setLevel(logging.DEBUG)
|
||||
formatter = logging.Formatter('[ %(asctime)s ] :: [ %(message)s ]')
|
||||
self.handler.setFormatter(formatter)
|
||||
self.logger.addHandler(self.handler)
|
||||
|
||||
@decorated_message("PURPOSE")
|
||||
def print_test_purpose(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
print self._purpose
|
||||
|
||||
def run_cmd(self, cmd, exp_err_code, message, cwd=None):
|
||||
"""
|
||||
This method is used for executing cmd, check output error code and
|
||||
add result in the logger
|
||||
:param cmd: ('STRING') - some command to execute
|
||||
:param exp_err_code: ('INTEGER') - expected error code
|
||||
:param message: ('STRING') - command description
|
||||
:param cwd: ('STRING') - path to directory, where need to execute cmd
|
||||
:return:
|
||||
- errcode ('INTEGER')
|
||||
"""
|
||||
try:
|
||||
errcode = subprocess.call(cmd, shell=True, cwd=cwd, stdout=sys.stderr.fileno())
|
||||
if errcode != exp_err_code:
|
||||
self.logger.debug("FAIL :: {0}".format(message))
|
||||
else:
|
||||
self.logger.debug("PASS ] :: [ {0}".format(message))
|
||||
return errcode
|
||||
except subprocess.CalledProcessError as exp:
|
||||
self.logger.error("Could not execute command {0}, e: {1}".format(cmd, exp))
|
||||
|
||||
def check_package(self):
|
||||
"""
|
||||
This method is used for checking, if zip package is installed
|
||||
:return: None
|
||||
"""
|
||||
assert self.run_cmd("dnf list installed zip", 0, "Dnf package should be installed") == 0
|
||||
|
||||
def check_output(self, cmd, exp_output, message, cwd=None):
|
||||
"""
|
||||
This method is used for executing cmd and compare output result with expected message
|
||||
:param cmd: (`STRING`) - some command to execute
|
||||
:param exp_err_code: (`INTEGER`) - expected error code
|
||||
:param message: (`STRING`) - command description
|
||||
:param cwd: (`STRING`) - path to directory, where need to execute cmd
|
||||
:return:
|
||||
- output message (`STRING`)
|
||||
"""
|
||||
try:
|
||||
output = self.execute_cmd(cmd, cwd)
|
||||
if output != exp_output:
|
||||
self.logger.debug("FAIL ]:: [ {}".format(message))
|
||||
else:
|
||||
self.logger.debug("PASS ] :: [ {}".format(message))
|
||||
return output
|
||||
except subprocess.CalledProcessError as exp:
|
||||
self.logger.error(r'FAIL ] :: [ Could not execute command: "{0}",\
|
||||
ex: {1}'.format(cmd, exp))
|
||||
|
||||
def execute_cmd(self, cmd, cwd=None):
|
||||
"""
|
||||
This method is used for executing cmd and return output message
|
||||
:param cmd: (`STRING`) - some command to execute
|
||||
:param cwd: (`STRING`) - path to directory, where need to execute cmd
|
||||
:return:
|
||||
- output message (`STRING`)
|
||||
"""
|
||||
try:
|
||||
output = subprocess.check_output(cmd, shell=True, cwd=cwd)
|
||||
return output
|
||||
except subprocess.CalledProcessError as exp:
|
||||
self.logger.error(r'FAIL ] :: [ Could not execute command: "{0}",\
|
||||
ex: {1}'.format(cmd, exp))
|
||||
|
||||
def remove_file(self, file_path, is_directory=False):
|
||||
"""
|
||||
This method is used for removing files or directories after execution of test cases
|
||||
:param file_path:(`STRING`) - path to file/folder
|
||||
:param is_directory: (`BOOLEAN`) - True for directories
|
||||
:return: None
|
||||
"""
|
||||
try:
|
||||
if is_directory:
|
||||
shutil.rmtree(file_path)
|
||||
else:
|
||||
os.remove(file_path)
|
||||
self.logger.debug("File {0} has been successfully removed".format(file_path))
|
||||
except OSError, exp:
|
||||
self.logger.debug("File {0} doesn't exists, e: {1}".format(file_path, exp))
|
||||
|
|
@ -1,89 +0,0 @@
|
|||
# Copyright (c) 2018 Red Hat, Inc. All rights reserved. This copyrighted material
|
||||
# is made available to anyone wishing to use, modify, copy, or
|
||||
# redistribute it subject to the terms and conditions of the GNU General
|
||||
# Public License v.2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# Author: Eduard Sakaiev <esakaiev@redhat.com>
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''zip mustn't segfault when packing files larger than 4 GB.
|
||||
|
||||
Note: this test can't run on RHEL 2.1 since the utilities used here
|
||||
in the test don't work there as expected. This test can't run on
|
||||
RHEL 5 either, but in this case, the reason is reworked zip which
|
||||
can't work with files larger than 4 GB at all.'''
|
||||
|
||||
|
||||
class Test4GBsegfault(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for Test4GBsegfault test case
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
"""
|
||||
|
||||
"""
|
||||
self._purpose = PURPOSE
|
||||
super(Test4GBsegfault, self).__init__()
|
||||
|
||||
self._tmpdir = "/tmp/{}".format(uuid.uuid4())
|
||||
|
||||
@decorated_message("SETUP")
|
||||
def prepare_setup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.check_package()
|
||||
|
||||
self.run_cmd("mkdir {}".format(self._tmpdir), 0,
|
||||
"Creating tmp directory {}".format(self._tmpdir))
|
||||
|
||||
@decorated_message("TEST")
|
||||
def start_test(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.run_cmd("dd if=/dev/zero of=testfile bs=1M count=4097", 0,
|
||||
"Creating of 4Gb file", self._tmpdir + "/")
|
||||
self.run_cmd("zip testfile.zip testfile", 0,
|
||||
"Archiving file with zip", self._tmpdir + "/")
|
||||
|
||||
@decorated_message("CLEANUP")
|
||||
def cleanup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.run_cmd("rm -r {}".format(self._tmpdir), 0,
|
||||
"Removing tmp directory")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test_4gb = Test4GBsegfault()
|
||||
try:
|
||||
test_4gb.prepare_setup()
|
||||
test_4gb.start_test()
|
||||
except AssertionError, exp:
|
||||
test_4gb.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test_4gb.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test_4gb.cleanup()
|
||||
|
|
@ -1,128 +0,0 @@
|
|||
# python2 test_big_file_in_archive.py
|
||||
# Author: Josef Zila <jzila@redhat.com>
|
||||
# Location: CoreOS/zip/Functionality/stress-tests/big-file-in-archive/runtest.sh
|
||||
# Description: zip - tests handling large files (2GB,3MB,4GB)
|
||||
|
||||
# Copyright (c) 2008 Red Hat, Inc. All rights reserved. This copyrighted material
|
||||
# is made available to anyone wishing to use, modify, copy, or
|
||||
# redistribute it subject to the terms and conditions of the GNU General
|
||||
# Public License v.2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# Include rhts and rhtslib environment
|
||||
# rpm -q --quiet rhtslib || rpm -Uvh http://nest.test.redhat.com/mnt/qa/scratch/pmuller/rhtslib/rhtslib.rpm
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
import platform
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''
|
||||
Test Name: Big file in archive
|
||||
Author: Josef Zila <jzila@redhat.com>
|
||||
Location: CoreOS/zip/Functionality/stress-tests/big-file-in-archive/PURPOSE
|
||||
|
||||
Short Description:
|
||||
Tests handling large files (2GB,3GB,4GB)
|
||||
|
||||
Long Description:
|
||||
Test creates three files (2GB, 3GB and 4GB large) and attempts to archive each of them using zip. Then original files are deleted
|
||||
and archives are unpacked, to check size of unpacked files. Current version of zip on all archs and distros in time of
|
||||
writing(2.31-1) passes test. Note: 4GB file is too large for zip to handle, so it is not supposed to be successfully archived
|
||||
or unpacked, test just checks for correct return codes.
|
||||
|
||||
|
||||
how to run it:
|
||||
python2 test_big_file_in_archive.py
|
||||
|
||||
TEST UPDATED (esakaiev)
|
||||
------------------------
|
||||
After rebase to zip-3.0-1 there is no 4GB limit. Patching the test accordingly.
|
||||
'''
|
||||
|
||||
|
||||
class TestBigFileInArchive(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for TestBigFileInArchive test case
|
||||
"""
|
||||
def __init__(self):
|
||||
"""
|
||||
|
||||
"""
|
||||
self._purpose = PURPOSE
|
||||
super(TestBigFileInArchive, self).__init__()
|
||||
|
||||
self._files = ['/tmp/tmp.{}'.format(uuid.uuid4()) for x in xrange(3)]
|
||||
self._files_sizes = [2048, 3056, 4096]
|
||||
self._os_distribution = platform.linux_distribution()
|
||||
|
||||
@decorated_message("Preparing Setup")
|
||||
def prepare_setup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.check_package()
|
||||
for i, file_name in enumerate(self._files):
|
||||
size = self._files_sizes[i]
|
||||
assert self.run_cmd("dd if=/dev/zero of={0} bs=1M count={1}".format(file_name, size), 0,
|
||||
"Creating {0} GB file".format(size / 1000), cwd="/tmp/") == 0
|
||||
|
||||
@decorated_message("Starting Test")
|
||||
def start_test(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
for i, file_name in enumerate(self._files):
|
||||
error_code = 0
|
||||
|
||||
self.remove_file(file_name + ".zip") # #remove archive temp files, we just need unused temp names
|
||||
size = self._files_sizes[i]
|
||||
|
||||
self.run_cmd("zip {0} {1}".format(file_name + ".zip", file_name), error_code,
|
||||
"Archiving {} Gb file".format(size / 1000), cwd="/tmp/")
|
||||
|
||||
self.remove_file(file_name) # Removing original files
|
||||
|
||||
self.run_cmd("unzip {0} -d /".format(file_name + ".zip"), error_code,
|
||||
"Unpacking {} Gb file".format(size / 1000), cwd="/tmp/")
|
||||
|
||||
# Checking new 2GB file size
|
||||
self.check_output("stat -c %s {0}".format(self._files[0]), "2147483648\n", "Checking new 2GB file size")
|
||||
|
||||
@decorated_message("Cleaning up")
|
||||
def cleanup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
for file_name in self._files:
|
||||
self.remove_file(file_name)
|
||||
self.remove_file(file_name + ".zip")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = TestBigFileInArchive()
|
||||
try:
|
||||
test.prepare_setup()
|
||||
test.start_test()
|
||||
except AssertionError, exp:
|
||||
test.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test.cleanup()
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
# Author: Josef Zila <jzila@redhat.com>
|
||||
# Location: CoreOS/zip/Functionality/stress-tests/long-path-in-archive/runtest.sh
|
||||
# Description: zip - tests handling very long paths within archive (15*256 characters long path)
|
||||
|
||||
# Copyright (c) 2008 Red Hat, Inc. All rights reserved. This copyrighted material
|
||||
# is made available to anyone wishing to use, modify, copy, or
|
||||
# redistribute it subject to the terms and conditions of the GNU General
|
||||
# Public License v.2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
import os
|
||||
from shutil import copyfile
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''
|
||||
Test Name:
|
||||
Author: Josef Zila <jzila@redhat.com>
|
||||
Location: CoreOS/zip/Functionality/stress-tests/long-path-in-archive/PURPOSE
|
||||
|
||||
Short Description:
|
||||
Tests handling very long paths within archive (15*256 characters long path)
|
||||
|
||||
Long Description:
|
||||
This test creates file with very long path of 15 directories, each 255 characters. This whole directory structure is then zipped and unzipped
|
||||
to determine if zip program handles paths this long correctly. Current version of zip on all archs and distros in time of writing(2.31-1) passes test.
|
||||
|
||||
|
||||
how to run it:
|
||||
choose arch and distro
|
||||
|
||||
|
||||
TEST UPDATED (esakaiev)
|
||||
'''
|
||||
|
||||
|
||||
class TestLongPathInArchive(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for TestLongPathInArchive test case
|
||||
"""
|
||||
def __init__(self):
|
||||
self._purpose = PURPOSE
|
||||
super(TestLongPathInArchive, self).__init__()
|
||||
|
||||
self._tmpdir = "/tmp/{}".format(uuid.uuid4())
|
||||
self._file_under_test = "/proc/version"
|
||||
|
||||
self._long_name = "".join(["aaaaa" for i in xrange(51)])
|
||||
self._long_path = "/".join([self._long_name for x in xrange(15)])
|
||||
self._test_file_path = self._tmpdir + "/" + self._long_path + "/" + "testfile"
|
||||
self._package_ver = ""
|
||||
self._package_release = ""
|
||||
|
||||
@decorated_message("Prepare setup")
|
||||
def prepare_setup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.check_package()
|
||||
|
||||
self.run_cmd("mkdir {}".format(self._tmpdir), 0, "Creating tmp directory {}".format(self._tmpdir))
|
||||
self._package_ver = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
self._package_release = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
|
||||
self.logger.debug("Running zip.{0}.{1} package".format(self._package_ver, self._package_release))
|
||||
# creating folders structure:
|
||||
try:
|
||||
|
||||
os.makedirs(self._tmpdir + "/" + self._long_path)
|
||||
self.logger.debug("PASS ] :: [ Test directory with long path has been successfully created")
|
||||
except OSError, exp:
|
||||
self.logger.debug("FAIL ] :: [ Could not create directories by path, e: {}".format(exp))
|
||||
raise
|
||||
|
||||
copyfile(self._file_under_test, self._test_file_path)
|
||||
|
||||
@decorated_message("Starting Test cases")
|
||||
def start_test(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
|
||||
self.run_cmd("zip -r test {0} -q".format(self._long_name), 0,
|
||||
"Zipping test file",
|
||||
cwd=self._tmpdir)
|
||||
|
||||
self.remove_file(self._tmpdir + "/" + self._long_name, True)
|
||||
self.run_cmd("unzip -qq test.zip", 0,
|
||||
"Unzipping test file",
|
||||
cwd=self._tmpdir)
|
||||
|
||||
content_init = None
|
||||
with open(self._file_under_test) as fp_init:
|
||||
content_init = fp_init.read().replace('\n', '')
|
||||
|
||||
content_fut = None
|
||||
with open(self._test_file_path) as fp_fut:
|
||||
content_fut = fp_fut.read().replace('\n', '')
|
||||
|
||||
if content_init == content_fut:
|
||||
self.logger.debug("PASS ] :: [ {}".format("Content of the initial file and file under test was matched"))
|
||||
else:
|
||||
self.logger.debug("FAIL ] :: [ {}".format("Content of the initial file and file under test wasn't matched"))
|
||||
|
||||
@decorated_message("Cleaning up")
|
||||
def cleanup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.remove_file(self._tmpdir, True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = TestLongPathInArchive()
|
||||
try:
|
||||
test.prepare_setup()
|
||||
test.start_test()
|
||||
except AssertionError, exp:
|
||||
test.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test.cleanup()
|
||||
|
|
@ -1,140 +0,0 @@
|
|||
# Author: Josef Zila <jzila@redhat.com>
|
||||
# Location: CoreOS/zip/Functionality/stress-tests/many-files-in-archive/runtest.sh
|
||||
# Description: zip - Tests behaviour with many files in archive (1048578 files)
|
||||
|
||||
# Copyright (c) 2008 Red Hat, Inc. All rights reserved. This copyrighted material
|
||||
# is made available to anyone wishing to use, modify, copy, or
|
||||
# redistribute it subject to the terms and conditions of the GNU General
|
||||
# Public License v.2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''
|
||||
Test Name:
|
||||
Author: Josef Zila <jzila@redhat.com>
|
||||
Location: CoreOS/zip/Functionality/stress-tests/many-files-in-archive/PURPOSE
|
||||
|
||||
Short Description:
|
||||
Tests behaviour with many files in archive (1048577 files)
|
||||
|
||||
Long Description:
|
||||
This test creates 1048576 empty files and one non-empty file. Then zips and unzips directory containing all those files and tests content of
|
||||
non-empty file and count of unzipped files. This test is very time-consuming. Current version of zip on all archs and distros in time of writing
|
||||
(2.31-1) passes test.
|
||||
|
||||
|
||||
how to run it:
|
||||
choose arch and distro
|
||||
|
||||
|
||||
TEST UPDATED (esakaiev)
|
||||
'''
|
||||
|
||||
|
||||
class TestManyFilesInArchive(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for TestManyFilesInArchive test case
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self._purpose = PURPOSE
|
||||
super(TestManyFilesInArchive, self).__init__()
|
||||
|
||||
self._tmpdir = "/tmp/{}".format(uuid.uuid4())
|
||||
self._files_number = 1048576
|
||||
self._package_ver = ""
|
||||
self._package_release = ""
|
||||
|
||||
@decorated_message("Prepare setup")
|
||||
def prepare_setup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.check_package()
|
||||
|
||||
self.run_cmd("mkdir {}".format(self._tmpdir), 0,
|
||||
"Creating tmp directory {}".format(self._tmpdir))
|
||||
self._package_ver = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
self._package_release = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
|
||||
self.logger.debug("Running zip.{0}.{1} package".format(self._package_ver, self._package_release))
|
||||
self.logger.debug("Creating {0} files".format(self._files_number))
|
||||
|
||||
[open("{0}/{1}".format(self._tmpdir, i), "w").close() for i in xrange(self._files_number)]
|
||||
self.logger.debug("Creating test file")
|
||||
with open("{0}/test.txt".format(self._tmpdir), "w") as fp:
|
||||
fp.write("12345")
|
||||
|
||||
@decorated_message("Starting Test cases")
|
||||
def start_test(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
|
||||
self.run_cmd("zip -r test {0} -q".format(self._tmpdir.split('/')[-1]), 0,
|
||||
"Zipping test files",
|
||||
cwd='/tmp')
|
||||
|
||||
self.remove_file(self._tmpdir, True)
|
||||
self.run_cmd("unzip -qq test.zip", 0,
|
||||
"Unzipping test files",
|
||||
cwd='/tmp')
|
||||
|
||||
test_file_content = None
|
||||
with open("{0}/test.txt".format(self._tmpdir)) as fp:
|
||||
test_file_content = fp.read().replace('/n', '')
|
||||
|
||||
if test_file_content == "12345":
|
||||
self.logger.debug("PASS ] :: [ {}".format("Unpacked content matches original"))
|
||||
else:
|
||||
self.logger.debug("FAIL ] :: [ {}".format("Unpacked content does not match original!"))
|
||||
|
||||
files_count = self.execute_cmd("ls {0} | wc -l".format(self._tmpdir)).replace("\n", "")
|
||||
|
||||
if files_count == str(self._files_number + 1):
|
||||
self.logger.debug(
|
||||
"PASS ] :: [ {}".format("All {0} files present after unpacking".format(self._files_number + 1)))
|
||||
else:
|
||||
self.logger.debug(r"FAIL ] :: [ File count changed after unpacking! \
|
||||
Before zipping there was {0} files. \
|
||||
After unzip there is {1} files.".format(self._files_number + 1, files_count))
|
||||
|
||||
@decorated_message("Cleaning up")
|
||||
def cleanup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.remove_file(self._tmpdir, True)
|
||||
self.remove_file("/tmp/test.zip")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = TestManyFilesInArchive()
|
||||
try:
|
||||
test.prepare_setup()
|
||||
test.start_test()
|
||||
except AssertionError, exp:
|
||||
test.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test.cleanup()
|
||||
|
|
@ -1,106 +0,0 @@
|
|||
# Copyright (c) 2006 Red Hat, Inc. All rights reserved. This copyrighted material
|
||||
# is made available to anyone wishing to use, modify, copy, or
|
||||
# redistribute it subject to the terms and conditions of the GNU General
|
||||
# Public License v.2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# Author: Radek Biba <rbiba@redhat.com>
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
UMASK = "Running umask"
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''
|
||||
zip is supposed to honor umask settings when creating archives.
|
||||
This test case just checks if it really does
|
||||
|
||||
TEST UPDATED (esakaiev)
|
||||
'''
|
||||
|
||||
|
||||
class TestUmask(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for TestUmask test case
|
||||
"""
|
||||
def __init__(self):
|
||||
self._purpose = PURPOSE
|
||||
super(TestUmask, self).__init__()
|
||||
|
||||
self._tmpdir = "/tmp/{}".format(uuid.uuid4())
|
||||
self._mask_list = ["0", "2", "20", "22", "200", "202", "220", "222", "6", "60"]
|
||||
self._package_ver = ""
|
||||
self._package_release = ""
|
||||
|
||||
@decorated_message("Prepare setup")
|
||||
def prepare_setup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.check_package()
|
||||
|
||||
self.run_cmd("mkdir {}".format(self._tmpdir), 0, "Creating tmp directory {}".format(self._tmpdir))
|
||||
self._package_ver = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
self._package_release = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
|
||||
self.logger.debug("Running zip.{0}.{1} package".format(self._package_ver, self._package_release))
|
||||
|
||||
# Trying to verify that zip honors umask. Trying with various combinations
|
||||
# of 'w's and 'r's for User, Group, and Others.
|
||||
@decorated_message("Starting Test cases")
|
||||
def start_test(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
for mask in self._mask_list:
|
||||
self.logger.debug("Running umask and zipping file {0}".format(mask))
|
||||
self.execute_cmd("umask {0}; touch {0}; zip -q {0}.zip {0}".format(mask), cwd=self._tmpdir)
|
||||
|
||||
stat_test_zip = self.execute_cmd("stat -c %a {0}.zip".format(mask), cwd=self._tmpdir).replace("\n", "")
|
||||
stat_test = self.execute_cmd("stat -c %a {0}".format(mask), cwd=self._tmpdir).replace("\n", "")
|
||||
|
||||
print stat_test_zip, stat_test
|
||||
if stat_test_zip == stat_test:
|
||||
self.logger.debug(
|
||||
"PASS ] :: [ permissions for {0}.zip match to {0}, {1} == {2}".format(mask, stat_test_zip,
|
||||
stat_test))
|
||||
else:
|
||||
self.logger.debug(
|
||||
"FAIL ] :: [ permissions for {0}.zip doesn't match to {0}, {1} != {2}".format(mask, stat_test_zip,
|
||||
stat_test))
|
||||
|
||||
@decorated_message("Cleaning up")
|
||||
def cleanup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.remove_file(self._tmpdir, True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = TestUmask()
|
||||
try:
|
||||
test.prepare_setup()
|
||||
test.start_test()
|
||||
except AssertionError, exp:
|
||||
test.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test.cleanup()
|
||||
|
|
@ -1,105 +0,0 @@
|
|||
# Author: Josef Zila <jzila@redhat.com>
|
||||
|
||||
# Description: Zip did not honor umask setting when creating archives.
|
||||
|
||||
# Copyright (c) 2008 Red Hat, Inc. All rights reserved. This copyrighted material
|
||||
# is made available to anyone wishing to use, modify, copy, or
|
||||
# redistribute it subject to the terms and conditions of the GNU General
|
||||
# Public License v.2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
UMASK = "Running umask"
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''
|
||||
Test Name: umask-when-creating
|
||||
Author: Josef Zila <jzila@redhat.com>
|
||||
|
||||
Short Description:
|
||||
zip does not honor umaks setting when creating archive
|
||||
|
||||
Long Description:
|
||||
|
||||
zip appears to have a built-in umask of 0022 regardless of the global umask.
|
||||
With umask set to 0000, zip-2.3-27 creates zip files with permissions of
|
||||
0644 instead of 0666. Previous versions created files with correct permissions.
|
||||
|
||||
|
||||
TEST UPDATED (esakaiev)
|
||||
'''
|
||||
|
||||
|
||||
class TestUmaskWhenCreating(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for TestUmaskWhenCreating test case
|
||||
"""
|
||||
def __init__(self):
|
||||
self._purpose = PURPOSE
|
||||
super(TestUmaskWhenCreating, self).__init__()
|
||||
|
||||
self._tmpdir = "/tmp/{}".format(uuid.uuid4())
|
||||
self._mask_list = ["777", "000", "027"]
|
||||
self._expected_results = ["----------", "-rw-rw-rw-", "-rw-r-----"]
|
||||
self._package_ver = ""
|
||||
self._package_release = ""
|
||||
|
||||
@decorated_message("Prepare setup")
|
||||
def prepare_setup(self):
|
||||
self.check_package()
|
||||
|
||||
self.run_cmd("mkdir {}".format(self._tmpdir), 0, "Creating tmp directory {}".format(self._tmpdir))
|
||||
self._package_ver = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
self._package_release = self.execute_cmd("rpm -q zip --queryformat %{version}")
|
||||
|
||||
self.logger.debug("Running zip.{0}.{1} package".format(self._package_ver, self._package_release))
|
||||
|
||||
@decorated_message("Starting Test cases")
|
||||
def start_test(self):
|
||||
for i, mask in enumerate(self._mask_list):
|
||||
self.logger.debug("Running umask and zipping file {0}".format(mask))
|
||||
self.execute_cmd("umask -S {0} >> /dev/null; zip test /etc/services >> /dev/null".format(mask),
|
||||
cwd=self._tmpdir)
|
||||
|
||||
result = self.execute_cmd("ls -l test.zip | cut -b 1-10", cwd=self._tmpdir).replace("\n", "")
|
||||
|
||||
if result == self._expected_results[i]:
|
||||
self.logger.debug(
|
||||
"PASS ] :: [ file permissions match to {0}".format(self._expected_results[i]))
|
||||
else:
|
||||
self.logger.debug(
|
||||
"FAIL ] :: [ file permissions don't match to {0}".format(self._expected_results[i]))
|
||||
|
||||
self.remove_file(self._tmpdir + "/" + "test.zip")
|
||||
|
||||
@decorated_message("Cleaning up")
|
||||
def cleanup(self):
|
||||
self.remove_file(self._tmpdir, True)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = TestUmaskWhenCreating()
|
||||
try:
|
||||
test.prepare_setup()
|
||||
test.start_test()
|
||||
except AssertionError, exp:
|
||||
test.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test.cleanup()
|
||||
|
|
@ -1,105 +0,0 @@
|
|||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Description: zipnote fails to update the archive
|
||||
# Author: Karel Volny <kvolny@redhat.com>
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
#
|
||||
# Copyright (c) 2015 Red Hat, Inc.
|
||||
#
|
||||
# This copyrighted material is made available to anyone wishing
|
||||
# to use, modify, copy, or redistribute it subject to the terms
|
||||
# and conditions of the GNU General Public License version 2.
|
||||
#
|
||||
# This program is distributed in the hope that it will be
|
||||
# useful, but WITHOUT ANY WARRANTY; without even the implied
|
||||
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
# PURPOSE. See the GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free
|
||||
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
# Boston, MA 02110-1301, USA.
|
||||
#
|
||||
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
import sys
|
||||
import uuid
|
||||
|
||||
sys.path.append("..")
|
||||
|
||||
from tests import BaseZipTests
|
||||
from tests import decorated_message
|
||||
|
||||
PURPOSE = '''
|
||||
PURPOSE of zipnote-fails-to-update-the-archive
|
||||
Description: zipnote fails to update the archive
|
||||
Author: Karel Volny <kvolny@redhat.com>
|
||||
|
||||
|
||||
TEST UPDATED (esakaiev)
|
||||
'''
|
||||
|
||||
|
||||
class TestZipnoteFailsToUpdateTheArchive(BaseZipTests):
|
||||
"""
|
||||
This class is used for providing functionality
|
||||
for TestZipnoteFailsToUpdateTheArchive test case
|
||||
"""
|
||||
def __init__(self):
|
||||
self._purpose = PURPOSE
|
||||
super(TestZipnoteFailsToUpdateTheArchive, self).__init__()
|
||||
|
||||
self._tmpdir = '/tmp/tmp.{}'.format(uuid.uuid4())
|
||||
|
||||
@decorated_message("Preparing setup")
|
||||
def prepare_setup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.check_package()
|
||||
self.run_cmd("mkdir {}".format(self._tmpdir), 0, "Creating tmp directory {}".format(self._tmpdir))
|
||||
|
||||
@decorated_message("Starting Test")
|
||||
def start_test(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.run_cmd("touch file", 0, "Creating the Demo file", cwd=self._tmpdir)
|
||||
self.run_cmd("zip archive.zip file", 0, "Creating the archive including the file", cwd=self._tmpdir)
|
||||
self.run_cmd("zipnote archive.zip > info.txt", 0, "Reading the archive comments", cwd=self._tmpdir)
|
||||
## bad - e.g. zip-3.0-1.el6.i686:
|
||||
# zipnote error: Interrupted (aborting)
|
||||
# Segmentation fault
|
||||
## good: no output
|
||||
self.run_cmd("zipnote -w archive.zip < info.txt > output_file.txt 2>&1", 0, "Writing comments to the archive",
|
||||
cwd=self._tmpdir)
|
||||
|
||||
if 'error' in open(self._tmpdir + '/output_file.txt').read():
|
||||
self.logger.debug("FAIL ] :: [ File shouldn't contain an error pattern")
|
||||
else:
|
||||
self.logger.debug("PASS ] :: [ File doesn't contain an error pattern")
|
||||
|
||||
@decorated_message("Cleaning up")
|
||||
def cleanup(self):
|
||||
"""
|
||||
|
||||
:return:
|
||||
"""
|
||||
self.run_cmd("rm -r {}".format(self._tmpdir), 0,
|
||||
"Removing tmp directory")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
test = TestZipnoteFailsToUpdateTheArchive()
|
||||
try:
|
||||
test.prepare_setup()
|
||||
test.start_test()
|
||||
except AssertionError, exp:
|
||||
test.logger.debug("FAIL ] :: [ Assertion occurred {0}".format(exp))
|
||||
except Exception, exp:
|
||||
test.logger.debug("FAIL ] :: [ Exception occurred {0}".format(exp))
|
||||
finally:
|
||||
test.cleanup()
|
||||
11
zip-2.3-currdir.patch
Normal file
11
zip-2.3-currdir.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- zip-2.3/util.c.pom 1999-11-07 11:29:38.000000000 +0100
|
||||
+++ zip-2.3/util.c 2005-01-17 13:46:26.165396792 +0100
|
||||
@@ -190,6 +190,8 @@
|
||||
/* Compare the sh pattern p with the string s and return true if they match,
|
||||
false if they don't or if there is a syntax error in the pattern. */
|
||||
{
|
||||
+ while (s[0] == '.' && s[1] == '/')
|
||||
+ s += 2; /* strip redundant leading "./" sections */
|
||||
return recmatch((ZCONST uch *) p, (ZCONST uch *) s, cs) == 1;
|
||||
}
|
||||
|
||||
11
zip-2.3-sf.patch
Normal file
11
zip-2.3-sf.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- zip-2.3/unix/unix.c.pom 2006-10-09 16:24:47.000000000 +0200
|
||||
+++ zip-2.3/unix/unix.c 2006-10-09 17:14:18.000000000 +0200
|
||||
@@ -208,7 +208,7 @@
|
||||
doesn't collide with error values. 2^32 - 8193 should be plenty until
|
||||
info-zip supports zip64. */
|
||||
if (s.st_size > MAX_ZIP_SIZE) {
|
||||
- zipwarn("file too large: ", a);
|
||||
+ zipwarn("file too large: ", n);
|
||||
return ZE_MISS;
|
||||
}
|
||||
|
||||
213
zip-2.31-configure.patch
Normal file
213
zip-2.31-configure.patch
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
--- zip-2.31/unix/configure.lhh 2005-11-10 13:25:26.000000000 +0100
|
||||
+++ zip-2.31/unix/configure 2005-11-10 13:40:44.311641648 +0100
|
||||
@@ -76,14 +76,20 @@
|
||||
done
|
||||
fi
|
||||
|
||||
-echo Check for prototypes
|
||||
+echo -n Check for prototypes...
|
||||
echo "int main(int argc, char *argv[]) { return 0; }" > conftest.c
|
||||
$CC $CFLAGS -c conftest.c > /dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_PROTO"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_PROTO"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
+
|
||||
|
||||
# const check currently handles mips cc and non ANSI compilers.
|
||||
# does it need more ?
|
||||
-echo Check the handling of const
|
||||
+echo -n Check the handling of const...
|
||||
cat > conftest.c << _EOF_
|
||||
typedef int charset[2];
|
||||
int main()
|
||||
@@ -94,9 +100,15 @@
|
||||
}
|
||||
_EOF_
|
||||
$CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_CONST"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_CONST"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
+
|
||||
|
||||
-echo Check for time_t
|
||||
+echo -n Check for time_t...
|
||||
cat > conftest.c << _EOF_
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
@@ -107,9 +119,15 @@
|
||||
}
|
||||
_EOF_
|
||||
$CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_TIME_T"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_TIME_T"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
+
|
||||
|
||||
-echo Check for size_t
|
||||
+echo -n Check for size_t...
|
||||
cat > conftest.c << _EOF_
|
||||
#include <sys/types.h>
|
||||
int main()
|
||||
@@ -119,7 +137,13 @@
|
||||
}
|
||||
_EOF_
|
||||
$CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_SIZE_T"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_SIZE_T"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
+
|
||||
|
||||
echo Check for gcc no-builtin flag
|
||||
# -fno-builtin since version 2
|
||||
@@ -140,18 +164,29 @@
|
||||
# add NO_'function_name' to flags if missing
|
||||
for func in rmdir strchr strrchr rename mktemp mktime mkstemp
|
||||
do
|
||||
- echo Check for $func
|
||||
- echo "int main(){ $func(); return 0; }" > conftest.c
|
||||
+ echo -n Check for $func...
|
||||
+ echo "char $func(void); int main(){ $func(); return 0; }" > conftest.c
|
||||
$CC $BFLAG -o conftest conftest.c >/dev/null 2>/dev/null
|
||||
- [ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`"
|
||||
+ if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_`echo $func | tr '[a-z]' '[A-Z]'`"
|
||||
+ else
|
||||
+ echo yes
|
||||
+ fi
|
||||
done
|
||||
|
||||
-echo Check for memset
|
||||
+echo -n Check for memset...
|
||||
echo "int main(){ char k; memset(&k,0,0); return 0; }" > conftest.c
|
||||
$CC -o conftest conftest.c >/dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DZMEM"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DZMEM"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
+
|
||||
|
||||
-echo Check for errno declaration
|
||||
+echo -n Check for errno declaration...
|
||||
cat > conftest.c << _EOF_
|
||||
#include <errno.h>
|
||||
main()
|
||||
@@ -161,9 +196,14 @@
|
||||
}
|
||||
_EOF_
|
||||
$CC $CFLAGS -c conftest.c >/dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_ERRNO"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_ERRNO"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
|
||||
-echo Check for directory libraries
|
||||
+echo -n Check for directory libraries...
|
||||
cat > conftest.c << _EOF_
|
||||
int main() { return closedir(opendir(".")); }
|
||||
_EOF_
|
||||
@@ -178,21 +218,30 @@
|
||||
done
|
||||
if [ ${OPT} ]; then
|
||||
LFLAGS2="${LFLAGS2} ${OPT}"
|
||||
+ echo yes, ${OPT}
|
||||
else
|
||||
CFLAGS="${CFLAGS} -DNO_DIR"
|
||||
+ echo no
|
||||
fi
|
||||
fi
|
||||
|
||||
# Dynix/ptx 1.3 needed this
|
||||
-echo Check for readlink
|
||||
+echo -n Check for readlink...
|
||||
echo "int main(){ return readlink(); }" > conftest.c
|
||||
$CC -o conftest conftest.c >/dev/null 2>/dev/null
|
||||
if [ $? -ne 0 ]; then
|
||||
$CC -o conftest conftest.c -lseq >/dev/null 2>/dev/null
|
||||
- [ $? -eq 0 ] && LFLAGS2="${LFLAGS2} -lseq"
|
||||
+ if [ $? -eq 0 ]; then
|
||||
+ LFLAGS2="${LFLAGS2} -lseq"
|
||||
+ echo yes, -lseq
|
||||
+ else
|
||||
+ echo no
|
||||
+ fi
|
||||
+else
|
||||
+ echo yes
|
||||
fi
|
||||
|
||||
-echo Check for directory include file
|
||||
+echo -n Check for directory include file...
|
||||
OPT=""
|
||||
for inc in dirent.h sys/ndir.h ndir.h sys/dir.h
|
||||
do
|
||||
@@ -200,17 +249,19 @@
|
||||
$CPP conftest.c > /dev/null 2>/dev/null
|
||||
[ $? -eq 0 ] && OPT="-DHAVE_`echo $inc | tr '[a-z]./' '[A-Z]__'`" && break
|
||||
done
|
||||
+echo "${OPT}"
|
||||
CFLAGS="${CFLAGS} ${OPT}"
|
||||
|
||||
-echo Check for non existent include files
|
||||
+echo -n Check for non existent include files...
|
||||
for inc in stdlib.h stddef.h unistd.h fcntl.h string.h
|
||||
do
|
||||
echo "#include <$inc>" > conftest.c
|
||||
$CPP conftest.c >/dev/null 2>/dev/null
|
||||
[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_`echo $inc | tr '[a-z]./' '[A-Z]__'`"
|
||||
done
|
||||
+echo ok
|
||||
|
||||
-echo Check for terminal I/O include file
|
||||
+echo -n Check for terminal I/O include file...
|
||||
OPT=""
|
||||
for inc in termios.h termio.h sgtty.h
|
||||
do
|
||||
@@ -219,9 +270,10 @@
|
||||
[ $? -eq 0 ] && OPT="-DHAVE_`echo $inc | tr '[a-z]./' '[A-Z]__'`" && break
|
||||
done
|
||||
CFLAGS="${CFLAGS} ${OPT}"
|
||||
+echo $OPT
|
||||
|
||||
# needed for AIX (and others ?) when mmap is used
|
||||
-echo Check for valloc
|
||||
+echo -n Check for valloc...
|
||||
cat > conftest.c << _EOF_
|
||||
main()
|
||||
{
|
||||
@@ -231,7 +283,13 @@
|
||||
}
|
||||
_EOF_
|
||||
$CC ${CFLAGS} conftest.c > /dev/null 2>/dev/null
|
||||
-[ $? -ne 0 ] && CFLAGS="${CFLAGS} -DNO_VALLOC"
|
||||
+if [ $? -ne 0 ]; then
|
||||
+ echo no
|
||||
+ CFLAGS="${CFLAGS} -DNO_VALLOC"
|
||||
+else
|
||||
+ echo yes
|
||||
+fi
|
||||
+
|
||||
|
||||
echo Check for 64bit fseek
|
||||
for func in fseeko fseek64
|
||||
11
zip-2.31-install.patch
Normal file
11
zip-2.31-install.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- zip-2.31/unix/Makefile.install 2005-02-28 08:33:50.000000000 +0100
|
||||
+++ zip-2.31/unix/Makefile 2005-11-10 12:58:33.221425848 +0100
|
||||
@@ -129,7 +129,7 @@
|
||||
$(INSTALL_PROGRAM) $(ZIPS) $(BINDIR)
|
||||
-cd $(BINDIR); $(CHMOD) $(BINFLAGS) $(ZIPS)
|
||||
-$(INSTALL_D) $(MANDIR)
|
||||
- $(INSTALL) man/zip.1 $(MANDIR)/zip.$(manext)
|
||||
+ $(INSTALL_PROGRAM) man/zip.1 $(MANDIR)/zip.$(manext)
|
||||
$(CHMOD) $(MANFLAGS) $(MANDIR)/zip.$(manext)
|
||||
|
||||
uninstall:
|
||||
293
zip-2.31-near-4GB.patch
Normal file
293
zip-2.31-near-4GB.patch
Normal file
|
|
@ -0,0 +1,293 @@
|
|||
--- zip-2.31/unix/zipup.h.4GB 2005-01-29 07:47:58.000000000 +0100
|
||||
+++ zip-2.31/unix/zipup.h 2005-11-10 13:18:02.990593904 +0100
|
||||
@@ -6,13 +6,19 @@
|
||||
If, for some reason, both of these files are missing, the Info-ZIP license
|
||||
also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
|
||||
*/
|
||||
+#include <features.h>
|
||||
+#include <fcntl.h>
|
||||
#ifndef O_RDONLY
|
||||
# define O_RDONLY 0
|
||||
#endif
|
||||
#ifndef O_BINARY
|
||||
# define O_BINARY 0
|
||||
#endif
|
||||
-#define fhow (O_RDONLY|O_BINARY)
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+#define fhow (O_RDONLY | O_LARGEFILE)
|
||||
+#else
|
||||
+#define fhow O_RDONLY
|
||||
+#endif
|
||||
#define fbad (-1)
|
||||
typedef int ftype;
|
||||
#define zopen(n,p) open(n,p)
|
||||
--- zip-2.31/unix/unix.c.4GB 2005-02-11 03:35:02.000000000 +0100
|
||||
+++ zip-2.31/unix/unix.c 2005-11-10 13:24:19.573344624 +0100
|
||||
@@ -113,7 +113,11 @@
|
||||
char *e; /* pointer to name from readd() */
|
||||
int m; /* matched flag */
|
||||
char *p; /* path for recursion */
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+ struct stat64 s; /* result of stat() */
|
||||
+#else
|
||||
struct stat s; /* result of stat() */
|
||||
+#endif
|
||||
struct zlist far *z; /* steps through zfiles list */
|
||||
|
||||
if (strcmp(n, "-") == 0) /* if compressing stdin */
|
||||
@@ -202,6 +206,15 @@
|
||||
} /* (s.st_mode & S_IFDIR) */
|
||||
else
|
||||
zipwarn("ignoring special file: ", n);
|
||||
+
|
||||
+ /* Zip uses negative error codes (IIRC, to -3). Make sure file size
|
||||
+ doesn't collide with error values. 2^32 - 8193 should be plenty until
|
||||
+ info-zip supports zip64. */
|
||||
+ if (s.st_size > MAX_ZIP_SIZE) {
|
||||
+ zipwarn("file too large: ", a);
|
||||
+ return ZE_MISS;
|
||||
+ }
|
||||
+
|
||||
return ZE_OK;
|
||||
}
|
||||
|
||||
@@ -321,7 +334,12 @@
|
||||
If f is "-", use standard input as the file. If f is a device, return
|
||||
a file size of -1 */
|
||||
{
|
||||
- struct stat s; /* results of stat() */
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+ struct stat64 s; /* results of stat() */
|
||||
+#else
|
||||
+ struct stat s;
|
||||
+#endif
|
||||
+
|
||||
/* converted to pointer from using FNMAX - 11/8/04 EG */
|
||||
char *name;
|
||||
int len = strlen(f);
|
||||
@@ -343,7 +361,11 @@
|
||||
name[len - 1] = '\0';
|
||||
/* not all systems allow stat'ing a file with / appended */
|
||||
if (strcmp(f, "-") == 0) {
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+ if (fstat64(fileno(stdin), &s) != 0) {
|
||||
+#else
|
||||
if (fstat(fileno(stdin), &s) != 0) {
|
||||
+#endif
|
||||
free(name);
|
||||
error("fstat(stdin)");
|
||||
}
|
||||
@@ -422,7 +444,11 @@
|
||||
/* store full data in local header but just modification time stamp info
|
||||
in central header */
|
||||
{
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+ struct stat64 s;
|
||||
+#else
|
||||
struct stat s;
|
||||
+#endif
|
||||
char *name;
|
||||
int len = strlen(z->name);
|
||||
|
||||
--- zip-2.31/unix/configure.4GB 2004-12-05 09:51:18.000000000 +0100
|
||||
+++ zip-2.31/unix/configure 2005-11-10 13:12:47.010630160 +0100
|
||||
@@ -12,7 +12,7 @@
|
||||
trap "rm -f conftest* core a.out; exit 1" 1 2 3 15
|
||||
|
||||
CC=${1-cc}
|
||||
-CFLAGS=${2-"-O2 -I. -DUNIX"}
|
||||
+CFLAGS=${2-"-O2 -I. -DUNIX -g -D_LARGEFILE64_SOURCE"}
|
||||
LFLAGS1=""
|
||||
LN="ln -s"
|
||||
|
||||
--- zip-2.31/fileio.c.4GB 2005-11-10 12:59:43.000000000 +0100
|
||||
+++ zip-2.31/fileio.c 2005-11-10 13:07:13.190378552 +0100
|
||||
@@ -599,7 +599,11 @@
|
||||
this will be done by setfileattr() later.
|
||||
*/
|
||||
{
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+ struct stat64 t; /* results of stat64() */
|
||||
+#else
|
||||
struct stat t; /* results of stat() */
|
||||
+#endif
|
||||
#if defined(CMS_MVS)
|
||||
/* cmsmvs.h defines FOPW_TEMP as memory(hiperspace). Since memory is
|
||||
* lost at end of run, always do copy instead of rename.
|
||||
@@ -698,8 +702,11 @@
|
||||
|
||||
return _dos_files(&buf, f, 0xff) < 0 ? 0x20 : buf.atr;
|
||||
#else
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+ struct stat64 s;
|
||||
+#else
|
||||
struct stat s;
|
||||
-
|
||||
+#endif
|
||||
return SSTAT(f, &s) == 0 ? (int) s.st_mode : 0;
|
||||
#endif
|
||||
}
|
||||
@@ -920,3 +927,108 @@
|
||||
}
|
||||
|
||||
#endif /* NO_RENAME */
|
||||
+
|
||||
+/*
|
||||
+ Wrapper functions for fopen/fseek/ftell for >2GB files.
|
||||
+
|
||||
+ So, what we do here is add support for 4GB seeks. More appropriately,
|
||||
+ 2^32 - 8193 bytes. This is tailored to the way zip uses fseek; it never
|
||||
+ seeks backwards more than 8192 bytes.
|
||||
+ */
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+FILE *
|
||||
+lfopen(const char *path, const char *mode)
|
||||
+{
|
||||
+ int fd;
|
||||
+ FILE *f;
|
||||
+ int flags;
|
||||
+ int x;
|
||||
+ char prev;
|
||||
+
|
||||
+ if (!path || !mode | !strlen(mode))
|
||||
+ return NULL;
|
||||
+
|
||||
+ for (x = 0; x < strlen(mode); x++) {
|
||||
+ switch (mode[x]) {
|
||||
+ case 'r':
|
||||
+ flags = O_RDONLY | O_LARGEFILE;
|
||||
+ break;
|
||||
+ case 'w':
|
||||
+ flags = O_WRONLY | O_LARGEFILE | O_CREAT | O_TRUNC;
|
||||
+ break;
|
||||
+ case 'a':
|
||||
+ flags = O_RDWR | O_LARGEFILE;
|
||||
+ break;
|
||||
+ case 'b': /* b has no effect */
|
||||
+ continue;
|
||||
+ case '+':
|
||||
+ if (prev == 'r') {
|
||||
+ flags = O_RDWR | O_LARGEFILE;
|
||||
+ } else if (prev == 'w') {
|
||||
+ flags = O_RDWR | O_LARGEFILE | O_CREAT |
|
||||
+ O_TRUNC;
|
||||
+ } else if (prev == 'a') {
|
||||
+ flags = O_RDWR | O_LARGEFILE | O_CREAT;
|
||||
+ } else
|
||||
+ return NULL;
|
||||
+ break;
|
||||
+ }
|
||||
+ prev = mode[x];
|
||||
+ }
|
||||
+
|
||||
+ fd = open(path, flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||
+ if (fd == -1)
|
||||
+ return NULL;
|
||||
+
|
||||
+ f = fdopen(fd, mode);
|
||||
+ return f;
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+lfseek(FILE *f, ulg pos, int whence)
|
||||
+{
|
||||
+ struct stat64 sb;
|
||||
+ ulg o, delta;
|
||||
+ int ret;
|
||||
+
|
||||
+ /* Hurts performance */
|
||||
+ fflush(f);
|
||||
+
|
||||
+ if (pos <= MAX_ZIP_SIZE) {
|
||||
+ return (lseek64(fileno(f), pos, whence) == (off64_t)-1);
|
||||
+ }
|
||||
+
|
||||
+ delta = ~((off64_t)pos - 1);
|
||||
+ if (whence == SEEK_CUR) {
|
||||
+ o = lseek64(fileno(f), 0, SEEK_CUR);
|
||||
+ if (o < delta)
|
||||
+ return -1;
|
||||
+
|
||||
+ o -= delta;
|
||||
+ return (lseek64(fileno(f), o, SEEK_SET) == (off64_t)-1);
|
||||
+ }
|
||||
+
|
||||
+ if (whence == SEEK_END) {
|
||||
+ fstat64(fileno(f), &sb);
|
||||
+
|
||||
+ if ((ulg)sb.st_size < delta)
|
||||
+ return -1;
|
||||
+
|
||||
+ o = (off64_t)((sb.st_size) - delta);
|
||||
+ return (lseek64(fileno(f), o, SEEK_SET) == (off64_t)-1);
|
||||
+ }
|
||||
+
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+
|
||||
+ulg
|
||||
+lftell(FILE *f)
|
||||
+{
|
||||
+ /* Hurts performance */
|
||||
+ fflush(f);
|
||||
+ return (ulg)lseek64(fileno(f), 0, SEEK_CUR);
|
||||
+}
|
||||
+
|
||||
+#endif /* _LARGEFILE64_SOURCE */
|
||||
+
|
||||
--- zip-2.31/zip.h.4GB 2005-11-10 12:59:43.000000000 +0100
|
||||
+++ zip-2.31/zip.h 2005-11-10 13:18:57.653283912 +0100
|
||||
@@ -236,6 +236,7 @@
|
||||
#define DOSTIME_MINIMUM ((ulg)0x00210000L)
|
||||
#define DOSTIME_2038_01_18 ((ulg)0x74320000L)
|
||||
|
||||
+#define MAX_ZIP_SIZE 0xffffdffe /* Max archive / archive member size */
|
||||
|
||||
/* Public globals */
|
||||
extern uch upper[256]; /* Country dependent case map table */
|
||||
@@ -411,6 +412,11 @@
|
||||
int putcentral OF((struct zlist far *, FILE *));
|
||||
int putend OF((int, ulg, ulg, extent, char *, FILE *));
|
||||
int zipcopy OF((struct zlist far *, FILE *, FILE *));
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+int lfseek OF((FILE *, ulg, int));
|
||||
+ulg lftell OF((FILE *));
|
||||
+FILE *lfopen OF((const char *, const char *));
|
||||
+#endif /* LF64 */
|
||||
|
||||
/* in fileio.c */
|
||||
#ifndef UTIL
|
||||
--- zip-2.31/tailor.h.4GB 2005-03-04 08:45:26.000000000 +0100
|
||||
+++ zip-2.31/tailor.h 2005-11-10 13:11:18.909023640 +0100
|
||||
@@ -368,12 +368,27 @@
|
||||
# define DYN_ALLOC
|
||||
#endif
|
||||
|
||||
+#ifdef _LARGEFILE64_SOURCE
|
||||
+#define fopen lfopen
|
||||
+#define fseek lfseek
|
||||
+#define ftell lftell
|
||||
+#endif /* LF64 */
|
||||
+
|
||||
#ifndef SSTAT
|
||||
-# define SSTAT stat
|
||||
+# ifdef _LARGEFILE64_SOURCE
|
||||
+# define SSTAT stat64
|
||||
+# else
|
||||
+# define SSTAT stat
|
||||
+# endif /* LF64 */
|
||||
#endif
|
||||
#ifdef S_IFLNK
|
||||
-# define LSTAT lstat
|
||||
-# define LSSTAT(n, s) (linkput ? lstat((n), (s)) : SSTAT((n), (s)))
|
||||
+# ifdef _LARGEFILE64_SOURCE
|
||||
+# define LSTAT lstat64
|
||||
+# define LSSTAT(n, s) (linkput ? lstat64((n), (s)) : SSTAT((n), (s)))
|
||||
+# else
|
||||
+# define LSTAT lstat64
|
||||
+# define LSSTAT(n, s) (linkput ? lstat64((n), (s)) : SSTAT((n), (s)))
|
||||
+# endif /* LF64 */
|
||||
#else
|
||||
# define LSTAT SSTAT
|
||||
# define LSSTAT SSTAT
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
--- zip-2.31/unix/Makefile.time 2007-02-07 09:36:30.000000000 +0100
|
||||
+++ zip-2.31/unix/Makefile 2007-02-07 09:38:42.000000000 +0100
|
||||
@@ -24,7 +24,7 @@
|
||||
E =
|
||||
EXE =
|
||||
|
||||
# probably can change this to 'install' if you have it
|
||||
-INSTALL_PROGRAM = cp
|
||||
12
zip-2.31-umask_mode.patch
Normal file
12
zip-2.31-umask_mode.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -up zip-2.31/fileio.c.pom zip-2.31/fileio.c
|
||||
--- zip-2.31/fileio.c.pom 2007-11-05 14:02:41.000000000 +0100
|
||||
+++ zip-2.31/fileio.c 2007-11-05 14:03:09.000000000 +0100
|
||||
@@ -976,7 +976,7 @@ lfopen(const char *path, const char *mod
|
||||
prev = mode[x];
|
||||
}
|
||||
|
||||
- fd = open(path, flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
|
||||
+ fd = open(path, flags, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
|
||||
if (fd == -1)
|
||||
return NULL;
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff -up zip30/util.c.currdir zip30/util.c
|
||||
--- zip30/util.c.currdir 2009-11-16 12:42:17.783961701 +0100
|
||||
+++ zip30/util.c 2009-11-16 12:42:58.185960707 +0100
|
||||
@@ -493,6 +493,8 @@ int cs; /* force case-se
|
||||
/* Compare the sh pattern p with the string s and return true if they match,
|
||||
false if they don't or if there is a syntax error in the pattern. */
|
||||
{
|
||||
+ while (s[0] == '.' && s[1] == '/')
|
||||
+ s += 2; /* strip redundant leading "./" sections */
|
||||
return recmatch(p, s, cs) == 1;
|
||||
}
|
||||
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
diff -up zip30/crc_i386.S.exec_shield zip30/crc_i386.S
|
||||
--- zip30/crc_i386.S.exec_shield 2009-11-13 18:37:45.000000000 +0100
|
||||
+++ zip30/crc_i386.S 2009-11-13 18:39:54.435390166 +0100
|
||||
@@ -302,3 +302,6 @@ _crc32: /* ulg c
|
||||
#endif /* i386 || _i386 || _I386 || __i386 */
|
||||
|
||||
#endif /* !USE_ZLIB && !CRC_TABLE_ONLY */
|
||||
+
|
||||
+.section .note.GNU-stack, "", @progbits
|
||||
+.previous
|
||||
diff -up zip30/match.S.exec_shield zip30/match.S
|
||||
--- zip30/match.S.exec_shield 2005-01-28 10:40:14.000000000 +0100
|
||||
+++ zip30/match.S 2009-11-13 18:39:48.570389058 +0100
|
||||
@@ -405,3 +405,6 @@ L__return:
|
||||
#endif /* i386 || _I386 || _i386 || __i386 */
|
||||
|
||||
#endif /* !USE_ZLIB */
|
||||
+
|
||||
+.section .note.GNU-stack, "", @progbits
|
||||
+.previous
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
--- a/zip.c
|
||||
+++ a/zip.c
|
||||
@@ -1028,7 +1028,7 @@ local void help_extended()
|
||||
|
||||
for (i = 0; i < sizeof(text)/sizeof(char *); i++)
|
||||
{
|
||||
- printf(text[i]);
|
||||
+ printf("%s", text[i]);
|
||||
putchar('\n');
|
||||
}
|
||||
#ifdef DOS
|
||||
@@ -1225,7 +1225,7 @@ local void version_info()
|
||||
CR_MAJORVER, CR_MINORVER, CR_BETA_VER, CR_VERSION_DATE);
|
||||
for (i = 0; i < sizeof(cryptnote)/sizeof(char *); i++)
|
||||
{
|
||||
- printf(cryptnote[i]);
|
||||
+ printf("%s", cryptnote[i]);
|
||||
putchar('\n');
|
||||
}
|
||||
++i; /* crypt support means there IS at least one compilation option */
|
||||
|
|
@ -1,11 +0,0 @@
|
|||
--- ./man/zip.1.old 2024-12-11 10:51:22.837845520 +0100
|
||||
+++ ./man/zip.1 2024-12-11 10:51:34.458142392 +0100
|
||||
@@ -2297,7 +2297,7 @@
|
||||
.B \-X
|
||||
.TP
|
||||
.PD
|
||||
-.B \-\-no\-extra
|
||||
+.B \-\-strip\-extra
|
||||
Do not save extra file attributes (Extended Attributes on OS/2, uid/gid
|
||||
and file times on Unix). The zip format uses extra fields to include
|
||||
additional information for each entry. Some extra fields are specific
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
zip uses C89-only features, so it needs to be built in C89 mode.
|
||||
|
||||
diff --git a/unix/Makefile b/unix/Makefile
|
||||
index 86cf54bf0f56cea9..244390893eab5fc6 100644
|
||||
--- a/unix/Makefile
|
||||
+++ b/unix/Makefile
|
||||
@@ -202,7 +202,7 @@ generic: flags
|
||||
eval $(MAKE) $(MAKEF) zips `cat flags`
|
||||
|
||||
generic_gcc:
|
||||
- $(MAKE) $(MAKEF) generic CC=gcc CPP="gcc -E"
|
||||
+ $(MAKE) $(MAKEF) generic CC="gcc -std=gnu89" CPP="gcc -E"
|
||||
|
||||
# AT&T 6300 PLUS (don't know yet how to allocate 64K bytes):
|
||||
att6300nodir:
|
||||
249
zip.spec
249
zip.spec
|
|
@ -1,27 +1,23 @@
|
|||
Summary: A file compression and packaging utility compatible with PKZIP
|
||||
Name: zip
|
||||
Version: 3.0
|
||||
Release: 46%{?dist}
|
||||
License: Info-ZIP
|
||||
Source: http://downloads.sourceforge.net/infozip/zip30.tar.gz
|
||||
URL: http://www.info-zip.org/Zip.html
|
||||
|
||||
# This patch will probably be merged to zip 3.1
|
||||
# http://www.info-zip.org/board/board.pl?m-1249408491/
|
||||
Patch1: zip-3.0-exec-shield.patch
|
||||
# Not upstreamed.
|
||||
Patch2: zip-3.0-currdir.patch
|
||||
# Not upstreamed.
|
||||
Patch3: zip-3.0-time.patch
|
||||
Patch4: man.patch
|
||||
Patch5: zip-3.0-format-security.patch
|
||||
Patch6: zipnote.patch
|
||||
Patch7: zip-gnu89-build.patch
|
||||
Patch8: buffer_overflow.patch
|
||||
Patch9: zip-3.0-man-strip-extra.patch
|
||||
BuildRequires: make
|
||||
BuildRequires: bzip2-devel, gcc
|
||||
Requires: unzip
|
||||
Version: 2.31
|
||||
Release: 6%{?dist}
|
||||
License: BSD
|
||||
Group: Applications/Archiving
|
||||
Source: http://ftp.info-zip.org/pub/infozip/src/zip231.tar.gz
|
||||
Source1: ftp://ftp.freesoftware.com/pub/infozip/src/zcrypt29.tar.gz
|
||||
URL: http://www.info-zip.org/pub/infozip/Zip.html
|
||||
Patch0: zip23.patch
|
||||
Patch1: exec-shield.patch
|
||||
Patch2: zip23-umask.patch
|
||||
Patch5: zip-2.3-currdir.patch
|
||||
Patch6: zip-2.31-install.patch
|
||||
Patch7: zip-2.31-near-4GB.patch
|
||||
Patch8: zip-2.31-configure.patch
|
||||
Patch9: zip-2.31-time.patch
|
||||
Patch10: zip-2.3-sf.patch
|
||||
Patch11: zip-2.31-umask_mode.patch
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
%description
|
||||
The zip program is a compression and file packaging utility. Zip is
|
||||
|
|
@ -33,200 +29,49 @@ Install the zip package if you need to compress files using the zip
|
|||
program.
|
||||
|
||||
%prep
|
||||
%setup -q -n zip30
|
||||
%patch -P1 -p1 -b .exec-shield
|
||||
%patch -P2 -p1 -b .currdir
|
||||
%patch -P3 -p1 -b .time
|
||||
%patch -P4 -p1 -b .man
|
||||
%patch -P5 -p1 -b .format-security
|
||||
%patch -P6 -p1 -b .zipnote
|
||||
%patch -P7 -p1 -b .gnu89-build
|
||||
%patch -P8 -p1
|
||||
%patch -P9 -p1
|
||||
%setup -q -a 1
|
||||
%patch0 -p1 -b .zip
|
||||
%patch1 -p1 -b .zip
|
||||
%patch2 -p1 -b .umask
|
||||
%patch5 -p1 -b .currdir
|
||||
%patch6 -p1 -b .install
|
||||
%patch7 -p1 -b .4gb
|
||||
%patch8 -p1 -b .lhh
|
||||
%patch9 -p1 -b .time
|
||||
%patch10 -p1 -b .out
|
||||
%patch11 -p1 -b .um
|
||||
|
||||
%build
|
||||
%{make_build} -f unix/Makefile prefix=%{_prefix} "CFLAGS_NOOPT=-I. -DUNIX $RPM_OPT_FLAGS" generic_gcc
|
||||
make -f unix/Makefile prefix=%{_prefix} "CFLAGS=$RPM_OPT_FLAGS -I. -DUNIX -D_LARGEFILE64_SOURCE" generic_gcc %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
mkdir -p $RPM_BUILD_ROOT%{_bindir}
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT%{_bindir}
|
||||
mkdir -p $RPM_BULD_ROOT%{_mandir}/man1
|
||||
|
||||
%{make_install} -f unix/Makefile prefix=$RPM_BUILD_ROOT%{_prefix} \
|
||||
MANDIR=$RPM_BUILD_ROOT%{_mandir}/man1
|
||||
make -f unix/Makefile prefix=$RPM_BUILD_ROOT%{_prefix} \
|
||||
MANDIR=$RPM_BUILD_ROOT%{_mandir}/man1 install
|
||||
|
||||
pushd $RPM_BUILD_ROOT
|
||||
for n in zipnote zipsplit zip zipcloak ; do
|
||||
chmod 755 .%{_bindir}/$n
|
||||
done
|
||||
popd
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README CHANGES TODO WHATSNEW WHERE README.CR
|
||||
%defattr(-,root,root,-)
|
||||
%doc README CHANGES TODO WHATSNEW WHERE LICENSE README.CR
|
||||
%doc proginfo/algorith.txt
|
||||
%{_bindir}/zipnote
|
||||
%{_bindir}/zipsplit
|
||||
%{_bindir}/zip
|
||||
%{_bindir}/zipcloak
|
||||
%{_mandir}/man1/zip.1*
|
||||
%{_mandir}/man1/zipcloak.1*
|
||||
%{_mandir}/man1/zipnote.1*
|
||||
%{_mandir}/man1/zipsplit.1*
|
||||
|
||||
%changelog
|
||||
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-46
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
|
||||
|
||||
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-45
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
|
||||
|
||||
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-44
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-43
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Wed Dec 11 2024 Jakub Martisko <jamartis@redhat.com> - 3.0-42
|
||||
- Fix teh manpage: --no-extra option is actually called --strip-extra
|
||||
|
||||
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-41
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-40
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Mon Sep 18 2023 Jakub Martisko <jamartis@redhat.com> - 3.0-39
|
||||
- Fixc buffer overflow in unicode file names
|
||||
Resolves: rhbz#2165653
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-38
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Thu Apr 13 2023 Lukáš Zaoral <lzaoral@redhat.com> - 3.0-37
|
||||
- migrate to SPDX license format
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-36
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Fri Nov 18 2022 Florian Weimer <fweimer@redhat.com> - 3.0-35
|
||||
- Really build with -std=gnu89 (#2143565)
|
||||
|
||||
* Thu Nov 17 2022 Florian Weimer <fweimer@redhat.com> - 3.0-34
|
||||
- Build with -std=gnu89 (#2143565)
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-33
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-32
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-31
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Fri Mar 05 2021 Jakub Martisko <jamartis@redhat.com> - 3.0-30
|
||||
- Use generic build instead of generic_gcc
|
||||
|
||||
* Fri Mar 05 2021 Jakub Martisko <jamartis@redhat.com> - 3.0-29
|
||||
- Use build macros
|
||||
|
||||
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-28
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-27
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-26
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-25
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-24
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-23
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Thu Mar 01 2018 Jakub Martisko <jamartis@redhat.com> - 3.0-22
|
||||
- Add gcc to buildrequires
|
||||
|
||||
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-21
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-20
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-19
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-18
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Wed Feb 01 2017 Stephen Gallagher <sgallagh@redhat.com> - 3.0-17
|
||||
- Add missing %%license macro
|
||||
|
||||
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.0-16
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Fri Jun 26 2015 Petr Stodulka <pstodulk@redhat.com> - 3.0-15
|
||||
- Added requirement for unzip (#1235956)
|
||||
|
||||
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Wed Jan 28 2015 Petr Stodulka <pstodulk@redhat.com> - 3.0-13
|
||||
- fix crashing zipnote when editing .zip files (#1179420)
|
||||
|
||||
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Tue Apr 1 2014 Peter Robinson <pbrobinson@fedoraproject.org> 3.0-10
|
||||
- Add patch to fix format-security FTBFS (RHBZ 1037412)
|
||||
|
||||
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Fri Apr 26 2013 Michal Luscon <mluscon@redhat.com> - 3.0-8
|
||||
- Fix missing -q option in zipsplit and zipnote man pages
|
||||
|
||||
* Sat Feb 23 2013 Ville Skyttä <ville.skytta@iki.fi> - 3.0-7
|
||||
- Enable bzip2 support.
|
||||
- Fix bogus date in %%changelog.
|
||||
|
||||
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.0-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Mon May 24 2010 Karel Klic <kklic@redhat.com> - 3.0-2
|
||||
- Removed BuildRoot tag
|
||||
- Removed %%clean section
|
||||
- Removed trailing whitespaces in the spec file
|
||||
|
||||
* Fri Nov 13 2009 Karel Klic <kklic@redhat.com> - 3.0-1
|
||||
- New upstream version
|
||||
- Removed zip23.patch, because ZMEM is not used anyway
|
||||
- Removed zip-2.31-install.patch, problem solved in upstream
|
||||
- Removed zip23-umask.patch, upstream uses mkstemp which solves the problem
|
||||
- Removed zip-2.31-near-4GB.patch, because upstream version
|
||||
handles large files well
|
||||
- Removed zip-2.31-configure.patch, configure is better in the current version
|
||||
- Removed zip-2.3-sf.patch, the error message doesn't exist in upstream anymore
|
||||
- Removed zip-2.31-umask_mode.patch, which fixes also removed near-4GB patch
|
||||
- Updated zip-2.31-time.patch for zip 3.0
|
||||
- Updated exec-shield.patch for zip 3.0
|
||||
- Updated zip-2.3-currdir.patch for zip 3.0
|
||||
|
||||
* Mon Jul 27 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.31-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
* Wed Feb 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.31-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild
|
||||
|
||||
* Wed Feb 20 2008 Fedora Release Engineering <rel-eng@fedoraproject.org> - 2.31-6
|
||||
- Autorebuild for GCC 4.3
|
||||
|
||||
|
|
@ -242,7 +87,7 @@ Resolves: rhbz#2165653
|
|||
- incorporate the next peckage review comment
|
||||
|
||||
* Tue Feb 6 2007 Ivana Varekova <varekova@redhat.com> - 2.31-2
|
||||
- incorporate the package review
|
||||
- incorporate the package review
|
||||
|
||||
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 2.31-1.2.2
|
||||
- rebuild
|
||||
|
|
@ -311,7 +156,7 @@ Resolves: rhbz#2165653
|
|||
* Sun Jun 24 2001 Elliot Lee <sopwith@redhat.com>
|
||||
- Bump release + rebuild.
|
||||
|
||||
* Fri Aug 25 2000 Bill Nottingham <notting@redhat.com>
|
||||
* Thu Aug 25 2000 Bill Nottingham <notting@redhat.com>
|
||||
- add encryption code (#16878)
|
||||
|
||||
* Thu Jul 13 2000 Prospector <bugzilla@redhat.com>
|
||||
|
|
|
|||
23
zip23-umask.patch
Normal file
23
zip23-umask.patch
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
diff -ur zip-2.3/zip.c zip-2.3-lhh/zip.c
|
||||
--- zip-2.3/zip.c 1999-11-16 15:08:10.000000000 -0500
|
||||
+++ zip-2.3-lhh/zip.c 2003-12-22 09:32:56.000000000 -0500
|
||||
@@ -849,6 +849,7 @@
|
||||
/* Add, update, freshen, or delete zip entries in a zip file. See the
|
||||
command help in help() above. */
|
||||
{
|
||||
+ mode_t old_umask; /* umask prior to temp file creation */
|
||||
int a; /* attributes of zip file */
|
||||
ulg c; /* start of central directory */
|
||||
int d; /* true if just adding to a zip file */
|
||||
@@ -1830,9 +1831,11 @@
|
||||
if ((tempzip = tempname(zipfile)) == NULL) {
|
||||
ZIPERR(ZE_MEM, "allocating temp filename");
|
||||
}
|
||||
+ old_umask = umask(0066);
|
||||
if ((tempzf = y = fopen(tempzip, FOPW_TMP)) == NULL) {
|
||||
ZIPERR(ZE_TEMP, tempzip);
|
||||
}
|
||||
+ umask(old_umask);
|
||||
}
|
||||
|
||||
#if (!defined(VMS) && !defined(CMS_MVS))
|
||||
93
zip23.patch
Normal file
93
zip23.patch
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
--- zip-2.3/zip.h.zip Mon Nov 8 14:36:51 1999
|
||||
+++ zip-2.3/zip.h Tue Jan 11 11:46:06 2000
|
||||
@@ -60,6 +60,7 @@
|
||||
|
||||
/* Set up portability */
|
||||
#include "tailor.h"
|
||||
+#include <strings.h>
|
||||
|
||||
#ifdef USE_ZLIB
|
||||
# include "zlib.h"
|
||||
@@ -433,12 +434,6 @@
|
||||
int setfileattr OF((char *, int));
|
||||
char *tempname OF((char *));
|
||||
int fcopy OF((FILE *, FILE *, ulg));
|
||||
-
|
||||
-#ifdef ZMEM
|
||||
- char *memset OF((char *, int, unsigned int));
|
||||
- char *memcpy OF((char *, char *, unsigned int));
|
||||
- int memcmp OF((char *, char *, unsigned int));
|
||||
-#endif /* ZMEM */
|
||||
|
||||
/* in system dependent fileio code (<system>.c) */
|
||||
#ifndef UTIL
|
||||
--- zip-2.3/fileio.c.zip Sun Nov 7 05:29:03 1999
|
||||
+++ zip-2.3/fileio.c Tue Jan 11 11:46:43 2000
|
||||
@@ -918,67 +918,3 @@
|
||||
}
|
||||
|
||||
#endif /* NO_RENAME */
|
||||
-
|
||||
-
|
||||
-#ifdef ZMEM
|
||||
-
|
||||
-/************************/
|
||||
-/* Function memset() */
|
||||
-/************************/
|
||||
-
|
||||
-/*
|
||||
- * memset - for systems without it
|
||||
- * bill davidsen - March 1990
|
||||
- */
|
||||
-
|
||||
-char *
|
||||
-memset(buf, init, len)
|
||||
-register char *buf; /* buffer loc */
|
||||
-register int init; /* initializer */
|
||||
-register unsigned int len; /* length of the buffer */
|
||||
-{
|
||||
- char *start;
|
||||
-
|
||||
- start = buf;
|
||||
- while (len--) *(buf++) = init;
|
||||
- return(start);
|
||||
-}
|
||||
-
|
||||
-
|
||||
-/************************/
|
||||
-/* Function memcpy() */
|
||||
-/************************/
|
||||
-
|
||||
-char *
|
||||
-memcpy(dst,src,len) /* v2.0f */
|
||||
-register char *dst, *src;
|
||||
-register unsigned int len;
|
||||
-{
|
||||
- char *start;
|
||||
-
|
||||
- start = dst;
|
||||
- while (len--)
|
||||
- *dst++ = *src++;
|
||||
- return(start);
|
||||
-}
|
||||
-
|
||||
-
|
||||
-/************************/
|
||||
-/* Function memcmp() */
|
||||
-/************************/
|
||||
-
|
||||
-int
|
||||
-memcmp(b1,b2,len) /* jpd@usl.edu -- 11/16/90 */
|
||||
-register char *b1, *b2;
|
||||
-register unsigned int len;
|
||||
-{
|
||||
-
|
||||
- if (len) do { /* examine each byte (if any) */
|
||||
- if (*b1++ != *b2++)
|
||||
- return (*((uch *)b1-1) - *((uch *)b2-1)); /* exit when miscompare */
|
||||
- } while (--len);
|
||||
-
|
||||
- return(0); /* no miscompares, yield 0 result */
|
||||
-}
|
||||
-
|
||||
-#endif /* ZMEM */
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/zipnote.c b/zipnote.c
|
||||
index 5e02cb6..996f012 100644
|
||||
--- a/zipnote.c
|
||||
+++ b/zipnote.c
|
||||
@@ -661,7 +661,7 @@ char **argv; /* command line tokens */
|
||||
if ((r = zipcopy(z)) != ZE_OK)
|
||||
ziperr(r, "was copying an entry");
|
||||
}
|
||||
- fclose(x);
|
||||
+ fclose(in_file);
|
||||
|
||||
/* Write central directory and end of central directory with new comments */
|
||||
if ((c = zftello(y)) == (zoff_t)-1) /* get start of central */
|
||||
Loading…
Add table
Add a link
Reference in a new issue