aboutsummaryrefslogtreecommitdiff
path: root/system/acefile
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2023-04-21 00:26:17 +0100
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2023-04-22 11:38:30 +0700
commit62347d01d359c1fbe47418ddd2b0f312c987c2cd (patch)
tree1e30435a37734b30ee35433cb7926f53dd87adb7 /system/acefile
parentab8ebf14fcbbce32ab1b08891c461c7c2b253fab (diff)
system/acefile: Added (extract ACE 1.0 and 2.0 archives)
Signed-off-by: bedlam <dave@slackbuilds.org> Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'system/acefile')
-rw-r--r--system/acefile/README17
-rw-r--r--system/acefile/acefile-unace.1107
-rw-r--r--system/acefile/acefile-unace.rst97
-rw-r--r--system/acefile/acefile.SlackBuild90
-rw-r--r--system/acefile/acefile.info10
-rw-r--r--system/acefile/slack-desc19
6 files changed, 340 insertions, 0 deletions
diff --git a/system/acefile/README b/system/acefile/README
new file mode 100644
index 000000000000..a214806300e3
--- /dev/null
+++ b/system/acefile/README
@@ -0,0 +1,17 @@
+acefile (extract ACE 1.0 and 2.0 archives)
+
+This single-file, pure python 3, no-dependencies implementation is
+intended to be used as a library, but also provides a stand-alone
+unace utility. As a mostly pure-python implementation, it is
+significantly slower than native implementations, but more robust
+against vulnerabilities.
+
+This implementation supports up to version 2.0 of the ACE archive
+format, including the EXE, DELTA, PIC and SOUND modes of ACE 2.0,
+password protected archives and multi-volume archives. It does not
+support writing to archives. It is an implementation from scratch,
+based on the 1998 document titled "Technical information of the
+archiver ACE v1.2" by Marcel Lemke, using unace 2.5 and WinAce 2.69 by
+Marcel Lemke as reference implementations.
+
+Unlike the standard unace, this is Free Software (BSD-licensed).
diff --git a/system/acefile/acefile-unace.1 b/system/acefile/acefile-unace.1
new file mode 100644
index 000000000000..ca29026b4d89
--- /dev/null
+++ b/system/acefile/acefile-unace.1
@@ -0,0 +1,107 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "ACEFILE-UNACE" 1 "2023-04-18" "0.6.12" "SlackBuilds.org"
+.SH NAME
+acefile-unace \- extract/view/test ACE archives
+.\" RST source for acefile-unace(1) man page. Convert with:
+.
+.\" rst2man.py acefile-unace.rst > acefile-unace.1
+.
+.SH SYNOPSIS
+.sp
+\fBacefile\-unace\fP [\fB\-h\fP] [\fB\-V\fP] [\fB\-x\fP | \fB\-t\fP | \fB\-l\fP |
+\fB\-\-extract\fP | \fB\-\-test\fP | \fB\-\-list\fP | \fB\-\-headers\fP] [\fB\-d\fP
+\fIdirectory\fP] [\fB\-p\fP \fIpassword\fP] [\fB\-r\fP | \fB\-\-restore\fP] [\fB\-b\fP |
+\fB\-batch\fP] [\fB\-\-debug\fP] \fBace\-file\fP [\fBfile(s)\fP]
+.SH DESCRIPTION
+.sp
+\fBacefile\-unace\fP extracts, views, or tests \fBACE\fP archives, such
+as those created by WinACE. It does not allow creating or writing to
+archives.
+.sp
+\fBacefile\-unace\fP supports up to version 2.0 of the ACE archive
+format, including the EXE, DELTA, PIC and SOUND modes of ACE 2.0,
+password protected archives, and multi\-volume archives.
+.sp
+The \fBace\-file\fP argument is required. With no options, the default is to
+extract all files within \fBace\-file\fP to the current directory.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \-h\fP,\fB \-\-help
+Show built\-in help message and exit.
+.TP
+.B \-V\fP,\fB \-\-version
+Show version number and exit.
+.TP
+.B \-\-extract\fP,\fB \-x
+Extract files in archive (default).
+.TP
+.B \-\-test\fP,\fB \-t
+Test archive integrity.
+.TP
+.B \-\-list\fP,\fB \-l
+List files in archive.
+.TP
+.B \-\-headers
+Dump archive headers.
+.TP
+.BI \-d \ directory\fR,\fB \ \-\-basedir \ directory
+Base directory for extraction (default: current directory).
+.TP
+.BI \-p \ password\fR,\fB \ \-\-password \ password
+Password for decryption.
+.TP
+.B \-r\fP,\fB \-\-restore
+Restore mtime/atime, attribs and ntsecurity on extraction.
+.TP
+.B \-b\fP,\fB \-\-batch
+Suppress all interactive input.
+.TP
+.B \-v\fP,\fB \-\-verbose
+Be more verbose.
+.TP
+.B \-\-debug
+Show mode transitions and expose internal exceptions.
+.UNINDENT
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/acefile\-unace\-0.6.12/LICENSE.md for license information.
+.SH AUTHORS
+.sp
+\fBacefile\-unace\fP was written by Daniel Roethlisberger.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+The acefile\-unace homepage: \fI\%https://pypi.org/project/acefile/\fP
+.\" Generated by docutils manpage writer.
+.
diff --git a/system/acefile/acefile-unace.rst b/system/acefile/acefile-unace.rst
new file mode 100644
index 000000000000..83b4b68da1d2
--- /dev/null
+++ b/system/acefile/acefile-unace.rst
@@ -0,0 +1,97 @@
+.. RST source for acefile-unace(1) man page. Convert with:
+.. rst2man.py acefile-unace.rst > acefile-unace.1
+
+.. |version| replace:: 0.6.12
+.. |date| date::
+
+=============
+acefile-unace
+=============
+
+------------------------------
+extract/view/test ACE archives
+------------------------------
+
+:Manual section: 1
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+**acefile-unace** [**-h**] [**-V**] [**-x** | **-t** | **-l** |
+**--extract** | **--test** | **--list** | **--headers**] [**-d**
+*directory*] [**-p** *password*] [**-r** | **--restore**] [**-b** |
+**-batch**] [**--debug**] **ace-file** [**file(s)**]
+
+DESCRIPTION
+===========
+
+**acefile-unace** extracts, views, or tests **ACE** archives, such
+as those created by WinACE. It does not allow creating or writing to
+archives.
+
+**acefile-unace** supports up to version 2.0 of the ACE archive
+format, including the EXE, DELTA, PIC and SOUND modes of ACE 2.0,
+password protected archives, and multi-volume archives.
+
+The **ace-file** argument is required. With no options, the default is to
+extract all files within **ace-file** to the current directory.
+
+OPTIONS
+=======
+
+-h, --help
+ Show built-in help message and exit.
+
+-V, --version
+ Show version number and exit.
+
+--extract, -x
+ Extract files in archive (default).
+
+--test, -t
+ Test archive integrity.
+
+--list, -l
+ List files in archive.
+
+--headers
+ Dump archive headers.
+
+-d directory, --basedir directory
+ Base directory for extraction (default: current directory).
+
+-p password, --password password
+ Password for decryption.
+
+-r, --restore
+ Restore mtime/atime, attribs and ntsecurity on extraction.
+
+-b, --batch
+ Suppress all interactive input.
+
+-v, --verbose
+ Be more verbose.
+
+--debug
+ Show mode transitions and expose internal exceptions.
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/acefile-unace-|version|/LICENSE.md for license information.
+
+AUTHORS
+=======
+
+**acefile-unace** was written by Daniel Roethlisberger.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+The acefile-unace homepage: https://pypi.org/project/acefile/
diff --git a/system/acefile/acefile.SlackBuild b/system/acefile/acefile.SlackBuild
new file mode 100644
index 000000000000..ddca4156db59
--- /dev/null
+++ b/system/acefile/acefile.SlackBuild
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+# Slackware build script for acefile
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# Note: the only ACE archives I could actually find in the wild to
+# test this with are the Windows and MS-DOS ACE self-extracting exes,
+# found here:
+
+# https://web.archive.org/web/20170619234433/http://www.winace.com/files/wace269i.exe
+# linked to from https://web.archive.org/web/20170619234433fw_/http://www.winace.com/news.html
+# https://web.archive.org/web/2005if_/http://www.winace.com:80/files/ace26.exe
+
+# $ file wace269i.exe
+# wace269i.exe: PE32 executable (GUI) Intel 80386, for MS Windows, Petite compressed, ACE self-extracting archive
+# $ file ace26.exe
+# ace26.exe: MS-DOS executable, LE executable for MS-DOS, PMODE/W DOS extender, UPX compressed, ACE self-extracting archive
+
+# acefile-unace extracts both of the exes just fine.
+
+# Also, I used dosbox to run the ms-dos ace.exe and created an .ace
+# archive with 2 small images in it, and it worked fine, too. Although
+# only if the files were small (probably a limitation of the shareware
+# ms-dos ace). With large files, acefile-unace and regular unace
+# both show CRC errors... but sometimes regular unace will segfault
+# instead.
+
+# ...it seems to work just fine. As the README says, it's a bit slow to
+# extract, but AFAICT the results are correct.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=acefile
+VERSION=${VERSION:-0.6.12}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+# No CFLAGS or LIBDIRSUFFIX needed here. It uses -O3 for the native code,
+# and I don't see a way to change it.
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+python3 setup.py install --root=$PKG
+strip $PKG/usr/lib*/python*/site-packages/*.so
+
+# man page by SlackBuild author.
+mkdir -p $PKG/usr/man/man1
+gzip -9c < $CWD/acefile-unace.1 > $PKG/usr/man/man1/acefile-unace.1.gz
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a *.md $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/system/acefile/acefile.info b/system/acefile/acefile.info
new file mode 100644
index 000000000000..e93d5ac30633
--- /dev/null
+++ b/system/acefile/acefile.info
@@ -0,0 +1,10 @@
+PRGNAM="acefile"
+VERSION="0.6.12"
+HOMEPAGE="https://pypi.org/project/acefile/"
+DOWNLOAD="https://files.pythonhosted.org/packages/source/a/acefile/acefile-0.6.12.tar.gz"
+MD5SUM="a1bb0e5e711e876c12833a305664917a"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/system/acefile/slack-desc b/system/acefile/slack-desc
new file mode 100644
index 000000000000..5b196ae357c4
--- /dev/null
+++ b/system/acefile/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+acefile: acefile (extract ACE 1.0 and 2.0 archives)
+acefile:
+acefile: This single-file, pure python 3, no-dependencies implementation is
+acefile: intended to be used as a library, but also provides a stand-alone
+acefile: unace utility. As a mostly pure-python implementation, it is
+acefile: significantly slower than native implementations, but more robust
+acefile: against vulnerabilities.
+acefile:
+acefile:
+acefile:
+acefile: