Sync from SUSE:ALP:Source:Standard:1.0 7zip revision 8dd6a2c8041b4d403bd04af4cef13a1a
This commit is contained in:
commit
1ac87b4959
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
## Default LFS
|
||||
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||
*.png filter=lfs diff=lfs merge=lfs -text
|
||||
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||
*.zst filter=lfs diff=lfs merge=lfs -text
|
BIN
7z2301-src.tar.xz
(Stored with Git LFS)
Normal file
BIN
7z2301-src.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
139
7zip.changes
Normal file
139
7zip.changes
Normal file
@ -0,0 +1,139 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 18 02:01:41 UTC 2023 - Linnaea Lavia <linnaea@lavia.moe>
|
||||
|
||||
- Enable ARM64 ASM introduced in 23.01
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jun 21 10:15:05 UTC 2023 - Fabian Vogt <fvogt@suse.com>
|
||||
|
||||
- Update to version 23.01:
|
||||
* 7-Zip now can use new ARM64 filter for compression to 7z and xz archives.
|
||||
ARM64 filter can increase compression ratio for data containing executable files
|
||||
compiled for ARM64 (AArch64) architecture.
|
||||
* Default section size for BCJ2 filter was changed from 64 MiB to 240 MiB. It
|
||||
can increase compression ratio for executable files larger than 64 MiB.
|
||||
* UDF: support was improved.
|
||||
* cpio: support for hard links.
|
||||
* Some changes and optimizations in WIM creation code.
|
||||
* When new 7-Zip creates multivolume archive, 7-Zip keeps in open state only
|
||||
volumes that still can be changed. Previous versions kept all volumes in open
|
||||
state until the end of the archive creation.
|
||||
* 7-Zip now can reduce the number of simultaneously open files, when
|
||||
7-Zip opens, extracts or creates multivolume archive. It allows to avoid the
|
||||
failures for cases with big number of volumes, bacause there is a limitation for
|
||||
number of open files allowed for a single program in Linux.
|
||||
* The bugs were fixed:
|
||||
* ZIP archives: if multithreaded zip compression was performed with
|
||||
more than one file to stdout stream (-so switch), 7-zip didn't write "data
|
||||
descriptor" for some files.
|
||||
* ext4 archives: 7-Zip couldn't correctly extract symbolic link to directory from ext4 archives.
|
||||
* HFS and APFS archives: 7-Zip incorrectly decoded uncompressed blocks (64 KiB) in compressed forks.
|
||||
* Some another bugs were fixed.
|
||||
- Refresh fix-compatib-with-p7zip.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Dec 12 21:18:30 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- build for x86_64 subarchs the same way like for baseline
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 30 10:47:14 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
|
||||
|
||||
- Enable ASM to increase performance in compression and decompression
|
||||
bsc#1202197
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 22 21:16:09 UTC 2022 - Dirk Müller <dmueller@suse.com>
|
||||
|
||||
- update to 22.01:
|
||||
* UDF support was improved to UDF version 2.60.
|
||||
* HFS and APFS support was improved.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Jul 3 21:01:22 UTC 2022 - Matthias Eliasson <elimat@opensuse.org>
|
||||
|
||||
- Update to version 22.00:
|
||||
* 7-Zip now can extract APFS (Apple File System) images that can be used in DMG files.
|
||||
* 7-Zip now can create TAR archives in POSIX (pax) tar format with the switches
|
||||
-ttar -mm=pax or -ttar -mm=posix
|
||||
* 7-Zip now can store additional file timestamps with high precision (1 ns in Linux)
|
||||
in tar/pax archives with the following switches:
|
||||
-ttar -mm=pax -mtp=3 -mtc -mta
|
||||
* New switches for Linux version for TAR archives:
|
||||
-snoi : store owner/group ids in archive or set owner/group ids from archive to extracted files.
|
||||
-snon : store owner/group names in archive
|
||||
* New -snz switch to propagate Zone.Identifier stream to extracted files (Windows).
|
||||
* New option "Propagate Zone.Id stream" in Tools/Options/7-Zip menu.
|
||||
* New "Options" window in "Add to archive" allows to select what metadata must be
|
||||
included to archive. Also it allows to select new option
|
||||
"Do not change source files last access time".
|
||||
* Some bugs were fixed.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 26 03:16:03 UTC 2022 - Dario Faggioli <dfaggioli@suse.com>
|
||||
|
||||
- Fix an incompatibility with p7zip which was breaking some downstreams
|
||||
(e.g., GNOME's File-Roller). See bsc#1195041
|
||||
* Add fix-compatib-with-p7zip.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 12 16:45:41 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
|
||||
|
||||
- Replace p7zip with 7zip
|
||||
* Add p7zip and p7zip.1
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jan 3 11:31:10 UTC 2022 - Danilo Spinella <danilo.spinella@suse.com>
|
||||
|
||||
- Update to version 21.07:
|
||||
* The sorting order of files in archives was slightly changed to be more
|
||||
consistent for cases where the name of some directory is the same as the
|
||||
prefix part of the name of another directory or file.
|
||||
* TAR archives created by 7-Zip now are more consistent with archives
|
||||
created by GNU TAR program.
|
||||
- Remove unneeded pach remove-rar-handler.patch
|
||||
- Use the tarball in place of the 7zip archive as Source
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Dec 22 20:48:46 UTC 2021 - Arjen de Korte <suse+build@de-korte.org>
|
||||
|
||||
- Extract source archive with bsdtar instead of p7zip
|
||||
- Fixup line breaks of documentation files
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 21 21:13:09 UTC 2021 - Arjen de Korte <suse+build@de-korte.org>
|
||||
|
||||
- update to version 21.06
|
||||
* Bug in LZMA encoder in file LzmaEnc.c was fixed:
|
||||
- LzmaEnc_MemEncode(), LzmaEncode() and LzmaCompress() could work
|
||||
incorrectly, if size value for output buffer is smaller than size
|
||||
required for all compressed data.
|
||||
- LzmaEnc_Encode() could work incorrectly, if callback
|
||||
ISeqOutStream::Write() doesn't write all compressed data.
|
||||
- NCompress::NLzma::CEncoder::Code() could work incorrectly,
|
||||
if callback ISequentialOutStream::Write() returns error code.
|
||||
* Bug in versions 21.00-21.05 was fixed:
|
||||
7-Zip didn't set attributes of directories during archive extracting.
|
||||
|
||||
- update to version 21.04
|
||||
* 7-Zip now reduces the number of working CPU threads for compression,
|
||||
if RAM size is not enough for compression with big LZMA2 dictionary.
|
||||
* 7-Zip now can create and check "file.sha256" and "file.sha1" text
|
||||
files that contain the list of file names and SHA-1 / SHA-256
|
||||
checksums in format compatible with sha1sum/sha256sum programs.
|
||||
|
||||
- update to version 21.03
|
||||
* The maximum dictionary size for LZMA/LZMA2 compressing was increased
|
||||
to 4 GB (3840 MiB).
|
||||
* Minor speed optimizations in LZMA/LZMA2 compressing.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Dec 21 00:07:36 UTC 2021 - Jan Engelhardt <jengelh@inai.de>
|
||||
|
||||
- Remove more -W flags for the Leap 15.x build to succeed
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 6 14:36:25 UTC 2021 danilo.spinella@suse.com
|
||||
|
||||
- Create initial version
|
||||
- Add remove-rar-handler.patch
|
120
7zip.spec
Normal file
120
7zip.spec
Normal file
@ -0,0 +1,120 @@
|
||||
#
|
||||
# spec file for package 7zip
|
||||
#
|
||||
# Copyright (c) 2023 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%define stripped_version 2301
|
||||
Name: 7zip
|
||||
Version: 23.01
|
||||
Release: 0
|
||||
Summary: File Archivier
|
||||
# CPP/7zip/Compress/LzfseDecoder.cpp is under the BSD-3-Clause
|
||||
# C/Sha1.c and C/Sha256.c are in the public domain
|
||||
License: BSD-3-Clause AND LGPL-2.1-or-later AND SUSE-Public-Domain
|
||||
Group: Productivity/Archiving/Compression
|
||||
URL: https://www.7-zip.org/
|
||||
Source: https://www.7-zip.org/a/7z%{stripped_version}-src.tar.xz
|
||||
Source1: p7zip
|
||||
Source2: p7zip.1
|
||||
Patch0: fix-compatib-with-p7zip.patch
|
||||
BuildRequires: dos2unix
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
%ifarch x86_64 %ix86 %x86_64
|
||||
BuildRequires: uasm
|
||||
%endif
|
||||
Conflicts: p7zip
|
||||
Conflicts: p7zip-full
|
||||
Provides: p7zip = %{version}
|
||||
Provides: p7zip-full = %{version}
|
||||
Obsoletes: p7zip < %{version}
|
||||
Obsoletes: p7zip-full < %{version}
|
||||
|
||||
%description
|
||||
This package contains the 7z command line utility for archiving and
|
||||
extracting various formats.
|
||||
|
||||
%prep
|
||||
tar xaf %{SOURCE0}
|
||||
%patch0 -p1
|
||||
dos2unix DOC/*.txt
|
||||
# Remove executable perms from docs
|
||||
chmod -x DOC/*.txt
|
||||
|
||||
# Remove -Werror to make build succeed
|
||||
sed -i 's/-Werror//' CPP/7zip/7zip_gcc.mak
|
||||
%if 0%{?suse_version} < 1550
|
||||
# (gcc 7.x) Remove -Waddress-of-packed-member to make build succeed
|
||||
sed -i -e 's/-Waddress-of-packed-member//' -e 's/-Wcast-align=strict//' -e 's/-Wmissing-attributes//' C/warn_gcc.mak CPP/7zip/warn_gcc.mak
|
||||
%endif
|
||||
# Inject CFLAGS
|
||||
sed -i 's/^ -fPIC/ -fPIC %{optflags}/' CPP/7zip/7zip_gcc.mak
|
||||
sed -i 's/LFLAGS_ALL = -s/LFLAGS_ALL =/' CPP/7zip/7zip_gcc.mak
|
||||
%ifarch x86_64 %ix86 %x86_64
|
||||
sed -i 's/$(CXX) -o $(PROGPATH)/$(CXX) -Wl,-z,noexecstack -o $(PROGPATH)/' CPP/7zip/7zip_gcc.mak
|
||||
%endif
|
||||
|
||||
%build
|
||||
cd CPP/7zip/Bundles/Alone2
|
||||
%ifarch x86_64 %x86_64
|
||||
%make_build -f ../../cmpl_gcc_x64.mak MY_ASM=uasm
|
||||
%else
|
||||
%ifarch %ix86
|
||||
%make_build -f ../../cmpl_gcc_x86.mak MY_ASM=uasm
|
||||
%else
|
||||
%ifarch aarch64
|
||||
%make_build -f ../../cmpl_gcc_arm64.mak MY_ASM=gcc
|
||||
%else
|
||||
%make_build -f ../../cmpl_gcc.mak
|
||||
%endif
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%install
|
||||
%ifarch x86_64 %x86_64
|
||||
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g_x64/7zz %{buildroot}%{_bindir}/7zz
|
||||
%else
|
||||
%ifarch %ix86
|
||||
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g_x86/7zz %{buildroot}%{_bindir}/7zz
|
||||
%else
|
||||
%ifarch aarch64
|
||||
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g_arm64/7zz %{buildroot}%{_bindir}/7zz
|
||||
%else
|
||||
install -Dm 755 CPP/7zip/Bundles/Alone2/b/g/7zz %{buildroot}%{_bindir}/7zz
|
||||
%endif
|
||||
%endif
|
||||
%endif
|
||||
# Create links the executables provided by p7zip
|
||||
ln -s %{_bindir}/7zz %{buildroot}%{_bindir}/7z
|
||||
ln -s %{_bindir}/7z %{buildroot}%{_bindir}/7za
|
||||
ln -s %{_bindir}/7z %{buildroot}%{_bindir}/7zr
|
||||
# Install p7zip wrapper and its manpage
|
||||
install -m755 %{SOURCE1} %{buildroot}%{_bindir}/p7zip
|
||||
install -m644 -Dt %{buildroot}%{_mandir}/man1 %{SOURCE2}
|
||||
# Remove a mention of the p7zip-rar package that we don't have
|
||||
sed -i 's/RAR (if the non-free p7zip-rar package is installed)//g' %{buildroot}%{_mandir}/man1/p7zip.1
|
||||
|
||||
%files
|
||||
%license DOC/copying.txt DOC/License.txt
|
||||
%doc DOC/readme.txt DOC/7zC.txt DOC/Methods.txt DOC/src-history.txt
|
||||
%{_bindir}/7z
|
||||
%{_bindir}/7za
|
||||
%{_bindir}/7zr
|
||||
%{_bindir}/7zz
|
||||
%{_bindir}/p7zip
|
||||
%{_mandir}/man1/p7zip.1%{?ext_man}
|
||||
|
||||
%changelog
|
41
fix-compatib-with-p7zip.patch
Normal file
41
fix-compatib-with-p7zip.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From: Dario Faggioli <dfaggioli@suse.com>
|
||||
Date: Wed Jan 26 04:01:09 AM CET 2022
|
||||
Subject: [PATCH] Console: Avoid terminating on failed password check
|
||||
|
||||
File-roller (i.e., GNOME's Archive Manager), which was working fine
|
||||
with p7zip and p7zip-full, does not work well with 7zip. More specifically,
|
||||
it is not possible to open or extract a password protected archive, for
|
||||
which also the list of the files in the archive itself has been hidden.
|
||||
|
||||
This seems to happen because now GetPassword_HRESULT() does some kind of
|
||||
error checking, and depending on the results, cause its calling function
|
||||
to return with an error, which in turns terminates the 7zz program in
|
||||
a way that file-roller interpretes as a critical error, and everything
|
||||
stops.
|
||||
|
||||
On the other hand, in p7zip-full, the GetPassword() function wasn't
|
||||
doing this. There's still a failure, but one that triggers File-roller
|
||||
to ask the password of the archive, and once that is provided everything
|
||||
works.
|
||||
|
||||
From a CLI perspecvive, nothing changes, and things still work fine and
|
||||
in the exact same way, no matter whether or not this patch is applied.
|
||||
|
||||
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
||||
---
|
||||
OpenCallbackConsole.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: 7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp
|
||||
===================================================================
|
||||
--- 7zip.orig/CPP/7zip/UI/Console/OpenCallbackConsole.cpp
|
||||
+++ 7zip/CPP/7zip/UI/Console/OpenCallbackConsole.cpp
|
||||
@@ -87,7 +87,7 @@ HRESULT COpenCallbackConsole::Open_Crypt
|
||||
if (!PasswordIsDefined)
|
||||
{
|
||||
ClosePercents();
|
||||
- RINOK(GetPassword_HRESULT(_so, Password))
|
||||
+ GetPassword_HRESULT(_so, Password);
|
||||
PasswordIsDefined = true;
|
||||
}
|
||||
return StringToBstr(Password, password);
|
225
p7zip
Normal file
225
p7zip
Normal file
@ -0,0 +1,225 @@
|
||||
#!/bin/sh
|
||||
# gzip-like CLI wrapper for p7zip
|
||||
# version 3.0
|
||||
#
|
||||
# History
|
||||
# 2.0 :
|
||||
# - support for -filename, "file name"
|
||||
# - p7zip file1 file2 ...
|
||||
# 3.0 : (robert@debian.org, March 2016)
|
||||
# - use 7za or 7zr, whichever one is available
|
||||
# - refactor the script for better readability
|
||||
# - remove `"$?" != 0 ' checks that do not work with `set -e'
|
||||
# - use stderr for error reporting
|
||||
# - add support for -c, -f, -k options
|
||||
|
||||
set -e
|
||||
|
||||
# detect 7z program to use
|
||||
prg7z="`which 7za 2>/dev/null`" || \
|
||||
prg7z="`which 7zr 2>/dev/null`" || \
|
||||
{ echo "$0: cannot find neither 7za nor 7zr command" >&2; exit 1; }
|
||||
|
||||
# global options
|
||||
f_compress=true
|
||||
f_keep=false
|
||||
f_force=false
|
||||
f_tostdout=false
|
||||
|
||||
usage()
|
||||
{
|
||||
echo "Usage: $0 [options] [--] [ name ... ]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " -c --stdout --to-stdout output data to stdout"
|
||||
echo " -d --decompress --uncompress decompress file"
|
||||
echo " -f --force do not ask questions"
|
||||
echo " -k --keep keep original file"
|
||||
echo " -h --help print this help"
|
||||
echo " -- treat subsequent arguments as file"
|
||||
echo " names, even if they start with a dash"
|
||||
echo ""
|
||||
exit 0
|
||||
}
|
||||
|
||||
has_7z_suffix()
|
||||
{
|
||||
case "$1" in
|
||||
*.7z)
|
||||
return 0
|
||||
;;
|
||||
*)
|
||||
return 1
|
||||
;;
|
||||
esac;
|
||||
}
|
||||
|
||||
make_tmp_file()
|
||||
{
|
||||
P7ZIPTMP="${TMP:-/tmp}"
|
||||
mktemp "${P7ZIPTMP}/p7zip.XXXXXXXX"
|
||||
}
|
||||
|
||||
check_not_a_tty()
|
||||
{
|
||||
if ! ${f_force} && ${f_compress} && tty <&1 >/dev/null ; then
|
||||
echo "$0: compressed data not written to a terminal." >&2
|
||||
echo "For help, type: $0 -h" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
compress_file()
|
||||
{
|
||||
file="$1"
|
||||
|
||||
if ! ${f_force} && has_7z_suffix "${file}"; then
|
||||
echo "$0: $file already has the 7z suffix" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# compress to stdout via temporary file
|
||||
if ${f_tostdout}; then
|
||||
check_not_a_tty
|
||||
tmp="`make_tmp_file`"
|
||||
trap "rm -f -- ${tmp}" 0
|
||||
rm -f -- "${tmp}"
|
||||
"${prg7z}" a -si -- "${tmp}" < "${file}" >/dev/null && cat "${tmp}" || \
|
||||
{ echo "$0: failed to compress data to temporary file" >&2; exit 1; }
|
||||
rm -f -- "${tmp}"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# compress to a file
|
||||
if ! ${f_force} && [ -e "${file}.7z" ]; then
|
||||
echo "$0: destination file ${file}.7z already exists" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
rm -f -- "${file}.7z"
|
||||
flags=""
|
||||
${f_keep} || flags="$flags -sdel"
|
||||
! ${f_force} || flags="$flags -y"
|
||||
"${prg7z}" a $flags -- "${file}.7z" "${file}" || { rm -f -- "${file}.7z"; exit 1; }
|
||||
}
|
||||
|
||||
|
||||
decompress_file()
|
||||
{
|
||||
file="$1"
|
||||
|
||||
has_7z_suffix "${file}" || { echo "$0: ${file}: unknown suffix" >&2; exit 1; }
|
||||
|
||||
# decompress to stdout
|
||||
if ${f_tostdout}; then
|
||||
# The following `| cat' pipe shouldn't be needed, however it is here to
|
||||
# trick 7z not to complain about writing data to terminal.
|
||||
"${prg7z}" x -so -- "${file}" | cat || exit 1
|
||||
return 0;
|
||||
fi
|
||||
|
||||
flags=""
|
||||
! ${f_force} || flags="$flags -y"
|
||||
"${prg7z}" x $flags -- "${file}" || exit 1
|
||||
|
||||
# remove original file unless the archive contains more than one file
|
||||
if ! ${f_keep} && "${prg7z}" l -- "${file}" 2>/dev/null | grep -q '^1 file,' 2>/dev/null; then
|
||||
rm -f -- "${file}"
|
||||
fi
|
||||
}
|
||||
|
||||
process_file()
|
||||
{
|
||||
file="$1"
|
||||
|
||||
# check if file exists and is readable
|
||||
[ -r "${file}" ] || { echo "$0: cannot read ${file}" >&2; exit 1; }
|
||||
|
||||
if ${f_compress}; then
|
||||
compress_file "${file}"
|
||||
else
|
||||
decompress_file "${file}"
|
||||
fi
|
||||
}
|
||||
|
||||
process_stdin()
|
||||
{
|
||||
check_not_a_tty
|
||||
|
||||
tmp="`make_tmp_file`"
|
||||
trap "rm -f -- ${tmp}" 0
|
||||
|
||||
if ${f_compress}; then
|
||||
|
||||
rm -f -- "${tmp}"
|
||||
"${prg7z}" a -si -- "${tmp}" >/dev/null && cat -- "${tmp}" || exit 1
|
||||
|
||||
else # decompress
|
||||
|
||||
cat > "${tmp}"
|
||||
# The following `| cat' pipe shouldn't be needed, however it is here to
|
||||
# trick 7z not to complain about writing data to terminal.
|
||||
"${prg7z}" x -so -- "${tmp}" | cat || exit 1
|
||||
fi
|
||||
|
||||
rm -f -- "${tmp}"
|
||||
}
|
||||
|
||||
|
||||
## MAIN
|
||||
|
||||
|
||||
# files and flags
|
||||
while [ "$#" != "0" ] ; do
|
||||
case "$1" in
|
||||
-c|--stdout|--to-stdout)
|
||||
f_tostdout=true
|
||||
;;
|
||||
-d|--decompress|--uncompress)
|
||||
f_compress=false # decompressing
|
||||
;;
|
||||
-f|--force)
|
||||
f_force=true
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
;;
|
||||
-k|--keep)
|
||||
f_keep=true
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
echo "$0: ignoring unknown option $1" >&2
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
|
||||
# make sure they're present, before we screw up
|
||||
for i in mktemp rm cat tty grep; do
|
||||
if ! which $i >/dev/null ; then
|
||||
echo "$0: $i: command not found" >&2
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$#" = 0 ]; then
|
||||
# compressing/decompressing using standard I/O
|
||||
process_stdin
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# only files now
|
||||
while [ "$#" != "0" ] ; do
|
||||
process_file "$1"
|
||||
shift
|
||||
done
|
||||
|
||||
exit 0
|
79
p7zip.1
Normal file
79
p7zip.1
Normal file
@ -0,0 +1,79 @@
|
||||
.TH p7zip 1 "March 6th, 2016" "7-Zip"
|
||||
.SH NAME
|
||||
p7zip \- Wrapper on 7-Zip file archiver with high compression ratio
|
||||
.SH SYNOPSIS
|
||||
.B p7zip
|
||||
.RB [ \-c | \-\-stdout | \-\-to\-stdout ]
|
||||
.RB [ \-d | \-\-decompress | \-\-uncompress ]
|
||||
.RB [ \-f | \-\-force ]
|
||||
.RB [ \-h | \-\-help ]
|
||||
.RB [ \-k | \-\-keep ]
|
||||
.RB [ \-\- ]
|
||||
.RI [ "file ..." ]
|
||||
.SH DESCRIPTION
|
||||
7-Zip is a file archiver supporting 7z (that implements LZMA compression algorithm
|
||||
featuring very high compression ratio), LZMA2, XZ, ZIP, Zip64, CAB,
|
||||
RAR (if the non-free p7zip-rar package is installed), ARJ, GZIP, BZIP2, TAR, CPIO, RPM, ISO,
|
||||
most filesystem images and DEB formats.
|
||||
Compression ratio in the new 7z format is 30-50% better than ratio in ZIP format.
|
||||
.PP
|
||||
.B p7zip
|
||||
is a gzip-like CLI wrapper script for 7-Zip, and handles only the 7z format (the native
|
||||
format of 7-Zip), internally executing either
|
||||
.BR 7za (1)
|
||||
or
|
||||
.BR 7zr (1)
|
||||
command.
|
||||
.PP
|
||||
With no switches passed in the command line, each given
|
||||
.I file
|
||||
argument is compressed into
|
||||
.IR file.7z ,
|
||||
and then removed.
|
||||
.PP
|
||||
With the
|
||||
.B \-d
|
||||
switch each passed
|
||||
.I file
|
||||
needs to end with the
|
||||
.I .7z
|
||||
extension and is decompressed. After the
|
||||
decompression the original
|
||||
.I file
|
||||
is removed unless it contained more than one archived file.
|
||||
.PP
|
||||
When used without any
|
||||
.I file
|
||||
argument,
|
||||
.BR p7zip
|
||||
reads data from the standard input and compresses (or decompresses in case of
|
||||
.BR \-d )
|
||||
it into the standard output.
|
||||
.SH SWITCHES
|
||||
.TP
|
||||
.BR \-c ", " \-\-stdout ", " \-\-to\-stdout
|
||||
Write output on standard output.
|
||||
.TP
|
||||
.BR \-d ", " \-\-decompress ", " \-\-uncompress
|
||||
Decompress file.
|
||||
.TP
|
||||
.BR \-f ", " \-\-force
|
||||
Skip some checks and force compression or decompression.
|
||||
.TP
|
||||
.BR \-h ", " \--help
|
||||
Print usage.
|
||||
.TP
|
||||
.BR \-k ", " \-\-keep
|
||||
Do not delete input file.
|
||||
.TP
|
||||
.B \-\-
|
||||
Treat all subsequent arguments as file names, even if they start with a dash.
|
||||
.SH "SEE ALSO"
|
||||
.BR 7z (1),
|
||||
.BR 7za (1),
|
||||
.BR 7zr (1),
|
||||
.BR bzip2 (1),
|
||||
.BR gzip (1),
|
||||
.BR zip (1)
|
||||
.SH AUTHOR
|
||||
Written for Debian by Mohammed Adnene Trojette. Updated by Robert Luberda.
|
Loading…
Reference in New Issue
Block a user