From 1a260f04ce5b88a4c9f10b8d33ddecca284a78ea Mon Sep 17 00:00:00 2001 From: PktSurf Date: Fri, 18 Oct 2024 10:50:11 +0530 Subject: [PATCH] Disabled native language support (nls) in: -> base/gdb,gdbm,glib,iso-codes,libgpg-error, -> libidn2,libqalculate,popt,procps-ng,sudo,sysstat,texinfo,xz Made fixes to a bunch of base build files to put stuff in /usr --- base/eudev/eudev.SMBuild | 5 +- base/gdb/gdb.SMBuild | 6 +- base/gdbm/gdbm.SMBuild | 8 +- base/gettext/gettext.SMBuild | 8 +- base/giflib/giflib.SMBuild | 2 +- base/glib/glib.SMBuild | 14 +- base/gzip/gzip.SMBuild | 5 +- base/icu/icu.SMBuild | 16 +- base/iso-codes/iso-codes.SMBuild | 3 +- base/itstool/itstool.SMBuild | 3 +- base/kbd/kbd.SMBuild | 4 +- base/keyutils/keyutils.SMBuild | 20 +- base/libassuan/libassuan.SMBuild | 3 +- base/libcap-ng/libcap-ng.SMBuild | 3 +- base/libcddb/libcddb.SMBuild | 6 +- .../libcdio-paranoia/libcdio-paranoia.SMBuild | 3 +- base/libcdio/libcdio.SMBuild | 3 +- base/libcroco/libcroco.SMBuild | 3 +- base/libcue/libcue.SMBuild | 2 +- base/libdaemon/libdaemon.SMBuild | 5 +- base/libetpan/libetpan.SMBuild | 2 +- base/libevent/libevent.SMBuild | 3 +- base/libexif/libexif.SMBuild | 4 +- base/libffi/libffi.SMBuild | 2 +- base/libgc/libgc.SMBuild | 7 +- base/libgcrypt/libgcrypt.SMBuild | 5 +- base/libgit2/libgit2.SMBuild | 8 +- base/libgpg-error/libgpg-error.SMBuild | 6 +- base/libical/libical.SMBuild | 5 +- base/libid3tag/libid3tag.SMBuild | 6 +- base/libidn2/libidn2.SMBuild | 6 +- base/libjpeg-turbo/libjpeg-turbo.SMBuild | 8 +- base/libkate/libkate.SMBuild | 5 +- base/libmnl/libmnl.SMBuild | 4 +- base/libmodplug/libmodplug.SMBuild | 2 +- base/libmtp/libmtp.SMBuild | 3 +- base/libmypaint/libmypaint.SMBuild | 2 +- .../libnetfilter-conntrack.SMBuild | 2 +- base/libnfnetlink/libnfnetlink.SMBuild | 2 +- base/libnfs/libnfs.SMBuild | 3 +- base/libnl/libnl.SMBuild | 3 +- base/libogg/libogg.SMBuild | 4 +- base/libopenal/libopenal.SMBuild | 4 +- base/libpng/libpng.SMBuild | 3 +- base/libpsl/libpsl.SMBuild | 3 +- base/libqalculate/libqalculate.SMBuild | 6 +- base/libsamplerate/libsamplerate.SMBuild | 6 +- base/libseccomp/libseccomp.SMBuild | 3 +- base/libsndfile/libsndfile.SMBuild | 3 +- base/libsodium/libsodium.SMBuild | 2 +- base/libssh2/libssh2.SMBuild | 2 +- base/libtasn1/libtasn1.SMBuild | 3 +- base/libtheora/libtheora.SMBuild | 5 +- base/libtool/libtool.SMBuild | 3 +- base/libtorrent/libtorrent.SMBuild | 2 +- base/libunistring/libunistring.SMBuild | 5 +- base/libusb/libusb.SMBuild | 2 +- base/libuv/libuv.SMBuild | 4 +- base/libvncserver/libvncserver.SMBuild | 3 +- base/libvorbis/libvorbis.SMBuild | 2 +- base/lm-sensors/lm-sensors.SMBuild | 4 +- base/logrotate/logrotate.SMBuild | 4 +- base/lsof/lsof.SMBuild | 2 +- base/lvm/lvm.SMBuild | 4 +- base/lz4/lz4.SMBuild | 4 +- base/lzip/lzip.SMBuild | 3 +- base/lzlib/lzlib.SMBuild | 2 +- base/lzo/lzo.SMBuild | 4 +- base/m4/m4.SMBuild | 3 +- base/make/make.SMBuild | 5 +- base/makeself/makeself.SMBuild | 2 +- base/man-pages/man-pages.SMBuild | 14 +- base/meson/meson.SMBuild | 8 +- base/miniupnpc/miniupnpc.SMBuild | 2 +- base/mksh/mksh.SMBuild | 2 +- base/mlocate/mlocate.SMBuild | 4 +- base/mpfr/mpfr.SMBuild | 4 +- base/mpg123/mpg123.SMBuild | 3 +- base/mtools/mtools.SMBuild | 3 +- base/mypaint-brushes/mypaint-brushes.SMBuild | 2 +- base/nano/nano.SMBuild | 5 +- base/nasm/nasm.SMBuild | 5 +- base/ncdu/ncdu.SMBuild | 2 +- base/netbsd-curses/netbsd-curses.SMBuild | 9 +- base/nettle/nettle.SMBuild | 7 +- base/nghttp2/nghttp2.SMBuild | 2 +- base/ninja/ninja.SMBuild | 2 +- base/npth/npth.SMBuild | 3 +- base/oniguruma/oniguruma.SMBuild | 3 +- base/opus/opus.SMBuild | 2 +- base/opusfile/opusfile.SMBuild | 4 +- base/p11-kit/p11-kit.SMBuild | 5 +- base/parted/parted.SMBuild | 4 +- base/patch/patch.SMBuild | 5 +- base/pciutils/pciutils.SMBuild | 8 +- base/pcre/pcre.SMBuild | 5 +- base/pcre2/pcre2.SMBuild | 3 +- base/physfs/physfs.SMBuild | 2 +- base/pigz/pigz.SMBuild | 2 +- base/pkgconf/pkgconf.SMBuild | 9 +- base/plzip/plzip.SMBuild | 3 +- base/pm-utils/pm-utils.SMBuild | 3 +- base/popt/popt.SMBuild | 4 +- base/portaudio/portaudio.SMBuild | 2 +- base/procps-ng/procps-ng.SMBuild | 10 +- base/protobuf/protobuf.SMBuild | 2 +- base/pv/pv.SMBuild | 3 +- base/pwgen/pwgen.SMBuild | 3 +- base/qrencode/qrencode.SMBuild | 3 +- base/readline/readline.SMBuild | 5 +- base/ruby/ruby.SMBuild | 3 +- base/sbc/sbc.SMBuild | 5 +- base/sed/sed.SMBuild | 3 +- base/smartmontools/smartmontools.SMBuild | 4 +- base/soxr/soxr.SMBuild | 7 +- base/sqlite/sqlite.SMBuild | 13 +- base/strace/strace.SMBuild | 3 +- base/sudo/sudo.SMBuild | 10 +- base/swig/swig.SMBuild | 3 +- base/sysfsutils/sysfsutils.SMBuild | 8 +- base/sysklogd/sysklogd.SMBuild | 6 +- base/sysstat/sysstat.SMBuild | 6 +- base/tar/tar.SMBuild | 6 +- base/tarlz/tarlz.SMBuild | 3 +- base/texinfo/texinfo.SMBuild | 6 +- base/time/time.SMBuild | 3 +- base/tofrodos/tofrodos.SMBuild | 2 + base/tofrodos/tofrodos/COPYING | 339 +++++++++ base/tofrodos/tofrodos/filelist.txt | 60 ++ base/tofrodos/tofrodos/fromdos.exe | Bin 0 -> 52736 bytes base/tofrodos/tofrodos/readme.txt | 429 +++++++++++ base/tofrodos/tofrodos/src/Makefile | 97 +++ base/tofrodos/tofrodos/src/config.h | 174 +++++ base/tofrodos/tofrodos/src/emsg.c | 68 ++ base/tofrodos/tofrodos/src/emsg.h | 53 ++ base/tofrodos/tofrodos/src/fromdos.1 | 126 ++++ base/tofrodos/tofrodos/src/init.c | 215 ++++++ base/tofrodos/tofrodos/src/lib/getopt.c | 264 +++++++ base/tofrodos/tofrodos/src/lib/getopt.h | 42 ++ base/tofrodos/tofrodos/src/lib/mktemp.c | 99 +++ base/tofrodos/tofrodos/src/lib/mktemp.h | 28 + base/tofrodos/tofrodos/src/makefile.gcc | 97 +++ base/tofrodos/tofrodos/src/makefile.min | 68 ++ base/tofrodos/tofrodos/src/makefile.vs7 | 89 +++ base/tofrodos/tofrodos/src/makefile.wcc | 122 +++ base/tofrodos/tofrodos/src/tofrodos.c | 714 ++++++++++++++++++ base/tofrodos/tofrodos/src/tofrodos.h | 58 ++ base/tofrodos/tofrodos/src/utility.c | 68 ++ base/tofrodos/tofrodos/src/utility.h | 28 + base/tofrodos/tofrodos/src/version.h | 16 + base/tofrodos/tofrodos/todos.exe | Bin 0 -> 52736 bytes base/tofrodos/tofrodos/tofrodos.html | 182 +++++ base/tofrodos/tofrodos/tofrodos.lsm | 23 + base/toluapp/toluapp.SMBuild | 6 +- base/tree/tree.SMBuild | 4 +- base/twolame/twolame.SMBuild | 5 +- base/tzdb/tzdb.SMBuild | 9 +- base/unzip/unzip.SMBuild | 4 +- base/usbutils/usbutils.SMBuild | 5 +- base/wavpack/wavpack.SMBuild | 3 +- .../wayland-protocols.SMBuild | 2 +- base/wayland/wayland.SMBuild | 3 +- base/which/which.SMBuild | 3 +- base/wireless-regdb/wireless-regdb.SMBuild | 8 +- base/woff2/woff2.SMBuild | 3 +- base/xz/xz.SMBuild | 9 +- 166 files changed, 3817 insertions(+), 276 deletions(-) create mode 100644 base/tofrodos/tofrodos/COPYING create mode 100644 base/tofrodos/tofrodos/filelist.txt create mode 100755 base/tofrodos/tofrodos/fromdos.exe create mode 100644 base/tofrodos/tofrodos/readme.txt create mode 100644 base/tofrodos/tofrodos/src/Makefile create mode 100644 base/tofrodos/tofrodos/src/config.h create mode 100644 base/tofrodos/tofrodos/src/emsg.c create mode 100644 base/tofrodos/tofrodos/src/emsg.h create mode 100644 base/tofrodos/tofrodos/src/fromdos.1 create mode 100644 base/tofrodos/tofrodos/src/init.c create mode 100644 base/tofrodos/tofrodos/src/lib/getopt.c create mode 100644 base/tofrodos/tofrodos/src/lib/getopt.h create mode 100644 base/tofrodos/tofrodos/src/lib/mktemp.c create mode 100644 base/tofrodos/tofrodos/src/lib/mktemp.h create mode 100644 base/tofrodos/tofrodos/src/makefile.gcc create mode 100644 base/tofrodos/tofrodos/src/makefile.min create mode 100644 base/tofrodos/tofrodos/src/makefile.vs7 create mode 100644 base/tofrodos/tofrodos/src/makefile.wcc create mode 100644 base/tofrodos/tofrodos/src/tofrodos.c create mode 100644 base/tofrodos/tofrodos/src/tofrodos.h create mode 100644 base/tofrodos/tofrodos/src/utility.c create mode 100644 base/tofrodos/tofrodos/src/utility.h create mode 100644 base/tofrodos/tofrodos/src/version.h create mode 100755 base/tofrodos/tofrodos/todos.exe create mode 100644 base/tofrodos/tofrodos/tofrodos.html create mode 100644 base/tofrodos/tofrodos/tofrodos.lsm diff --git a/base/eudev/eudev.SMBuild b/base/eudev/eudev.SMBuild index 11bd16e..3006e68 100755 --- a/base/eudev/eudev.SMBuild +++ b/base/eudev/eudev.SMBuild @@ -5,8 +5,7 @@ build=1sml homepage="https://wiki.gentoo.org/wiki/Eudev" download="http://sources.buildroot.net/eudev/eudev-$version.tar.gz" desc="Independent fork of udev dynamic device manager by Gentoo devs" -requires="util-linux" -preservestaticlibs=1 +requires="util-linux gperf" prepbuilddir() { mkandenterbuilddir @@ -19,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --bindir=/bin \ --sbindir=/bin \ --sysconfdir=/etc \ diff --git a/base/gdb/gdb.SMBuild b/base/gdb/gdb.SMBuild index fec506f..7e777e2 100755 --- a/base/gdb/gdb.SMBuild +++ b/base/gdb/gdb.SMBuild @@ -19,10 +19,12 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-werror \ --with-system-zlib \ - --disable-sim + --disable-sim \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/gdbm/gdbm.SMBuild b/base/gdbm/gdbm.SMBuild index 9572d18..bc56f1e 100755 --- a/base/gdbm/gdbm.SMBuild +++ b/base/gdbm/gdbm.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=gdbm version=1.23 -build=2sml +build=1sml homepage="https://www.gnu.org.ua/software/gdbm/" download="https://ftp.gnu.org/gnu/gdbm/gdbm-$version.tar.gz" desc="set of database routines that work similar to the standard UNIX dbm routines" @@ -18,8 +18,10 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static + --prefix=/usr \ + --bindir=/bin \ + --disable-static \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/gettext/gettext.SMBuild b/base/gettext/gettext.SMBuild index 94400cd..613a137 100755 --- a/base/gettext/gettext.SMBuild +++ b/base/gettext/gettext.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=gettext version=0.21.1 -build=2sml +build=1sml homepage="https://www.gnu.org/software/gettext/" download="https://ftp.gnu.org/pub/gnu/gettext/gettext-$version.tar.xz" desc="Toolkit to internationalize messages given by shell scripts" @@ -18,9 +18,11 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ + --disable-java \ --disable-static \ - --disable-java + --disable-nls make make install DESTDIR=$pkg diff --git a/base/giflib/giflib.SMBuild b/base/giflib/giflib.SMBuild index 6846fba..9ccd0b4 100755 --- a/base/giflib/giflib.SMBuild +++ b/base/giflib/giflib.SMBuild @@ -20,7 +20,7 @@ prepbuilddir() { build() { make CFLAGS="$CFLAGS" - make install DESTDIR="$pkg" PREFIX=/ + make install DESTDIR="$pkg" PREFIX=/usr BINDIR=/bin cp COPYING $pkgdocs/ diff --git a/base/glib/glib.SMBuild b/base/glib/glib.SMBuild index b1bf8e4..faf1390 100755 --- a/base/glib/glib.SMBuild +++ b/base/glib/glib.SMBuild @@ -19,11 +19,13 @@ prepbuilddir() { build() { mkdir -p smbuild && cd smbuild - meson .. --prefix=/ \ - -Dman=false \ - -Dgtk_doc=false \ - -Dselinux=disabled \ - -Dinstalled_tests=false + meson .. --prefix=/usr \ + --bindir=/bin \ + -Dman=false \ + -Dgtk_doc=false \ + -Dselinux=disabled \ + -Dinstalled_tests=false \ + -Dnls=disabled ninja DESTDIR="$pkg" ninja install @@ -35,4 +37,4 @@ build() { sha512sums=" 417177f991fc449308135d6390a4c887a02718c32ba8a3699126d2f2d2b3225fb34946c47ae32895232e1e0df65ae3a9643ed7bc9c6d0a42c0847ab8e134a1a3 glib-2.78.1.tar.lz -" \ No newline at end of file +" diff --git a/base/gzip/gzip.SMBuild b/base/gzip/gzip.SMBuild index 52b92a9..3d0264c 100755 --- a/base/gzip/gzip.SMBuild +++ b/base/gzip/gzip.SMBuild @@ -18,8 +18,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= - + --prefix=/usr \ + --bindir=/bin + make make install DESTDIR=$pkg diff --git a/base/icu/icu.SMBuild b/base/icu/icu.SMBuild index 13c7e9c..463dbb9 100755 --- a/base/icu/icu.SMBuild +++ b/base/icu/icu.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=icu version=72.1 -build=2sml +build=1sml homepage="http://www.icu-project.org/" download="https://github.com/unicode-org/icu/releases/download/release-72-1/icu4c-72_1-src.tgz" desc="International Components for Unicode" @@ -9,20 +9,20 @@ requires="gcc-libs python3" prepbuilddir() { mkandenterbuilddir - rm -rf "$app" + rm -rf $app-$version - sversion="$(echo $version | sed 's/\./_/g')" - tar xf $srcdir/icu4c-$sversion-src.tar.lz - cd icu + tar xf $srcdir/$app-$version.tar.?z* + cd $app-$version fixbuilddirpermissions } build() { cd source ./configure \ - --prefix="" \ + --prefix=/usr \ + --bindir=/bin \ --sbindir=/bin \ - --docdir="/share/doc/$app-$version" \ + --docdir="/usr/share/doc/$app-$version" \ --disable-tests \ --disable-samples \ --disable-static @@ -34,5 +34,5 @@ build() { } sha512sums=" -2d4b77236520b97135d540da6a672795d45f3bf2b0b5cc924d178491761e1f16de6fa8ab5ab9726d2f81ba214c670f2ca2d2c44b59eccda6e9500f97b2b48b30 icu4c-72_1-src.tar.lz +c60f9caa263c6d4e920ae573c3245a86f8778637392dc7fbd17c4d1162997c7628beec18fc60bc22962b211aa0d522cbbbf86221cf6ae772369602a300cee09d icu-72.1.tar.lz " diff --git a/base/iso-codes/iso-codes.SMBuild b/base/iso-codes/iso-codes.SMBuild index c7ee2f7..5b36794 100755 --- a/base/iso-codes/iso-codes.SMBuild +++ b/base/iso-codes/iso-codes.SMBuild @@ -24,7 +24,8 @@ build() { fi ./configure \ - --prefix= + --prefix=/usr \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/itstool/itstool.SMBuild b/base/itstool/itstool.SMBuild index 27543e8..449addb 100755 --- a/base/itstool/itstool.SMBuild +++ b/base/itstool/itstool.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/kbd/kbd.SMBuild b/base/kbd/kbd.SMBuild index 7617fc6..c3944f6 100755 --- a/base/kbd/kbd.SMBuild +++ b/base/kbd/kbd.SMBuild @@ -35,11 +35,11 @@ build() { # generate busybox loadkmap compatible keymaps from the gnu ones # taken from http://hg.slitaz.org/wok/file/3f989c266063/kbd-busybox/receipt - mkdir -p "$pkg"/share/kmap + mkdir -p "$pkg"/usr/share/kmap for i in $(cat $srcdir/keymaps) ; do k=$(basename $i) k=${k%.map} # strips off .map from $k - ./loadkeys -b -q data/keymaps/i386/$i > "$pkg"/share/kmap/$k.kmap || echo "Error loadkeys...$i" + ./loadkeys -b -q data/keymaps/i386/$i > "$pkg"/usr/share/kmap/$k.kmap || echo "Error loadkeys...$i" done install -Dm 755 $srcdir/loadkeys $pkg/bin/loadkeys diff --git a/base/keyutils/keyutils.SMBuild b/base/keyutils/keyutils.SMBuild index ac45cb7..62c2858 100755 --- a/base/keyutils/keyutils.SMBuild +++ b/base/keyutils/keyutils.SMBuild @@ -17,23 +17,23 @@ prepbuilddir() { build() { make -j1 NO_ARLIB=1 \ - LIBDIR=/lib \ - USRLIBDIR=/lib \ + LIBDIR=/usr/lib \ + USRLIBDIR=/usr/lib \ SBINDIR=/bin \ - MANDIR=/share/man \ - SHAREDIR=/share \ - INCLUDEDIR=/include \ + MANDIR=/usr/share/man \ + SHAREDIR=/usr/share \ + INCLUDEDIR=/usr/include \ version="$version" \ RELEASE="-r0" \ CFLAGS="$CFLAGS" make -j1 NO_ARLIB=1 \ - LIBDIR=/lib \ - USRLIBDIR=/lib \ + LIBDIR=/usr/lib \ + USRLIBDIR=/usr/lib \ SBINDIR=/bin \ - MANDIR=/share/man \ - SHAREDIR=/share \ - INCLUDEDIR=/include \ + MANDIR=/usr/share/man \ + SHAREDIR=/usr/share \ + INCLUDEDIR=/usr/include \ install DESTDIR=$pkg cp LICENCE* $pkgdocs/ diff --git a/base/libassuan/libassuan.SMBuild b/base/libassuan/libassuan.SMBuild index 85e5c4b..f7cc7c8 100755 --- a/base/libassuan/libassuan.SMBuild +++ b/base/libassuan/libassuan.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libcap-ng/libcap-ng.SMBuild b/base/libcap-ng/libcap-ng.SMBuild index 00410aa..2045660 100755 --- a/base/libcap-ng/libcap-ng.SMBuild +++ b/base/libcap-ng/libcap-ng.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-static=no \ --with-python=no \ --with-python3=no diff --git a/base/libcddb/libcddb.SMBuild b/base/libcddb/libcddb.SMBuild index ad33d73..c35f1af 100755 --- a/base/libcddb/libcddb.SMBuild +++ b/base/libcddb/libcddb.SMBuild @@ -18,9 +18,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static \ - $builddist + --prefix=/usr \ + --bindir=/bin \ + --disable-static make make install DESTDIR=$pkg diff --git a/base/libcdio-paranoia/libcdio-paranoia.SMBuild b/base/libcdio-paranoia/libcdio-paranoia.SMBuild index 035a69c..adf9a53 100755 --- a/base/libcdio-paranoia/libcdio-paranoia.SMBuild +++ b/base/libcdio-paranoia/libcdio-paranoia.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-cpp-progs \ --disable-static \ --disable-example-progs diff --git a/base/libcdio/libcdio.SMBuild b/base/libcdio/libcdio.SMBuild index fe6a065..7db1ce3 100755 --- a/base/libcdio/libcdio.SMBuild +++ b/base/libcdio/libcdio.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-vcd-info \ --disable-static \ --enable-cpp-progs diff --git a/base/libcroco/libcroco.SMBuild b/base/libcroco/libcroco.SMBuild index e187629..8c2e4da 100755 --- a/base/libcroco/libcroco.SMBuild +++ b/base/libcroco/libcroco.SMBuild @@ -17,7 +17,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libcue/libcue.SMBuild b/base/libcue/libcue.SMBuild index 8d27fbf..07ab87d 100755 --- a/base/libcue/libcue.SMBuild +++ b/base/libcue/libcue.SMBuild @@ -20,7 +20,7 @@ build() { mkdir -p smbuild && cd smbuild cmake .. \ - -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ -DBUILD_SHARED_LIBS=ON diff --git a/base/libdaemon/libdaemon.SMBuild b/base/libdaemon/libdaemon.SMBuild index fcdd436..1556aeb 100755 --- a/base/libdaemon/libdaemon.SMBuild +++ b/base/libdaemon/libdaemon.SMBuild @@ -20,9 +20,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static \ - $builddist + --prefix=/usr \ + --disable-static make make install DESTDIR=$pkg diff --git a/base/libetpan/libetpan.SMBuild b/base/libetpan/libetpan.SMBuild index 6e87745..6656c03 100755 --- a/base/libetpan/libetpan.SMBuild +++ b/base/libetpan/libetpan.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libevent/libevent.SMBuild b/base/libevent/libevent.SMBuild index ddeb4af..7ddf134 100755 --- a/base/libevent/libevent.SMBuild +++ b/base/libevent/libevent.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libexif/libexif.SMBuild b/base/libexif/libexif.SMBuild index 58ae354..416aa02 100755 --- a/base/libexif/libexif.SMBuild +++ b/base/libexif/libexif.SMBuild @@ -2,7 +2,7 @@ app=libexif version=0.6.22 mversion="(echo $version | sed 's@_@.)" -build=2sml +build=1sml homepage="https://libexif.github.io/" download="https://github.com/libexif/libexif/releases/download/libexif-$mversion-release/libexif-$version.tar.xz" desc="Exchangeable Image File Format library" @@ -19,7 +19,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libffi/libffi.SMBuild b/base/libffi/libffi.SMBuild index a510e47..f4c9eb1 100755 --- a/base/libffi/libffi.SMBuild +++ b/base/libffi/libffi.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libgc/libgc.SMBuild b/base/libgc/libgc.SMBuild index f679130..d13deda 100755 --- a/base/libgc/libgc.SMBuild +++ b/base/libgc/libgc.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=libgc version=8.0.4 -build=2sml +build=1sml homepage="https://www.hboehm.info/gc/" download="https://www.hboehm.info/gc/gc_source/gc-$version.tar.gz" desc="Conservative garbage collector for C and C++" @@ -18,11 +18,10 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --enable-cplusplus \ --enable-threads=pthreads \ - --disable-static \ - $builddist + --disable-static make make install DESTDIR=$pkg diff --git a/base/libgcrypt/libgcrypt.SMBuild b/base/libgcrypt/libgcrypt.SMBuild index ddd237c..d54f6c8 100755 --- a/base/libgcrypt/libgcrypt.SMBuild +++ b/base/libgcrypt/libgcrypt.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-shared=yes \ --enable-static=no \ --program-prefix="" \ @@ -34,4 +35,4 @@ build() { sha512sums=" 71202e8300251cb41c3af9b731b01d31b674f99f4c0ca9f878f4fc14d00d65cda66cec1538e95a8cb3c79d231cd4bddec20507256633fd5f4987a598c6b76e17 libgcrypt-1.10.2.tar.lz -" \ No newline at end of file +" diff --git a/base/libgit2/libgit2.SMBuild b/base/libgit2/libgit2.SMBuild index b85d9f5..85c3db4 100755 --- a/base/libgit2/libgit2.SMBuild +++ b/base/libgit2/libgit2.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=libgit2 version=1.0.1 -build=2sml +build=1sml homepage="https://libgit2.github.com/" download="https://github.com/libgit2/libgit2/releases/download/v1.0.1/libgit2-1.0.1.tar.gz" desc="C library for custom Git applications" @@ -20,11 +20,9 @@ build() { mkdir -p smbuild && cd smbuild cmake .. \ - -DCMAKE_BUILD_TYPE=None \ - -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DTHREADSAFE=ON \ - -Wno-dev + -DTHREADSAFE=ON make make install DESTDIR=$pkg diff --git a/base/libgpg-error/libgpg-error.SMBuild b/base/libgpg-error/libgpg-error.SMBuild index ad87b7b..3c64491 100755 --- a/base/libgpg-error/libgpg-error.SMBuild +++ b/base/libgpg-error/libgpg-error.SMBuild @@ -21,8 +21,10 @@ prepbuilddir() { build() { autoreconf -vif ./configure \ - --prefix= \ - --enable-install-gpg-error-config + --prefix=/usr \ + --bindir=/bin \ + --enable-install-gpg-error-config \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/libical/libical.SMBuild b/base/libical/libical.SMBuild index f7e1a58..0a3c45f 100755 --- a/base/libical/libical.SMBuild +++ b/base/libical/libical.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=libical version=3.0.8 -build=2sml +build=1sml homepage="https://github.com/libical/libical" download="https://github.com/libical/libical/archive/refs/tags/v$version.tar.gz" desc="iCAL calendaring and scheduling protocol implementation" @@ -22,9 +22,8 @@ prepbuilddir() { build() { mkdir -p smbuild && cd smbuild cmake .. \ - -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_INSTALL_LIBDIR=lib \ - -DINCLUDE_INSTALL_DIR=include \ -DCMAKE_BUILD_TYPE=Release \ -DENABLE_GTK_DOC=OFF \ -DSHARED_ONLY=ON diff --git a/base/libid3tag/libid3tag.SMBuild b/base/libid3tag/libid3tag.SMBuild index 4d81b2c..145b4d7 100755 --- a/base/libid3tag/libid3tag.SMBuild +++ b/base/libid3tag/libid3tag.SMBuild @@ -19,9 +19,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static \ - $builddist + --prefix=/usr \ + --bindir=/bin \ + --disable-static make make install DESTDIR=$pkg diff --git a/base/libidn2/libidn2.SMBuild b/base/libidn2/libidn2.SMBuild index 3b3faf1..3fb950d 100755 --- a/base/libidn2/libidn2.SMBuild +++ b/base/libidn2/libidn2.SMBuild @@ -17,8 +17,10 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static + --prefix=/usr \ + --bindir=/bin \ + --disable-static \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/libjpeg-turbo/libjpeg-turbo.SMBuild b/base/libjpeg-turbo/libjpeg-turbo.SMBuild index 1c5f92a..fea9020 100755 --- a/base/libjpeg-turbo/libjpeg-turbo.SMBuild +++ b/base/libjpeg-turbo/libjpeg-turbo.SMBuild @@ -18,9 +18,9 @@ prepbuilddir() { build() { mkdir -p smbuild && cd smbuild cmake .. \ - -DCMAKE_INSTALL_PREFIX="" \ - -DCMAKE_INSTALL_LIBDIR="/lib" \ - -DCMAKE_INSTALL_DOCDIR="/share/doc/$app-$version" \ + -DCMAKE_INSTALL_PREFIX="/usr" \ + -DCMAKE_INSTALL_BINDIR="/bin" \ + -DCMAKE_INSTALL_LIBDIR="/usr/lib" \ -DENABLE_STATIC=OFF make @@ -31,4 +31,4 @@ build() { sha512sums=" 86a7248d064043b26b09755633ef4872a2a6133c9e677a9fe4be6645b2e0fde102cf01e09119967b3b6b85f4cb93f3f7c49ec4973944d5eff99b5b90ce8b0be6 libjpeg-turbo-2.1.5.1.tar.gz -" \ No newline at end of file +" diff --git a/base/libkate/libkate.SMBuild b/base/libkate/libkate.SMBuild index 2bee453..1fc9155 100755 --- a/base/libkate/libkate.SMBuild +++ b/base/libkate/libkate.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=libkate version=0.4.1 -build=2sml +build=1sml homepage="https://wiki.xiph.org/OggKate" desc="Codec providing karaoke and text support in Ogg" requires="libogg libpng python3" @@ -23,7 +23,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libmnl/libmnl.SMBuild b/base/libmnl/libmnl.SMBuild index f44a3a1..3f2e08b 100755 --- a/base/libmnl/libmnl.SMBuild +++ b/base/libmnl/libmnl.SMBuild @@ -18,8 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static + --prefix=/usr \ + --disable-static make make install DESTDIR=$pkg diff --git a/base/libmodplug/libmodplug.SMBuild b/base/libmodplug/libmodplug.SMBuild index 435834b..a04b996 100755 --- a/base/libmodplug/libmodplug.SMBuild +++ b/base/libmodplug/libmodplug.SMBuild @@ -17,7 +17,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libmtp/libmtp.SMBuild b/base/libmtp/libmtp.SMBuild index a55539b..d22c1d5 100755 --- a/base/libmtp/libmtp.SMBuild +++ b/base/libmtp/libmtp.SMBuild @@ -17,7 +17,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static \ --with-udev=/lib/udev diff --git a/base/libmypaint/libmypaint.SMBuild b/base/libmypaint/libmypaint.SMBuild index 10b6f9a..64e265d 100755 --- a/base/libmypaint/libmypaint.SMBuild +++ b/base/libmypaint/libmypaint.SMBuild @@ -17,7 +17,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-introspection make diff --git a/base/libnetfilter-conntrack/libnetfilter-conntrack.SMBuild b/base/libnetfilter-conntrack/libnetfilter-conntrack.SMBuild index 3c89563..0a43a06 100755 --- a/base/libnetfilter-conntrack/libnetfilter-conntrack.SMBuild +++ b/base/libnetfilter-conntrack/libnetfilter-conntrack.SMBuild @@ -17,7 +17,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libnfnetlink/libnfnetlink.SMBuild b/base/libnfnetlink/libnfnetlink.SMBuild index 81c4a64..a2e0cd2 100755 --- a/base/libnfnetlink/libnfnetlink.SMBuild +++ b/base/libnfnetlink/libnfnetlink.SMBuild @@ -19,7 +19,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libnfs/libnfs.SMBuild b/base/libnfs/libnfs.SMBuild index 02fa2ba..81571f3 100755 --- a/base/libnfs/libnfs.SMBuild +++ b/base/libnfs/libnfs.SMBuild @@ -17,7 +17,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libnl/libnl.SMBuild b/base/libnl/libnl.SMBuild index 77d2789..2e64593 100755 --- a/base/libnl/libnl.SMBuild +++ b/base/libnl/libnl.SMBuild @@ -17,7 +17,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libogg/libogg.SMBuild b/base/libogg/libogg.SMBuild index ae0d749..e92a886 100755 --- a/base/libogg/libogg.SMBuild +++ b/base/libogg/libogg.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=libogg version=1.3.4 -build=2sml +build=1sml homepage="https://xiph.org/ogg/" desc="Library for manipulating ogg bitstreams" requires="musl" @@ -17,7 +17,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libopenal/libopenal.SMBuild b/base/libopenal/libopenal.SMBuild index a72a5d2..51c181a 100755 --- a/base/libopenal/libopenal.SMBuild +++ b/base/libopenal/libopenal.SMBuild @@ -18,8 +18,8 @@ prepbuilddir() { build() { mkdir -p smbuild && cd smbuild cmake .. \ - -DCMAKE_INSTALL_PREFIX= \ - -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_BINDIR=/bin \ -DCMAKE_INSTALL_LIBDIR=lib make diff --git a/base/libpng/libpng.SMBuild b/base/libpng/libpng.SMBuild index c7f1685..b69a5db 100755 --- a/base/libpng/libpng.SMBuild +++ b/base/libpng/libpng.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libpsl/libpsl.SMBuild b/base/libpsl/libpsl.SMBuild index 948b77e..5470b2c 100755 --- a/base/libpsl/libpsl.SMBuild +++ b/base/libpsl/libpsl.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libqalculate/libqalculate.SMBuild b/base/libqalculate/libqalculate.SMBuild index d9e4794..758b469 100755 --- a/base/libqalculate/libqalculate.SMBuild +++ b/base/libqalculate/libqalculate.SMBuild @@ -18,8 +18,10 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static + --prefix=/usr \ + --bindir=/bin \ + --disable-static \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/libsamplerate/libsamplerate.SMBuild b/base/libsamplerate/libsamplerate.SMBuild index 145bfd1..13fd34a 100755 --- a/base/libsamplerate/libsamplerate.SMBuild +++ b/base/libsamplerate/libsamplerate.SMBuild @@ -18,9 +18,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --disable-static \ - $builddist + --prefix=/usr \ + --bindir=/bin \ + --disable-static make make install DESTDIR=$pkg diff --git a/base/libseccomp/libseccomp.SMBuild b/base/libseccomp/libseccomp.SMBuild index 5d41496..a467a43 100755 --- a/base/libseccomp/libseccomp.SMBuild +++ b/base/libseccomp/libseccomp.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libsndfile/libsndfile.SMBuild b/base/libsndfile/libsndfile.SMBuild index 5d4adfd..b105170 100755 --- a/base/libsndfile/libsndfile.SMBuild +++ b/base/libsndfile/libsndfile.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libsodium/libsodium.SMBuild b/base/libsodium/libsodium.SMBuild index 09b2a33..bea7610 100755 --- a/base/libsodium/libsodium.SMBuild +++ b/base/libsodium/libsodium.SMBuild @@ -20,7 +20,7 @@ build() { ac_cv_tls=__thread \ ax_cv_check_cflags___ftls_model_local_dynamic=no \ ./configure \ - --prefix= \ + --prefix=/usr \ --disable-ssp \ --disable-static diff --git a/base/libssh2/libssh2.SMBuild b/base/libssh2/libssh2.SMBuild index 296aa18..31779d3 100755 --- a/base/libssh2/libssh2.SMBuild +++ b/base/libssh2/libssh2.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --enable-static=no make diff --git a/base/libtasn1/libtasn1.SMBuild b/base/libtasn1/libtasn1.SMBuild index 7350805..cf21150 100755 --- a/base/libtasn1/libtasn1.SMBuild +++ b/base/libtasn1/libtasn1.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libtheora/libtheora.SMBuild b/base/libtheora/libtheora.SMBuild index 77e98f5..557e65e 100755 --- a/base/libtheora/libtheora.SMBuild +++ b/base/libtheora/libtheora.SMBuild @@ -20,10 +20,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static \ - --disable-examples \ - $builddist + --disable-examples make make install DESTDIR=$pkg diff --git a/base/libtool/libtool.SMBuild b/base/libtool/libtool.SMBuild index a9a1f9e..2450261 100755 --- a/base/libtool/libtool.SMBuild +++ b/base/libtool/libtool.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/libtorrent/libtorrent.SMBuild b/base/libtorrent/libtorrent.SMBuild index cd7d795..f7ada5f 100755 --- a/base/libtorrent/libtorrent.SMBuild +++ b/base/libtorrent/libtorrent.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-debug \ --without-kqueue \ --enable-aligned \ diff --git a/base/libunistring/libunistring.SMBuild b/base/libunistring/libunistring.SMBuild index 81fd0ba..e9c81dc 100755 --- a/base/libunistring/libunistring.SMBuild +++ b/base/libunistring/libunistring.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=libunistring version=0.9.10 -build=2sml +build=1sml homepage="http://www.gnu.org/s/libunistring" download="https://ftp.gnu.org/gnu/libunistring/libunistring-$version.tar.gz" desc="GNU Unicode string manipulating library" @@ -17,9 +17,8 @@ prepbuilddir() { } build() { - ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static \ --disable-rpath diff --git a/base/libusb/libusb.SMBuild b/base/libusb/libusb.SMBuild index 122f872..5bef10f 100755 --- a/base/libusb/libusb.SMBuild +++ b/base/libusb/libusb.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/libuv/libuv.SMBuild b/base/libuv/libuv.SMBuild index 718a28d..7dda25d 100755 --- a/base/libuv/libuv.SMBuild +++ b/base/libuv/libuv.SMBuild @@ -20,7 +20,7 @@ build() { ./autogen.sh ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make @@ -33,4 +33,4 @@ build() { sha512sums=" 20753fcbded93dead97777d6c18eb36b2440a73475946da2fe0d2125059e6d3915e89f2889bffb944f6507ee228860a3df9814d1bd68a61db235017f7f601bd0 libuv-v1.45.0.tar.lz -" \ No newline at end of file +" diff --git a/base/libvncserver/libvncserver.SMBuild b/base/libvncserver/libvncserver.SMBuild index c7b05e1..c16035b 100755 --- a/base/libvncserver/libvncserver.SMBuild +++ b/base/libvncserver/libvncserver.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static \ --without-ssl diff --git a/base/libvorbis/libvorbis.SMBuild b/base/libvorbis/libvorbis.SMBuild index 769d19f..89d9357 100755 --- a/base/libvorbis/libvorbis.SMBuild +++ b/base/libvorbis/libvorbis.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/lm-sensors/lm-sensors.SMBuild b/base/lm-sensors/lm-sensors.SMBuild index d82330e..c4f7251 100755 --- a/base/lm-sensors/lm-sensors.SMBuild +++ b/base/lm-sensors/lm-sensors.SMBuild @@ -18,8 +18,8 @@ prepbuilddir() { } build() { - make PREFIX= SBINDIR=/bin BUILD_STATIC_LIB=0 - make install PREFIX= DESTDIR="$pkg" SBINDIR=bin MANDIR=share/man BUILD_STATIC_LIB=0 + make PREFIX=/usr SBINDIR=/bin BUILD_STATIC_LIB=0 + make install PREFIX=/usr DESTDIR="$pkg" BINDIR=/bin SBINDIR=/bin MANDIR=/usr/share/man BUILD_STATIC_LIB=0 cp COPYING* $pkgdocs/ diff --git a/base/logrotate/logrotate.SMBuild b/base/logrotate/logrotate.SMBuild index 09f018b..0f6d7ce 100755 --- a/base/logrotate/logrotate.SMBuild +++ b/base/logrotate/logrotate.SMBuild @@ -21,14 +21,14 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --with-acl make clean make install -Dm 755 $app $pkg/bin/$app - install -Dm 644 $app.8 $pkg/share/man/man8/$app.8 + install -Dm 644 $app.8 $pkg/usr/share/man/man8/$app.8 mkdir -p $pkg/etc/logrotate.d $pkg/var/spool/cron/crontabs cp $srcdir/logrotate.conf.new $pkg/etc/ diff --git a/base/lsof/lsof.SMBuild b/base/lsof/lsof.SMBuild index 7a4da6c..0bd297d 100755 --- a/base/lsof/lsof.SMBuild +++ b/base/lsof/lsof.SMBuild @@ -23,7 +23,7 @@ build() { cp 00README $pkgdocs/LICENSE install -Dm 755 lsof $pkg/bin/lsof - install -Dm 644 Lsof.8 $pkg/share/man/man8/lsof.8 + install -Dm 644 Lsof.8 $pkg/usr/share/man/man8/lsof.8 mkfinalpkg } diff --git a/base/lvm/lvm.SMBuild b/base/lvm/lvm.SMBuild index 70ab582..eb16807 100755 --- a/base/lvm/lvm.SMBuild +++ b/base/lvm/lvm.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=lvm version=2.2.02.168 -build=2sml +build=1sml homepage="http://www.sourceware.org/lvm2/" download="ftp://sources.redhat.com/pub/lvm2/releases/LVM$version.tgz" desc="Collection of logical volume utilities" @@ -23,7 +23,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --sbindir=/bin \ --disable-readline \ --enable-dmeventd \ diff --git a/base/lz4/lz4.SMBuild b/base/lz4/lz4.SMBuild index efe00e2..1d08c2a 100755 --- a/base/lz4/lz4.SMBuild +++ b/base/lz4/lz4.SMBuild @@ -19,8 +19,8 @@ prepbuilddir() { build() { make -j1 \ CFLAGS="$CFLAGS" \ - PREFIX= \ - MANDIR="/share/man" \ + PREFIX=/usr \ + BINDIR=/bin \ BUILD_STATIC=no \ DESTDIR=$pkg default install diff --git a/base/lzip/lzip.SMBuild b/base/lzip/lzip.SMBuild index ed4a880..5a6fd6e 100755 --- a/base/lzip/lzip.SMBuild +++ b/base/lzip/lzip.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ CXXFLAGS="$CXXFLAGS -static" make diff --git a/base/lzlib/lzlib.SMBuild b/base/lzlib/lzlib.SMBuild index f7cf22d..b36206a 100755 --- a/base/lzlib/lzlib.SMBuild +++ b/base/lzlib/lzlib.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static \ CFLAGS="$CFLAGS" diff --git a/base/lzo/lzo.SMBuild b/base/lzo/lzo.SMBuild index 53c32a9..66bb8e6 100755 --- a/base/lzo/lzo.SMBuild +++ b/base/lzo/lzo.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=lzo version=2.10 -build=2sml +build=1sml homepage="http://www.oberhumer.com/opensource/lzo/" download="http://www.oberhumer.com/opensource/lzo/download/lzo-$version.tar.gz" desc="portable lossless data compression library written in ANSI C" @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --enable-shared=yes \ --enable-static=no diff --git a/base/m4/m4.SMBuild b/base/m4/m4.SMBuild index f1f060a..426e3ae 100755 --- a/base/m4/m4.SMBuild +++ b/base/m4/m4.SMBuild @@ -21,7 +21,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/make/make.SMBuild b/base/make/make.SMBuild index aecfe14..4a05d4f 100755 --- a/base/make/make.SMBuild +++ b/base/make/make.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=make version=4.4 -build=2sml +build=1sml homepage="https://www.gnu.org/software/make/" download="https://ftp.gnu.org/gnu/make/make-$version.tar.gz" desc="GNU make utility to maintain groups of programs" @@ -21,7 +21,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --without-guile make diff --git a/base/makeself/makeself.SMBuild b/base/makeself/makeself.SMBuild index 3a096cb..5ea9368 100755 --- a/base/makeself/makeself.SMBuild +++ b/base/makeself/makeself.SMBuild @@ -19,7 +19,7 @@ prepbuilddir() { build() { mkdir -p $pkg/bin cp makeself-header.sh makeself.sh makeself.lsm $pkg/bin/ - install -Dm 644 makeself.1 $pkg/share/man/man1/makeself.1 + install -Dm 644 makeself.1 $pkg/usr/share/man/man1/makeself.1 cp COPYING $pkgdocs/ diff --git a/base/man-pages/man-pages.SMBuild b/base/man-pages/man-pages.SMBuild index c61bfe4..9fe66f3 100755 --- a/base/man-pages/man-pages.SMBuild +++ b/base/man-pages/man-pages.SMBuild @@ -17,17 +17,17 @@ prepbuilddir() { } build() { - make install prefix= DESTDIR=$pkg + make install prefix=/usr DESTDIR=$pkg # Provided by mandoc - rm -fv "$pkg"/share/man/man7/man* \ - "$pkg"/share/man/man7/mdoc* + rm -fv "$pkg"/usr/share/man/man7/man* \ + "$pkg"/usrshare/man/man7/mdoc* # Provided by tzdata - rm -fv "$pkg"/share/man/man5/tzfile* \ - "$pkg"/share/man/man8/tzselect* \ - "$pkg"/share/man/man8/zic* \ - "$pkg"/share/man/man8/zdump* + rm -fv "$pkg"/usr/share/man/man5/tzfile* \ + "$pkg"/urs/share/man/man8/tzselect* \ + "$pkg"/usr/share/man/man8/zic* \ + "$pkg"/usr/share/man/man8/zdump* mkfinalpkg } diff --git a/base/meson/meson.SMBuild b/base/meson/meson.SMBuild index 375d9f3..1c611e1 100755 --- a/base/meson/meson.SMBuild +++ b/base/meson/meson.SMBuild @@ -1,6 +1,6 @@ # Maintainer: PktSurf app=meson -version=0.63.2 +version=1.3.0 build=1sml homepage="https://github.com/mesonbuild/meson" download="https://github.com/mesonbuild/meson/releases/download/$version/meson-$version.tar.gz" @@ -23,9 +23,13 @@ build() { cp COPYING $pkgdocs/ + mkdir $pkg/bin + mv $pkg/usr/bin/* $pkg/bin/ + rmdir $pkg/usr/bin + mkfinalpkg } sha512sums=" -08d0d6dc1e9e5adf9a624969d575c25f96bac1bf3ab78d7914a7fe0984f31ef6ff4d1a3e6f11eeac2185d92bbb1ed801de2a0447d489f3946a62e108288b62e6 meson-0.63.2.tar.lz +fbcbdd9551ad12b7be84411b96357e01c7c0c38a8e9933093d2e71ed7e12bd4278245798684d389c332eb75dd50c99310affc9acb01cf8bedd45265335083a32 meson-1.3.0.tar.gz " diff --git a/base/miniupnpc/miniupnpc.SMBuild b/base/miniupnpc/miniupnpc.SMBuild index 3aa6034..7d51276 100755 --- a/base/miniupnpc/miniupnpc.SMBuild +++ b/base/miniupnpc/miniupnpc.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { make - make install INSTALLPREFIX= DESTDIR=$pkg LIBDIR=lib + make install INSTALLPREFIX=/usr INSTALLDIRBIN=/bin DESTDIR=$pkg LIBDIR=lib python3 setup.py build python3 setup.py install --root=$pkg diff --git a/base/mksh/mksh.SMBuild b/base/mksh/mksh.SMBuild index 724c0a5..fd60c01 100755 --- a/base/mksh/mksh.SMBuild +++ b/base/mksh/mksh.SMBuild @@ -21,7 +21,7 @@ build() { chmod +x Build.sh CFLAGS+=" -static" ./Build.sh - install -Dm 644 mksh.1 $pkg/share/man/man1/mksh.1 + install -Dm 644 mksh.1 $pkg/usr/share/man/man1/mksh.1 install -Dm 755 mksh $pkg/bin/mksh head -n 26 Build.sh > $pkgdocs/LICENSE diff --git a/base/mlocate/mlocate.SMBuild b/base/mlocate/mlocate.SMBuild index bf632b4..1a4c187 100755 --- a/base/mlocate/mlocate.SMBuild +++ b/base/mlocate/mlocate.SMBuild @@ -23,7 +23,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin \ + --localstatedir=/var make make install DESTDIR=$pkg diff --git a/base/mpfr/mpfr.SMBuild b/base/mpfr/mpfr.SMBuild index 5e7dee6..954750f 100755 --- a/base/mpfr/mpfr.SMBuild +++ b/base/mpfr/mpfr.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=mpfr version=3.1.6 -build=2sml +build=1sml homepage="https://www.mpfr.org/" download="https://ftp.gnu.org/gnu/mpfr/mpfr-$version.tar.xz" desc="Multiple-Precision Floating-Point Reliable Library" @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/mpg123/mpg123.SMBuild b/base/mpg123/mpg123.SMBuild index 72454de..eec9d50 100755 --- a/base/mpg123/mpg123.SMBuild +++ b/base/mpg123/mpg123.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/mtools/mtools.SMBuild b/base/mtools/mtools.SMBuild index 5a0bc77..9cf77e4 100755 --- a/base/mtools/mtools.SMBuild +++ b/base/mtools/mtools.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --without-x make PREFIX= DESTDIR=$pkg -j1 all install diff --git a/base/mypaint-brushes/mypaint-brushes.SMBuild b/base/mypaint-brushes/mypaint-brushes.SMBuild index 4efb990..83153e0 100755 --- a/base/mypaint-brushes/mypaint-brushes.SMBuild +++ b/base/mypaint-brushes/mypaint-brushes.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr make make install DESTDIR=$pkg diff --git a/base/nano/nano.SMBuild b/base/nano/nano.SMBuild index 04ab05c..5483392 100755 --- a/base/nano/nano.SMBuild +++ b/base/nano/nano.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=nano version=3.2 -build=3sml +build=1sml homepage="http://www.nano-editor.org" download="https://www.nano-editor.org/dist/v3/nano-$version.tar.xz" desc="Nano's ANOther editor, an enhanced free Pico clone" @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/nasm/nasm.SMBuild b/base/nasm/nasm.SMBuild index b5b2bdb..1e323ca 100755 --- a/base/nasm/nasm.SMBuild +++ b/base/nasm/nasm.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=nasm version=2.14.02 -build=2sml +build=1sml homepage="https://www.nasm.us/" download="https://www.nasm.us/pub/nasm/releasebuilds/$version/nasm-$version.tar.xz" desc="Netwide assembler providing instruction mnemonics and syntax" @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/ncdu/ncdu.SMBuild b/base/ncdu/ncdu.SMBuild index 1de8c0f..9a5ea60 100755 --- a/base/ncdu/ncdu.SMBuild +++ b/base/ncdu/ncdu.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --bindir=/bin make diff --git a/base/netbsd-curses/netbsd-curses.SMBuild b/base/netbsd-curses/netbsd-curses.SMBuild index 37c036e..f0cc6bf 100755 --- a/base/netbsd-curses/netbsd-curses.SMBuild +++ b/base/netbsd-curses/netbsd-curses.SMBuild @@ -1,6 +1,6 @@ # Maintainer: PktSurf app=netbsd-curses -version=0.3.2 +version=0.3.1 build=1sml homepage="http://ftp.barfooze.de/pub/sabotage/tarballs/" download="https://ftp.barfooze.de/pub/sabotage/tarballs/netbsd-curses-$version.tar.xz" @@ -24,12 +24,13 @@ HOSTCC=gcc AR=ar RANLIB=ranlib CFLAGS=$CFLAGS -PREFIX= +PREFIX=/usr +BINDIR=/bin DESTDIR=$pkg EOF make - make install DESTDIR=$pkg + make install cp COPYING $pkgdocs/ @@ -37,5 +38,5 @@ EOF } sha512sums=" -225d0320f9968bd9b543b849258658e25ff72a051c96d182282eb30bcf0060ce8b158ec4eb7763560a3448c22346b00af1d1c0a3d236b2c8e07dc9f59c33a488 netbsd-curses-0.3.2.tar.lz +d8f650d241bd9db213194213900983c694194c00fcc406c1091b0be15248f6b6453983027cd87e1ff34eb05c6fd8f63797035d545df8b2642ec9b87a2a6a279e netbsd-curses-0.3.1.tar.lz " diff --git a/base/nettle/nettle.SMBuild b/base/nettle/nettle.SMBuild index 55bd1d8..5f5159b 100755 --- a/base/nettle/nettle.SMBuild +++ b/base/nettle/nettle.SMBuild @@ -18,13 +18,14 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make make install DESTDIR=$pkg - sed -i 's@#.*$@@g' "$pkg"/lib/pkgconfig/hogweed.pc + sed -i 's@#.*$@@g' "$pkg"/usr/lib/pkgconfig/hogweed.pc cp COPYING* $pkgdocs/ @@ -33,4 +34,4 @@ build() { sha512sums=" 05de0b705a2759ef684a59fea3cdfef5d3be7ae96fc501c47612ec94ece27bc92a613c1bf881c96ae5d12755d663f2fedfbf45b6f40de920c2c2b523b9583b3b nettle-3.9.tar.lz -" \ No newline at end of file +" diff --git a/base/nghttp2/nghttp2.SMBuild b/base/nghttp2/nghttp2.SMBuild index d5fe0ea..c8d2833 100755 --- a/base/nghttp2/nghttp2.SMBuild +++ b/base/nghttp2/nghttp2.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-examples \ --enable-lib-only \ --disable-static diff --git a/base/ninja/ninja.SMBuild b/base/ninja/ninja.SMBuild index 3c9f977..a2be0c9 100755 --- a/base/ninja/ninja.SMBuild +++ b/base/ninja/ninja.SMBuild @@ -22,7 +22,7 @@ build() { python ./configure.py --bootstrap install -Dm 755 ninja $pkg/bin/ninja - install -Dm 644 misc/bash-completion $pkg/share/bash-completion/completions/ninja + install -Dm 644 misc/bash-completion $pkg/usr/share/bash-completion/completions/ninja cp COPYING $pkgdocs/ diff --git a/base/npth/npth.SMBuild b/base/npth/npth.SMBuild index 64a9ad6..39c76d3 100755 --- a/base/npth/npth.SMBuild +++ b/base/npth/npth.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/oniguruma/oniguruma.SMBuild b/base/oniguruma/oniguruma.SMBuild index 240e809..d214611 100755 --- a/base/oniguruma/oniguruma.SMBuild +++ b/base/oniguruma/oniguruma.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-posix-api \ --disable-static diff --git a/base/opus/opus.SMBuild b/base/opus/opus.SMBuild index a8c6b59..d7fab18 100755 --- a/base/opus/opus.SMBuild +++ b/base/opus/opus.SMBuild @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static \ --disable-doc diff --git a/base/opusfile/opusfile.SMBuild b/base/opusfile/opusfile.SMBuild index 2c9d185..5f5ac99 100755 --- a/base/opusfile/opusfile.SMBuild +++ b/base/opusfile/opusfile.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=opusfile version=0.11 -build=2sml +build=1sml homepage="https://opus-codec.org/" download="https://downloads.xiph.org/releases/opus/opusfile-$version.tar.gz" desc="dependency for the opus audio library" @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static make diff --git a/base/p11-kit/p11-kit.SMBuild b/base/p11-kit/p11-kit.SMBuild index 7528495..f3c0ff7 100755 --- a/base/p11-kit/p11-kit.SMBuild +++ b/base/p11-kit/p11-kit.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=p11-kit version=0.23.20 -build=2sml +build=1sml homepage="https://github.com/p11-glue/p11-kit" download="https://github.com/p11-glue/p11-kit/archive/refs/tags/$version.tar.gz" desc="tools to load and enumerate PKCS#11 modules" @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --without-trust-paths make diff --git a/base/parted/parted.SMBuild b/base/parted/parted.SMBuild index 6fd5fd5..5fc76d3 100755 --- a/base/parted/parted.SMBuild +++ b/base/parted/parted.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=parted version=3.2 -build=2sml +build=1sml homepage="https://www.gnu.org/software/parted/" download="https://ftp.gnu.org/gnu/parted/parted-$version.tar.xz" desc="GNU disk partitioning tool" @@ -22,7 +22,7 @@ prepbuilddir() { build() { CFLAGS+=" -Dloff_t=off_t -include sys/sysmacros.h" \ ./configure \ - --prefix= \ + --prefix=/usr \ --sbindir=/bin \ --enable-threads=posix \ --disable-static diff --git a/base/patch/patch.SMBuild b/base/patch/patch.SMBuild index 01f9466..98a8505 100755 --- a/base/patch/patch.SMBuild +++ b/base/patch/patch.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=patch version=2.7.5 -build=2sml +build=1sml homepage="https://www.gnu.org/software/patch/" download="https://ftp.gnu.org/gnu/patch/patch-$version.tar.xz" desc="Utility to apply a diff or patches file to an original file or files" @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/pciutils/pciutils.SMBuild b/base/pciutils/pciutils.SMBuild index 9c7e5a3..28ba12c 100755 --- a/base/pciutils/pciutils.SMBuild +++ b/base/pciutils/pciutils.SMBuild @@ -22,7 +22,7 @@ prepbuilddir() { build() { make CFLAGS+=" -DHAVE_PREAD" \ LDFLAGS="-llzma" \ - PREFIX= \ + PREFIX=/usr \ SHARED=yes \ SBINDIR=/bin \ DESTDIR="$pkg" \ @@ -30,14 +30,14 @@ build() { make CFLAGS+=" -DHAVE_PREAD" \ LDFLAGS="-llzma" \ - PREFIX= \ + PREFIX=/usr \ SHARED=yes \ SBINDIR=/bin \ DESTDIR="$pkg" \ STRIP="" install-lib - sed -i '/^Libs:/d' $pkg/lib/pkgconfig/libpci.pc - sed -i 's/^Libs.private:/Libs: -lpci /' $pkg/lib/pkgconfig/libpci.pc + sed -i '/^Libs:/d' $pkg/usr/lib/pkgconfig/libpci.pc + sed -i 's/^Libs.private:/Libs: -lpci /' $pkg/usr/lib/pkgconfig/libpci.pc cp COPYING $pkgdocs/ diff --git a/base/pcre/pcre.SMBuild b/base/pcre/pcre.SMBuild index fda6626..c1cd02a 100755 --- a/base/pcre/pcre.SMBuild +++ b/base/pcre/pcre.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=pcre version=8.44 -build=2sml +build=1sml homepage="https://www.pcre.org/" download="https://ftp.pcre.org/pub/pcre/pcre-$version.tar.gz" desc="Perl-compatible regular expression library" @@ -20,7 +20,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-pcre16 \ --enable-pcre32 \ --enable-pcregrep-libbz2 \ diff --git a/base/pcre2/pcre2.SMBuild b/base/pcre2/pcre2.SMBuild index f0a26b4..b8d840e 100755 --- a/base/pcre2/pcre2.SMBuild +++ b/base/pcre2/pcre2.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-pcre2-16 \ --enable-pcre2-32 \ --enable-jit \ diff --git a/base/physfs/physfs.SMBuild b/base/physfs/physfs.SMBuild index 596c22a..85bcc6a 100755 --- a/base/physfs/physfs.SMBuild +++ b/base/physfs/physfs.SMBuild @@ -23,7 +23,7 @@ build() { -DPHYSFS_BUILD_STATIC=OFF \ -DPHYSFS_BUILD_TEST=OFF \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX= + -DCMAKE_INSTALL_PREFIX=/usr make make install DESTDIR=$pkg diff --git a/base/pigz/pigz.SMBuild b/base/pigz/pigz.SMBuild index e359aae..d529ac8 100755 --- a/base/pigz/pigz.SMBuild +++ b/base/pigz/pigz.SMBuild @@ -21,7 +21,7 @@ build() { install -Dm 755 pigz $pkg/bin/pigz install -Dm 755 unpigz $pkg/bin/unpigz - install -Dm 644 pigz.1 $pkg/share/man/man1/pigz.1 + install -Dm 644 pigz.1 $pkg/usr/share/man/man1/pigz.1 cp README $pkgdocs/ cp zopfli/COPYING $pkgdocs/COPYING.zopfli diff --git a/base/pkgconf/pkgconf.SMBuild b/base/pkgconf/pkgconf.SMBuild index e072578..da6403c 100755 --- a/base/pkgconf/pkgconf.SMBuild +++ b/base/pkgconf/pkgconf.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=pkgconf version=1.7.3 -build=3sml +build=1sml homepage="https://git.sr.ht/~kaniini/pkgconf" download="https://distfiles.dereferenced.org/pkgconf/pkgconf-$version.tar.xz" desc="Drop-in replacement for the bloated pkg-config utility" @@ -18,10 +18,11 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --docdir="/share/doc/$app-$version" \ + --prefix=/usr \ + --bindir=/bin \ + --docdir="/usr/share/doc/$app-$version" \ --disable-static \ - --with-pkg-config-dir="/lib/pkgconfig:/lib/pkgconfig:/share/pkgconfig" + --with-pkg-config-dir="/lib/pkgconfig:/usr/lib/pkgconfig:/usr/share/pkgconfig" make make install DESTDIR=$pkg diff --git a/base/plzip/plzip.SMBuild b/base/plzip/plzip.SMBuild index e09a970..dffa974 100755 --- a/base/plzip/plzip.SMBuild +++ b/base/plzip/plzip.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ CXXFLAGS="$CXXFLAGS" make diff --git a/base/pm-utils/pm-utils.SMBuild b/base/pm-utils/pm-utils.SMBuild index b10d6a7..cb953a7 100755 --- a/base/pm-utils/pm-utils.SMBuild +++ b/base/pm-utils/pm-utils.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --sbindir=/bin make diff --git a/base/popt/popt.SMBuild b/base/popt/popt.SMBuild index 1a79776..9142451 100755 --- a/base/popt/popt.SMBuild +++ b/base/popt/popt.SMBuild @@ -19,9 +19,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --disable-static \ - $builddist + --disable-nls make make install DESTDIR=$pkg diff --git a/base/portaudio/portaudio.SMBuild b/base/portaudio/portaudio.SMBuild index 1e21b10..ec032cb 100755 --- a/base/portaudio/portaudio.SMBuild +++ b/base/portaudio/portaudio.SMBuild @@ -17,7 +17,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --enable-cxx \ --disable-static diff --git a/base/procps-ng/procps-ng.SMBuild b/base/procps-ng/procps-ng.SMBuild index 9296fc3..879786c 100755 --- a/base/procps-ng/procps-ng.SMBuild +++ b/base/procps-ng/procps-ng.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=procps-ng version=3.3.12 -build=2sml +build=1sml psmiscversion=23.3 homepage="http://sourceforge.net/projects/procps-ng/" desc="Utilities for displaying process information" @@ -27,9 +27,10 @@ prepbuilddir() { build() { CPPFLAGS="$CFLAGS -DGLOB_TILDE=0 -DAF_INET6=10 -DAF_INET=2" \ ./configure \ - --prefix= \ + --prefix=/usr \ --bindir=/bin \ - --sbindir=/bin + --sbindir=/bin \ + --disable-nls make V=1 LDFLAGS="-all-static" make install DESTDIR=$pkg @@ -40,7 +41,8 @@ build() { LDFLAGS="-static" \ ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/protobuf/protobuf.SMBuild b/base/protobuf/protobuf.SMBuild index 4e8ac43..8a4ba09 100755 --- a/base/protobuf/protobuf.SMBuild +++ b/base/protobuf/protobuf.SMBuild @@ -20,7 +20,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr make make install DESTDIR=$pkg diff --git a/base/pv/pv.SMBuild b/base/pv/pv.SMBuild index e5295a5..c789e86 100755 --- a/base/pv/pv.SMBuild +++ b/base/pv/pv.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/pwgen/pwgen.SMBuild b/base/pwgen/pwgen.SMBuild index bbfbf1a..999b7e7 100755 --- a/base/pwgen/pwgen.SMBuild +++ b/base/pwgen/pwgen.SMBuild @@ -17,7 +17,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/ \ + --mandir=/usr/share/man make make install DESTDIR=$pkg diff --git a/base/qrencode/qrencode.SMBuild b/base/qrencode/qrencode.SMBuild index 49cd3a6..03b1c68 100755 --- a/base/qrencode/qrencode.SMBuild +++ b/base/qrencode/qrencode.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/readline/readline.SMBuild b/base/readline/readline.SMBuild index 1d9c6e9..744a7b5 100755 --- a/base/readline/readline.SMBuild +++ b/base/readline/readline.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=readline version=6.3 -build=2sml +build=1sml homepage="https://tiswww.case.edu/php/chet/readline/rltop.html" download="ftp://ftp.cwru.edu/pub/bash/readline-$version.tar.gz" desc="Line input library with editing features" @@ -22,7 +22,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --with-curses \ --enable-multibyte \ --disable-static diff --git a/base/ruby/ruby.SMBuild b/base/ruby/ruby.SMBuild index 3fe2528..ad2010e 100755 --- a/base/ruby/ruby.SMBuild +++ b/base/ruby/ruby.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-shared \ --enable-pthread \ --without-jemalloc \ diff --git a/base/sbc/sbc.SMBuild b/base/sbc/sbc.SMBuild index de5893a..5c7b5dc 100755 --- a/base/sbc/sbc.SMBuild +++ b/base/sbc/sbc.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=sbc version=1.4 -build=2sml +build=1sml homepage="https://www.kernel.org/pub/linux/bluetooth" download="https://www.kernel.org/pub/linux/bluetooth/sbc-$version.tar.xz" desc="Bluetooth audio library" @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static \ --disable-tester diff --git a/base/sed/sed.SMBuild b/base/sed/sed.SMBuild index 9de751b..dcbc243 100755 --- a/base/sed/sed.SMBuild +++ b/base/sed/sed.SMBuild @@ -19,7 +19,8 @@ prepbuilddir() { build() { LDFLAGS="-static" \ ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/smartmontools/smartmontools.SMBuild b/base/smartmontools/smartmontools.SMBuild index f65b8d2..6e6bbf8 100755 --- a/base/smartmontools/smartmontools.SMBuild +++ b/base/smartmontools/smartmontools.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=smartmontools version=6.5 -build=2sml +build=1sml homepage="http://smartmontools.sourceforge.net" download="https://sourceforge.net/projects/smartmontools/files/smartmontools/$version/smartmontools-$version.tar.gz" desc="monitoring utilities for hard drives using SMART protocol" @@ -18,7 +18,7 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --sysconfdir=/etc \ --sbindir=/bin \ --with-initscriptdir=no diff --git a/base/soxr/soxr.SMBuild b/base/soxr/soxr.SMBuild index f261634..f0eabbb 100755 --- a/base/soxr/soxr.SMBuild +++ b/base/soxr/soxr.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=soxr version=0.1.3 -build=2sml +build=1sml homepage="https://github.com/chirlu/soxr" download="https://github.com/chirlu/soxr/archive/refs/tags/$version.tar.gz" desc="Audio library that outputs fast and high quality results for resampling ratio" @@ -20,10 +20,11 @@ build() { mkdir -p smbuild && cd smbuild cmake .. \ -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_BINDIR=/bin \ -DBUILD_EXAMPLES='OFF' \ -DBUILD_TESTS='OFF' \ - -DDOC_INSTALL_DIR="/share/doc/$app-$version" \ + -DDOC_INSTALL_DIR="/usr/share/doc/$app-$version" \ -DBUILD_SHARED_LIBS='ON' \ -DWITH_AVFFT='ON' \ -DWITH_LSR_BINDINGS='ON' \ diff --git a/base/sqlite/sqlite.SMBuild b/base/sqlite/sqlite.SMBuild index 89a42f8..27bcdef 100755 --- a/base/sqlite/sqlite.SMBuild +++ b/base/sqlite/sqlite.SMBuild @@ -9,16 +9,17 @@ requires="readline zlib" prepbuilddir() { mkandenterbuilddir - rm -rf "$app-autoconf-$version" + rm -rf $app-$version - tar xf $srcdir/$app-autoconf-$version.tar.?z* - cd "$app-autoconf-$version" + tar xf $srcdir/$app-$version.tar.?z* + cd $app-$version fixbuilddirpermissions } build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make @@ -30,5 +31,5 @@ build() { } sha512sums=" -aab2cdb2cf073d0ef804c9340c2b55f6bf3923eb2563ff4b1d6ebd61c3927ffc4ba912f0cdf2ebcfea9c6a033344f1a8611b1a052b407771a304cf1c4b5ca590 sqlite-autoconf-3430100.tar.gz -" \ No newline at end of file +9b48c731ea0ec6a8edfb1dd0b1b1e8b96f03bfb95f6b162a6b3adabf01e9cdde8cee7c25b94a40eec9e889bd7b9872cf4329027dbefb54c0bc967fc517c477e6 sqlite-3430100.tar.lz +" diff --git a/base/strace/strace.SMBuild b/base/strace/strace.SMBuild index 099344f..00d64c1 100755 --- a/base/strace/strace.SMBuild +++ b/base/strace/strace.SMBuild @@ -19,7 +19,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --enable-mpers=no make diff --git a/base/sudo/sudo.SMBuild b/base/sudo/sudo.SMBuild index 559ed63..9a720a3 100755 --- a/base/sudo/sudo.SMBuild +++ b/base/sudo/sudo.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=sudo version=1.9.12p2 -build=3sml +build=1sml homepage="https://www.sudo.ws/" download="https://www.sudo.ws/dist/sudo-$version.tar.gz" desc="give limited root privileges to certain users" @@ -19,13 +19,15 @@ prepbuilddir() { build() { ./configure \ - --prefix="" \ + --prefix=/usr \ --sysconfdir=/etc \ + --bindir=/bin \ --sbindir=/bin \ - --docdir="/share/doc/$app-$version" \ + --docdir="/usr/share/doc/$app-$version" \ --with-env-editor \ --disable-pam-session \ - --without-pam + --without-pam \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/swig/swig.SMBuild b/base/swig/swig.SMBuild index f5dedb4..3ae638c 100755 --- a/base/swig/swig.SMBuild +++ b/base/swig/swig.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/sysfsutils/sysfsutils.SMBuild b/base/sysfsutils/sysfsutils.SMBuild index c4b033e..24a0f3f 100755 --- a/base/sysfsutils/sysfsutils.SMBuild +++ b/base/sysfsutils/sysfsutils.SMBuild @@ -18,10 +18,10 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ - --mandir=/share/man \ - --disable-static \ - $builddist + --prefix=/usr \ + --bindir=/bin \ + --mandir=/usr/share/man \ + --disable-static make make install DESTDIR=$pkg diff --git a/base/sysklogd/sysklogd.SMBuild b/base/sysklogd/sysklogd.SMBuild index 3da9e13..78811c0 100755 --- a/base/sysklogd/sysklogd.SMBuild +++ b/base/sysklogd/sysklogd.SMBuild @@ -29,9 +29,9 @@ build() { install -Dm 755 syslogd $pkg/bin/syslogd # install man pages - install -Dm 644 syslog.conf.5 $pkg/share/man/man5/syslog.conf.5 - install -Dm 644 klogd.8 $pkg/share/man/man8/klogd.8 - install -Dm 644 sysklogd.8 $pkg/share/man/man8/sysklogd.8 + install -Dm 644 syslog.conf.5 $pkg/usr/share/man/man5/syslog.conf.5 + install -Dm 644 klogd.8 $pkg/usr/share/man/man8/klogd.8 + install -Dm 644 sysklogd.8 $pkg/usr/share/man/man8/sysklogd.8 # install conf files install -Dm 644 $srcdir/syslog.conf.new $pkg/etc/syslog.conf.new diff --git a/base/sysstat/sysstat.SMBuild b/base/sysstat/sysstat.SMBuild index 3980a26..eb82827 100755 --- a/base/sysstat/sysstat.SMBuild +++ b/base/sysstat/sysstat.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=sysstat version=12.5.5 -build=2sml +build=1sml homepage="http://sebastien.godard.pagesperso-orange.fr/" download="http://pagesperso-orange.fr/sebastien.godard/sysstat-$version.tar.xz" desc="System performance monitoring tools" @@ -23,7 +23,9 @@ build() { sed -i 's@lib64@lib@g' configure ./configure \ - --prefix="/" + --prefix=/usr \ + --bindir=/bin \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/tar/tar.SMBuild b/base/tar/tar.SMBuild index 8e3ae72..0b75d8f 100755 --- a/base/tar/tar.SMBuild +++ b/base/tar/tar.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=tar version=1.34 -build=2sml +build=1sml homepage="https://www.gnu.org/software/tar/" download="https://ftp.gnu.org/gnu/tar/tar-$version.tar.xz" desc="GNU archiving utility" @@ -24,8 +24,8 @@ build() { FORCE_UNSAFE_CONFIGURE=1 \ LDFLAGS="-static" \ ./configure \ - --prefix= \ - --sbindir=/bin \ + --prefix=/bin \ + --bindir=/bin \ --libexecdir=/lib \ --enable-backup-scripts diff --git a/base/tarlz/tarlz.SMBuild b/base/tarlz/tarlz.SMBuild index ec009ca..056022c 100755 --- a/base/tarlz/tarlz.SMBuild +++ b/base/tarlz/tarlz.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ CXXFLAGS="$CXXFLAGS" \ make diff --git a/base/texinfo/texinfo.SMBuild b/base/texinfo/texinfo.SMBuild index 83ac6de..fdb81c8 100755 --- a/base/texinfo/texinfo.SMBuild +++ b/base/texinfo/texinfo.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=texinfo version=6.7 -build=2sml +build=1sml homepage="https://www.gnu.org/software/texinfo/" download="https://ftp.gnu.org/gnu/texinfo/texinfo-$version.tar.xz" desc="GNU software documentation system" @@ -18,7 +18,9 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin \ + --disable-nls make make install DESTDIR=$pkg diff --git a/base/time/time.SMBuild b/base/time/time.SMBuild index efec835..a48f73e 100755 --- a/base/time/time.SMBuild +++ b/base/time/time.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/tofrodos/tofrodos.SMBuild b/base/tofrodos/tofrodos.SMBuild index bbd6aee..5bcbb86 100755 --- a/base/tofrodos/tofrodos.SMBuild +++ b/base/tofrodos/tofrodos.SMBuild @@ -21,8 +21,10 @@ build() { make install -Dm 755 fromdos $pkg/bin/fromdos + install -Dm 644 fromdos.1 $pkg/usr/share/man/man1/fromdos.1 ( cd $pkg/bin ; ln -s fromdos todos ) + ( cd $pkg/usr/share/man/man1 ; ln -s fromdos.1 todos.1 ) cp ../COPYING $pkgdocs/ diff --git a/base/tofrodos/tofrodos/COPYING b/base/tofrodos/tofrodos/COPYING new file mode 100644 index 0000000..a43ea21 --- /dev/null +++ b/base/tofrodos/tofrodos/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/base/tofrodos/tofrodos/filelist.txt b/base/tofrodos/tofrodos/filelist.txt new file mode 100644 index 0000000..0813473 --- /dev/null +++ b/base/tofrodos/tofrodos/filelist.txt @@ -0,0 +1,60 @@ +Distribution file list and directory structure for Tofrodos +http://www.thefreecountry.com/tofrodos/index.shtml +Copyright 2002-2013 by Christopher Heng. All rights reserved. +------------------------------------------------------------- + +# Main directory + + todos.exe precompiled Win32 console application + fromdos.exe precompiled Win32 console application + + readme.txt Read this file first + filelist.txt You're currently reading this file + tofrodos.html Tofrodos manual (HTML) + tofrodos.lsm Brief information about tofrodos (for + the Linux Software Map) + COPYING Text file containing the GNU General Public License v2 + + +# source code and makefiles + +src\ + + config.h Change variables here if you're porting tofrodos + emsg.c Error message logging and display function + emsg.h Error messages header + tofrodos.h Main header + utility.h Utility functions header + version.h Version number header + utility.c Utility functions + tofrodos.c Main program and functions + init.c Initialization functions + + fromdos.1 Linux/Unix man page for tofrodos + + # Makefiles for other MSDOS/Windows compilers + + makefile.min MinGW Makefile + makefile.wcc Watcom Makefile + makefile.vs7 Visual Studio .NET 2003 makefile + + # Makefiles for Linux + + Makefile Linux makefile + makefile.gcc Duplicate of Makefile + +# Miscellaneous source files (for MSDOS/Windows compilation) + +src\lib\ + + mktemp.c mkstemp() for deficient systems + mktemp.h + getopt.c getopt() for deficient systems + getopt.h + + +# Empty Directories for "make" to use for various platforms/targets + +src\bin + +src\lib\bin diff --git a/base/tofrodos/tofrodos/fromdos.exe b/base/tofrodos/tofrodos/fromdos.exe new file mode 100755 index 0000000000000000000000000000000000000000..9f167ca52b0cbb37d6c86bbf7911da894561fd58 GIT binary patch literal 52736 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 $@ + +$(TODOS): $(FROMDOS) + $(LN) $(LNFLAGS) $(FROMDOS) $(TODOS) + +# objects +init.o: init.c config.h emsg.h tofrodos.h utility.h version.h + +tofrodos.o: tofrodos.c config.h emsg.h tofrodos.h utility.h version.h + +utility.o: utility.c config.h emsg.h tofrodos.h utility.h diff --git a/base/tofrodos/tofrodos/src/config.h b/base/tofrodos/tofrodos/src/config.h new file mode 100644 index 0000000..b8ce7b1 --- /dev/null +++ b/base/tofrodos/tofrodos/src/config.h @@ -0,0 +1,174 @@ +/* + config.h Handles system dependencies. + Copyright (c) 1996-2013 by Christopher Heng. All rights reserved. +*/ + +/* + You need an ANSI C compiler. I assume this everywhere. If you + have a pre-ANSI C compiler, it's likely that you have to make + a lot of changes to the sources that you might as well just + rewrite the program. It *is* afterall a trivial program. + + I have not specifically designed this program so that it is + portable across systems. The comments below might help if you + are using anything other than the compilers I used to develop + the program. Note that the comments and macros in this file + about system dependencies are not necessarily exhaustive. + + 1. These macros are defined for the following systems: + System Macros defined + ------ -------------- + LINUX LINUX, UNIX + MSDOS MSDOS + WIN32 WIN32 + + 2. You will need a getopt() implementation. It must support the + usual behaviour of the Unix getopt(), plus the variables + optind, opterr, and optarg. + + If your system has the header , define HAVE_GETOPT_H. + I have defined this for the systems I compile for. + + I have supplied my own version of getopt.c and getopt.h in + the lib subdirectory since most MSDOS and Win32 compilers do + not have getopt() in their libraries. + + 3. If your system has , define HAVE_UNISTD_H. This is + usually relevant only for Unix systems, although the DJGPP GNU C + compiler has that as well. If you don't have unistd.h, you may + have to declare some standard Unix functions that are usually + found there, such as chown(), chmod(), etc. + + 4. Note that on MSDOS systems, you will need _splitpath() + and _makepath(). If you use DJGPP, you probably can get away + with defining _splitpath() to call fnsplit(), etc. Otherwise, + you will need to roll your own version. I think all the + commercial MSDOS C compilers have these functions. + + 5. You will also need stricmp() and strnicmp() on MSDOS or + strcasecmp() or strncasecmp() on Unix. If you have stricmp() and/or + strnicmp() on a Unix system, define HAVE_STRICMP and/or + HAVE_STRNICMP respectively. I assume stricmp() for all non-Unix + systems so if you are neither compiling for Unix or MSDOS, you + better check out my macros below. If you have a Unix system, + defining UNIX here will cause the compiler to use strcasecmp() + and strncasecmp(). + + 6. You will need mkstemp(). On Unix systems, this is probably + declared in . + + I have supplied my own mktemp.c and mktemp.h for use with the + Open Watcom C (Windows/DOS) and Visual C++ (Windows) compilers + that includes my implementation of mkstemp(). If your system + does not have mkstemp(), you might try to see if you can use + this. (It's in the lib directory.) + + If your compiler has mkstemp() declared somewhere else (other + than unistd.h on Unix), define MKTEMP_HEADER to be the name + of the header, eg (include the angle brackets or + double quotes), and HAVE_MKTEMP_H to force inclusion of the + header in the relevant files. + + 7. tofrodos.c assumes utime.h exists in for + Microsoft's compiler and Watcom C/C++ (which tries to emulate + Microsoft's compiler closely). It assumes that all other compilers + keep utime.h in the standard include directories which are accessible + simply by including . I must confess I have not bothered to + keep this system dependent setting in this file, only noting it here + for completeness. If you find that you have to tweak this for your + system, please let me know. +*/ + +#if !defined(CONFIG_H_INCLUDED) +#define CONFIG_H_INCLUDED + +#if defined(__cplusplus) +extern "C" { +#endif + +/* define the systems */ +#if defined(__linux__) /* (predefined) */ +#if !defined(LINUX) +#define LINUX +#endif +#if !defined(UNIX) +#define UNIX /* make sure this is defined */ +#endif +#endif + +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || \ + defined(__OpenBSD__) || defined(__NetBSD__) || defined(__GNU__) + /* these systems seem to work like Linux. Note to self: __GNU__ == Hurd */ +#if !defined(LINUX) +#define LINUX +#endif +#if !defined(UNIX) +#define UNIX /* make sure this is defined */ +#endif +#endif + +#if defined(__MSDOS__) +#if !defined(MSDOS) +#define MSDOS /* make sure this is defined */ +#endif +#endif + +#if defined(__WIN32__) || defined(__NT__) || defined(_WIN32) +#if !defined(WIN32) +#define WIN32 +#endif +#endif + +#if defined(__APPLE__) +#if !defined(UNIX) +#define UNIX +#endif +#define HAVE_UNISTD_H +#endif + +/* define what headers we have (based on the systems) */ +#if defined(LINUX) +#define HAVE_GETOPT_H +#define HAVE_UNISTD_H +#endif + +#if defined(WIN32) || defined(MSDOS) +#if !defined(HAVE_MKTEMP_H) +#define HAVE_MKTEMP_H +#endif +#if !defined(MKTEMP_HEADER) +#define MKTEMP_HEADER +#endif +#if !defined(HAVE_GETOPT_H) +#define HAVE_GETOPT_H +#endif +#endif + +#if defined(__MINGW32__) +#define HAVE_GETOPT_H +#endif + +/* if we are in Unix define stricmp to be strcasecmp and strnicmp to */ +/* be strncasecmp. I'm not sure if all Unices have these, but Linux */ +/* does. */ +#if defined(UNIX) +#if !defined(HAVE_STRICMP) +#define stricmp strcasecmp +#endif +#if !defined(HAVE_STRNICMP) +#define strnicmp strncasecmp +#endif +#endif + +/* Microsoft's compiler havs S_IREAD and S_IWRITE in its sys/stat.h */ +/* but not S_IRUSR and S_IWUSR which I use. */ +#if defined(_MSC_VER) +#define S_IRUSR S_IREAD +#define S_IWUSR S_IWRITE +#endif + +#if defined(__cplusplus) +} +#endif + +#endif /* CONFIG_H_INCLUDED */ diff --git a/base/tofrodos/tofrodos/src/emsg.c b/base/tofrodos/tofrodos/src/emsg.c new file mode 100644 index 0000000..566257f --- /dev/null +++ b/base/tofrodos/tofrodos/src/emsg.c @@ -0,0 +1,68 @@ +/* + emsg.c Error message printing functions. + Copyright (c) 2005-2012 by Christopher Heng. All rights reserved. + +*/ + +/* this should always be first */ +#include "config.h" + +/* standard headers */ +#include /* va_arg and family */ +#include /* fprintf(), fopen(), fclose() */ +#include /* atexit() */ + +/* our own headers */ +#include "emsg.h" +#include "tofrodos.h" + +/* macros */ +#if defined(MSDOS) || (WINDOWS) +#define ERROR_LOG_MODE "at" +#else +#define ERROR_LOG_MODE "a" +#endif + +/* data local to this file */ +static FILE * errorfp ; + +/* local functions */ +static void close_error_file ( void ) ; + + +void emsg ( char * message, ... ) +{ + va_list argp ; + + if (errorfp == NULL) { + if (errorlogfilename == NULL) { + errorfp = stderr ; + } + else { + errorfp = fopen ( errorlogfilename, ERROR_LOG_MODE ); + if (errorfp == NULL) { + fprintf( stderr, EMSG_ERRORLOG, progname, errorlogfilename ); + errorfp = stderr ; + } + else { + /* close error file on exit (not needed, but just being pedantically neat) */ + atexit( close_error_file ); /* ignore errors */ + } + } + } + fprintf( errorfp, "%s: ", progname ); + va_start( argp, message ); + vfprintf( errorfp, message, argp ); + va_end( argp ); + return ; +} + +static void close_error_file ( void ) +{ + /* there's no need to check for stderr, since we should not have set this function */ + /* on exit() if only stderr were used */ + if (errorfp != NULL) { + fclose( errorfp ); + } + return ; +} diff --git a/base/tofrodos/tofrodos/src/emsg.h b/base/tofrodos/tofrodos/src/emsg.h new file mode 100644 index 0000000..7bdaf7a --- /dev/null +++ b/base/tofrodos/tofrodos/src/emsg.h @@ -0,0 +1,53 @@ +/* + emsg.h Error messages. + Copyright 1996-2013 by Christopher Heng. All rights reserved. +*/ + +#if !defined(EMSG_H_INCLUDED) +#define EMSG_H_INCLUDED + +#if defined(__cplusplus) +extern "C" { +#endif + +/* macros */ +#define EMSG_BAKFILENAME "File cannot have a .bak extension "\ + "when used with -b flag.\n" +#define EMSG_CONVERT "File read/write error while "\ + "converting \"%s\".\n" +#define EMSG_INTERNAL "Internal error: %s.\n" +#define EMSG_NOFILENAME "Need to specify filename or redirect "\ + "stdin.\n" +#define EMSG_NOMEM "Insufficient memory to run program.\n" +#define EMSG_NOTEMPNAME "Unable to generate temporary filename for converting \"%s\".\n" +#define EMSG_OPENFILE "Unable to open file \"%s\".\n" +#define EMSG_SIGNAL "Terminated by user.\n" +#define EMSG_WRONGDOSVER "Requires DOS 3.1 and above.\n" +#define EMSG_ACCESSFILE "Unable to access file \"%s\".\n" +#define EMSG_NOTREADABLE "No read permission for \"%s\".\n" +#define EMSG_NOTWRITEABLE "No write permission for \"%s\". Use -f to force conversion.\n" +#define EMSG_CHOWN "Unable to change ownership of \"%s\".\n" +#define EMSG_SYMLINK "Unable to dereference symbolic link \"%s\".\n" +#define EMSG_CREATETEMP "Unable to create temporary file \"%s\" for converting \"%s\".\n" +#define EMSG_ERRORLOG "%s: Unable to create error log file \"%s\". Defaulting to stderr.\n" /* special case with progname */ +#define EMSG_RENAMEBAK "Unable to save original file %s as %s.\n"\ + "Reason: %s\n" +#define EMSG_RENAMETMP "Unable to rename temporary file %s back to %s after converting it.\n"\ + "Reason: %s\n"\ + "Please recover your converted file by manually renaming it back.\n" + +/* internal error macros */ +#define EINTNL_DIRECTION "unknown direction" + +/* verbose messages */ +#define VERBOSE_CONVERTING "Converting \"%s\"\n" +#define VERBOSE_SYMLINKSRC "\"%s\" resolves to \"%s\"\n" + +/* function declarations */ +extern void emsg ( char * message, ... ); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/base/tofrodos/tofrodos/src/fromdos.1 b/base/tofrodos/tofrodos/src/fromdos.1 new file mode 100644 index 0000000..808710e --- /dev/null +++ b/base/tofrodos/tofrodos/src/fromdos.1 @@ -0,0 +1,126 @@ +.TH tofrodos 1 "Version 1.7.13" "2013" +.SH NAME +tofrodos +\- Converts text files between DOS and Unix formats. +.SH SYNOPSIS +.B fromdos +[ +.I options +] [file...] +.br +.B todos +[ +.I options +] [file...] +.br +.SH DESCRIPTION +DOS text files traditionally have carriage return and line feed pairs +as their newline characters while Unix text files have the line feed +as their newline character. +.I fromdos +converts ASCII and Unicode UTF-8 text files from the DOS format to the Unix format, while +.I todos +converts them from the Unix format to the DOS format. +.PP +The programs accept multiple filenames and wildcards as their arguments. +You may also use them in a pipe. +If either program finds its input redirected, it will process stdin +and place the output on stdout. +.SH OPTIONS +.TP +.BI \-a +This option is deprecated. Do not use it unless you know what you're doing. By default, +Tofrodos does the expected thing for text files. That is, when converting from +DOS to Unix, it will remove carriage returns only if they are followed by line feeds. +When converting from Unix to DOS, it will add carriage returns only if the linefeeds +are not already preceeded by carriage returns. When Tofrodos is run on a normal text file that +has already been converted, the resulting file should be identical to the original. However, +if you use this option, the program will always remove carriage returns in the DOS to Unix mode +and always add carriage returns in the Unix to DOS mode even if it is not appropriate. +.TP +.BI \-b +Make a backup of original file. The original file with a +.I .bak +extension appended to the original filename, silently replacing any existing file of that name. +For example, a file called "filename.ext" becomes "filename.ext.bak" replacing any existing file +having the name "filename.ext.bak". +Important: the program behaves differently if it is compiled for DOS (as compared to being compiled for Windows, Linux, +Mac OS X or other systems). In view of the filename restrictions present on DOS, the DOS executable +will strip the original file extension, if any, from the file before appending the +.I .bak +extension. For example, "filename.ext" becomes "filename.bak". +.TP +.BI \-d +Convert from DOS to Unix. This forces the program to convert the file in +a particular direction. By default, if the program is named +.I fromdos +or +.I dos2unix, +it will assume that the input file is in a DOS format and convert it to +a Unix format. If the program is named +.I todos +or +.I unix2dos, +it will assume that the input file is in a Unix format and convert it to +a DOS format. Using the +.I \-d +option forces the program to convert from a DOS format +to a Unix format regardless of how the program is named. Likewise, using the +.I \-u +option forces the program to convert from a Unix format to a DOS format +regardless of the name of the program. +.TP +.BI \-e +Abort processing on any error in any file. Normally, the program will +simply skip to process the next file on the command line when it encounters +any errors. This option causes it to abort on errors. +.TP +.BI \-f +Force: convert even if the file is not writeable (read-only). By default, +if the program finds that the file does not have write permission, it will not process +that file. This option forces the conversion even if the file is read-only. +.TP +.BI \-h +Display a short help screen on the program usage and quit. +.TP +.BI \-l +Log error messages to . Note that if your command line has an +error, such as when you specify an unknown option, the error message for the +command line option error will be issued to stderr instead and not logged. +.TP +.BI \-o +Overwrite the original file (no backup). This is the default. +.TP +.BI \-p +Preserve file ownership and time on Unix-type systems (like Linux). On Windows and MSDOS, it only +preserves the file time. Note that on many Unix-type systems, including Linux, the file +ownership will only be preserved if the program is run as root, otherwise it +will just set the file time and silently fail the change of file +ownership. On such systems, if you want a warning message when the file ownership +cannot be changed, use \-v (the verbose flag) as well. +.TP +.BI \-u +Convert from Unix to DOS. See the +.I \-d +option above for more information. +.TP +.BI \-v +Verbose. +.TP +.BI \-V +Show version message and quit. +.SH EXIT CODE +Tofrodos terminates with an exit code of 0 on success and 1 on error. +.PP +If the program is invoked with multiple files on the command line, the default behaviour is to skip to the next +file in the list if an error is encountered with any file. In such a case, the exit code returned will the +status of the last file processed (ie, 0 on success, 1 on failure). If this is not desirable, use the \-e option, +which will force the program to abort immediately with the appropriate exit code on encountering any error. +.SH AUTHOR +The program and its documentation are copyrighted (c) 1996-2013 by +Christopher Heng. All rights reserved. They are distributed under +the terms of the GNU General Public License Version 2. +.PP +The latest version of tofrodos can be obtained from +.br +http://www.thefreecountry.com/tofrodos/index.shtml diff --git a/base/tofrodos/tofrodos/src/init.c b/base/tofrodos/tofrodos/src/init.c new file mode 100644 index 0000000..e6dcbda --- /dev/null +++ b/base/tofrodos/tofrodos/src/init.c @@ -0,0 +1,215 @@ +/* + init.c Initialisation functions. + Copyright 1996-2013 Christopher Heng. All rights reserved. +*/ + +/* this should always be first */ +#include "config.h" + +/* standard headers */ +#if defined(HAVE_GETOPT_H) +#include /* getopt() (what else?) */ +#endif + +#include /* signal() (surprise!) */ +#include /* _splitpath(), _MAX_FNAME, exit, EXIT_SUCCESS */ +#include /* fprintf() */ +#include /* stricmp() */ + +#if defined(HAVE_UNISTD_H) +#include +#endif + +/* our own headers */ +#include "emsg.h" +#include "tofrodos.h" +#include "utility.h" +#include "version.h" + +/* macros */ +#define HELPFMT "Usage: %s [options] [file...]\n"\ + "-a\t(Deprecated option, see manual for info.)\n"\ + "-b\tMake backup of original file (.bak).\n"\ + "-d\tConvert DOS to Unix.\n"\ + "-e\tAbort processing files on error in any file.\n"\ + "-f\tForce: convert even if file is not writeable.\n"\ + "-h\tDisplay help on usage and quit.\n"\ + "-l file\tLog most errors and verbose messages to \n"\ + "-o\tOverwrite original file (no backup).\n"\ + "-p\tPreserve file owner and time.\n"\ + "-u\tConvert Unix to DOS.\n"\ + "-v\tVerbose.\n"\ + "-V\tShow version and quit.\n" +#define OPTLIST "abdefhl:opuvV" +#define VERFMT "%s Ver %d.%d.%d "\ + "Converts text files between DOS and Unix formats.\n"\ + "Copyright 1996-2013 Christopher Heng. "\ + "All rights reserved.\n"\ + "http://www.thefreecountry.com/tofrodos/index.shtml\n" + +#if defined(MSDOS) || defined(WIN32) +#if !defined(_MAX_NAME) || (_MAX_NAME < 260) +#define MAXFILESIZE 260 +#else +#define MAXFILESIZE _MAX_NAME +#endif +#endif + +#if !defined(MSDOS) +#define DIRSLASH '/' +#endif + + +/* local functions */ +static void showhelp ( void ); +static void showversion ( void ); + +/* + init + + Checks for correct operating system version (DOS only). + Sets the default direction of conversion. + Sets the signal traps. + + Returns 0 on success, -1 on error. +*/ +int init ( char * firstarg ) +{ +#if defined(MSDOS) || defined(WIN32) + char filename[MAXFILESIZE]; +#else + char * s ; +#endif + +#if defined(MSDOS) + /* Check that we have the minimum version of DOS needed. */ + /* We only run on DOS 3.1 and above. */ + if (_osmajor < 3 || + (_osmajor == 3 && _osminor < 10)) { + emsg( EMSG_WRONGDOSVER ); + return -1 ; + } +#endif + + /* set the name of the binary to set default direction of */ + /* conversion */ +#if defined(MSDOS) || defined(WIN32) + /* got to extract the name from the full path and extension */ + _splitpath( firstarg, NULL, NULL, filename, NULL ); + progname = xstrdup( filename ); +#else /* neither MSDOS nor WIN32 - assume Unix */ + /* got to wipe out the path prefix if any */ + if ((s = strrchr( firstarg, DIRSLASH )) == NULL) + progname = firstarg ; + else { /* we got the last slash - let's get rid of it */ + progname = ++s ; + } +#endif + + /* set the default direction: Unless we are explicitly named */ + /* to convert in a particular direction, the default direction */ + /* depends on the system. If we are on a DOS system, it is to */ + /* convert from Unix to DOS. If we are on a Unix system, it */ + /* is to convert from DOS to Unix. */ + /* The default direction is set in tofrodos.c using a macro defined in tofrodos.h */ + if (!stricmp( progname, FROMDOSNAME ) || + !stricmp( progname, FROMDOSNAME2 )) + direction = DOSTOUNIX ; + else if (!stricmp( progname, TODOSNAME ) || + !stricmp( progname, TODOSNAME2 )) + direction = UNIXTODOS ; + + /* set the signal traps - we use the old Unix version 7 signal */ + /* mechanism since that is most portable to DOS. In any case, */ + /* we don't do anything sophisticated when we receive a signal */ + /* except cleaning up and quitting! */ + if (signal( SIGINT, sighandler ) == SIG_IGN) + signal( SIGINT, SIG_IGN ); + if (signal( SIGTERM, sighandler ) == SIG_IGN) + signal( SIGTERM, SIG_IGN ); + + return 0 ; +} + +/* + parseargs + + Parses the options. + + Returns 0 on success, -1 on error. +*/ +int parseargs ( int argc, char ** argv ) +{ + int c ; + + while ((c = getopt( argc, argv, OPTLIST )) != -1) { + switch( c ) { + case 'a': /* force conversion of all \r\n to \n */ + alwaysconvert = 1 ; + break ; + case 'b': /* make backup of original file */ + overwrite = 0 ; + break ; + case 'd': /* DOS to Unix */ + direction = DOSTOUNIX ; + break ; + case 'e': /* abort processing list of files if */ + /* we encounter errors in any file in */ + /* a list of file names */ + abortonerr = 1 ; + break ; + case 'f': /* convert even if file is not writeable*/ + forcewrite = 1 ; + break ; + case 'h': /* display short usage screen and quit */ + showhelp() ; + exit( EXIT_SUCCESS ); + break ; + case 'l': /* log errors to filename */ + errorlogfilename = optarg ; + break ; + case 'o': /* overwrite original file (default) */ + overwrite = 1 ; + break ; + case 'p': /* preserve file owner and date */ + preserve = 1 ; + break ; + case 'u': /* Unix to DOS */ + direction = UNIXTODOS ; + break ; + case 'v': /* verbose */ + verbose = 1 ; + break ; + case 'V': /* show version and quit */ + showversion() ; + exit( EXIT_SUCCESS ); + break ; + default: /* error */ + return -1 ; + } + } + return 0 ; +} + +static void showversion ( void ) +{ + static int vershown ; + + if (!vershown) { + fprintf( stderr, VERFMT, VERSN_PROGNAME, VERSN_MAJOR, VERSN_MINOR, VERSN_PATCH ); + vershown = 1 ; + } + return ; +} + +/* + showhelp + + Display the short usage help screen. +*/ +static void showhelp ( void ) +{ + showversion(); + fprintf( stderr, HELPFMT, progname ); + return ; +} diff --git a/base/tofrodos/tofrodos/src/lib/getopt.c b/base/tofrodos/tofrodos/src/lib/getopt.c new file mode 100644 index 0000000..1cdab9d --- /dev/null +++ b/base/tofrodos/tofrodos/src/lib/getopt.c @@ -0,0 +1,264 @@ +/* + getopt.c + Copyright 1997-2013 by Christopher Heng. All rights reserved. + + This code is released under the terms of the GNU General Public + License Version 2. 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., 675 Mass Ave, Cambridge, MA 02139, + USA. + + The version of getopt() given here is based on the AT&T public + domain source for getopt() given out at the 1985 UNIFORUM conference + in Dallas. It has been modified as follows: + + 1. I support the newer optreset variable used in BSD 4.4. + 2. I support a non-standard optprogname which the user can use + to set the program name to print. The AT&T version uses argv[0]. + Mine simply does not print a program name if optprogname is NULL. + 3. I support the use of '/' as the option switch character. + 4. I use a character pointer to track which character within an + argument we are at for efficiency sake instead of the array + integer index used in AT&T's implementation. + 5. Added Microsoft Windows GUI support. To enable this, just + define GUI_APPLICATION to have the message displayed in a message + box. + 6. It returns -1 instead of EOF. + + This function is primarily designed for MSDOS and Windows, since those + systems lack getopt(). Linux, BSD, and other Unix-type systems already + have a fully-functioning and thoroughly-debugged version, so you should + use the native versions on those systems instead. The error messages + in this file also presuppose an MSDOS/Windows environment since they + use '/' instead of '-' to describe the offending options. + + See also list of differences in general in the documentation + preceding the function itself. +*/ + +#include /* fprintf() */ +#include /* strchr() */ +#include "getopt.h" /* our very own header */ + +/* system specific includes */ +#if defined(GUI_APPLICATION) +#define STRICT +#define WIN32_LEAN_AND_MEAN +#if defined(_MSC_VER) +#pragma warning ( disable: 4514 4201 4214 ) +#endif +#include +#if defined(_MSC_VER) +#pragma warning ( default : 4201 4214 ) +#endif +#endif + +/* macros */ +#define OPT_SW1 '-' /* for Unix afficiondos */ +#define OPT_SW2 '/' /* MSDOS traditional switch character */ + +/* macros specific to systems */ +#if defined(GUI_APPLICATION) /* Windows version */ +#define MESSAGEMAX 128 +#define ERR_TITLE "Error" +#define ERR_UNKNOWNOPT "Unknown option: /%c." +#define ERR_OPTNEEDSARG "Option /%c requires an argument." +#if !defined(MB_ICONERROR) + /* define macro not defined in Win16's windows.h */ +#define MB_ICONERROR MB_ICONHAND +#endif +#else /* command line version */ +#define ERR_PREFIX "%s: " +#define ERR_UNKNOWNOPT "Unknown option: /%c.\n" +#define ERR_OPTNEEDSARG "Option /%c requires an argument.\n" +#endif /* command line version macros */ + +/* global variables */ +char * optarg ; /* argument to option */ +int opterr = 1 ; /* 0 = don't print error msg, 1 = print */ +int optind = 1 ; /* next argument to parse */ +int optopt ; /* the current option */ +char * optprogname ;/* store program name here if you want the error */ + /* message spouter to issue the program name */ +int optreset ; /* 0 = continue processing, 1 = reset to start */ + +/* local functions */ +static void error_message ( char * s ); + +/* + getopt + + getopt() parses the command line given in the vector list, + and returns the option character (if any) and the option + argument in optarg. + + argc, argv corresponds to the versions passed to main(). + optlist is the list of valid options. Options which must + have arguments have a ':' suffixed to the option character + in optlist. Needless to say, ':' cannot be a valid option + character. + + This function uses various globals: optarg, opterr, optind, + optopt, optreset and optprogname to govern its actions. + + optarg contain the argument to the option if the option is + specified to have an argument. + opterr If this is set to 1, an error message will + be printed on stderr for bad options or missing arguments + to options. The default is to print the error message. + optind contains the next argv item which to be parsed. Defaults + to 1 to skip over the program name in the standard + argv[] passed to main(). + optopt always contains the option character which is returned on + a valid option or which caused an error. + optprogname (non-standard) Contains the program name to be printed + prior to printing the error message. + optreset Set this to 1 if you need to call getopt() after using + it to parse a different argv list. + + + The options "//", "/-", "--", and "-/" will terminate the + list of options (unless one of those characters are themselves + specified in the option list, optlist). The character ':' + can never be an option. A solitary '-' or '/' will also cause + getopt() to return -1. + + Returns: + + -1 No more options to parse. + OPT_BADOPT An option character was encountered which + was not in the list of valid options. + OPT_BADARG An option was supposed to have an argument + but was found without one. + Otherwise, the option character is returned. + + Differences from the Unix version: + 1. '?' can be a valid option, since we do not return '?' when + there is an error. Unix getopt()s returns '?' when there is + an error. We return OPT_BADOPT (which is equated to 0). + 2. the options are preceded by either '-' or '/' and the end + of option list demarcator can be "--", "-/", "//" or "/-". + Because our options begin with '/', filenames cannot begin + with the '/' character else it would be interpreted as + an option, unless you precede the file list with "--" to + mark the end of options. + 3. We use optprogname to hold the program name to print + when there is an error. If this is missing, no program name + is printed. Some Unix versions print argv[0]. + 4. Some Unix versions do not have optreset. This is present + only in the later BSD versions. I have implemented it just in + case I need it. + 5. Some Unix versions only return '?' when there is an error, + not differentiating between an invalid option and a missing + argument to an option. The version supplied with BSD 4.4 + returns ':' for the latter error. We follow the protocol of + the BSD 4.4 version in this respect. + 7. A solitary '-' or '/' will cause -1 to be returned. + According to the getopt manual page in BSD, this appears + to be the behaviour in System V. This is the behaviour in + Borland C/C++'s example getopt.c also. +*/ +int getopt ( int argc, char * const * argv, const char * optlist ) +{ + static char nullstring[] = "" ; + static char * curptr = nullstring ; + char * s ; + + if (optreset || *curptr == '\0') { + /* either end of current arg or first time or user wants us */ + /* to treat this as first time */ + + /* got to restore this to zero for next iteration. Got to do */ + /* it here before we exit */ + optreset = 0 ; + + /* get next (or first arg) */ + if(optind >= argc || + (*(curptr = argv[optind]) != OPT_SW1 && *curptr != OPT_SW2)) { + curptr = nullstring ; /* reset */ + return -1; + } + /* got to set curptr since we could have got here by */ + /* optind < argc prior to curptr being set */ + curptr = argv[optind] ; + /* check if user specified end of list of options */ + if (*++curptr == '\0' || /* solitary '-' */ + (*curptr == OPT_SW1 || *curptr == OPT_SW2)) { /* "--" */ + optind++; /* point to next argument */ + curptr = nullstring ; /* reset */ + return -1; + } + } + /* by the time we get here, we have skipped over the option */ + /* switch character */ + optopt = *curptr ; + + if(optopt == ':' || /* need to trap this or problems will arise */ + (s = strchr( optlist, optopt )) == NULL) { /* no such option */ + if (opterr) + error_message ( ERR_UNKNOWNOPT ); + /* skip erroneous option character */ + if (*++curptr == '\0') /* end of argument */ + optind++ ; /* go to next */ + /* curptr = nullstring ; */ /* but already pointing to a null */ + /* string */ + return OPT_BADOPT ; + } + if(*++s == ':') { /* argument expected */ + /* point to next argument - always done so might as well */ + /* do it before we test */ + optind++ ; + /* is the argument at the end of current argument? */ + if(*++curptr != '\0') { /* yep */ + optarg = curptr ; + curptr = nullstring ; + /* optind already pointing to next argument for next round */ + } + else if (optind < argc) /* optarg is in next argument */ + optarg = argv[optind++] ; + /* since we use the next arg for our optarg, we needed to */ + /* point optind to the argument after that for next round */ + /* curptr already pointing to null byte */ + else { /* optarg not at end of current arg nor are there any */ + /* more args */ + if (opterr) + error_message ( ERR_OPTNEEDSARG ); + return OPT_BADARG ; + /* optind already pointing to next (nonexistant) argument */ + /* curptr already pointing to null byte */ + } + } + else { /* optarg is not expected */ + if (*++curptr == '\0') /* end of current argument */ + optind++ ; /* skip to next for next round */ + optarg = NULL; /* just in case */ + } + return optopt ; +} + +/* + error_message + + System specific error message spouter. It prints the program + name first if optprogname is not NULL. + + References the global optopt. + + Returns: nothing. +*/ +static void error_message ( char * msgfmt ) +{ +#if defined(GUI_APPLICATION) + char buf[MESSAGEMAX]; + char * title ; + + sprintf( buf, msgfmt, optopt ); + title = (optprogname == NULL) ? ERR_TITLE : optprogname ; + MessageBox( 0, buf, title, MB_ICONERROR | MB_OK ); +#else + if (optprogname != NULL) + fprintf( stderr, ERR_PREFIX, optprogname ); + fprintf( stderr, msgfmt, optopt ); +#endif + return ; +} diff --git a/base/tofrodos/tofrodos/src/lib/getopt.h b/base/tofrodos/tofrodos/src/lib/getopt.h new file mode 100644 index 0000000..525fc9b --- /dev/null +++ b/base/tofrodos/tofrodos/src/lib/getopt.h @@ -0,0 +1,42 @@ +/* + getopt.h + Copyright (c) 1996,1997 by Christopher Heng. All rights reserved. + + $Id: getopt.h,v 1.1 2004/10/01 12:33:39 chris Exp $ +*/ + +#if !defined(GETOPT_H_INCLUDED) +#define GETOPT_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +/* macros for getopt() */ +#define OPT_BADOPT 0 /* error return code for getopt() */ + /* Note that EOF better not be zero! */ +#define OPT_BADARG ((int)':') /* no argument given when there should */ + /* be one! Note that ':' cannot be an */ + /* option! */ + +/* global variables for getopt() */ +extern char * optarg; /* argument if option has one */ +extern int opterr; /* 0 = don't print err msg, 1 = print */ +extern int optind; /* next argument to process */ +extern int optopt ; /* current option */ +extern char * optprogname; /* name of program to print before error msg */ +extern int optreset ; /* set by user to 1 if you want to reset getopt() */ + +/* global variables for gesubopt() */ +extern char * suboptarg ; + +/* function declarations */ +extern int getopt (int argc, char * const * argv, const char * optlist ); +extern int getsubopt ( char ** optargp, char * const * optsp, + char ** suboptvalp ); + +#ifdef __cplusplus +} +#endif + +#endif /* GETOPT_H_INCLUDED */ diff --git a/base/tofrodos/tofrodos/src/lib/mktemp.c b/base/tofrodos/tofrodos/src/lib/mktemp.c new file mode 100644 index 0000000..9995dee --- /dev/null +++ b/base/tofrodos/tofrodos/src/lib/mktemp.c @@ -0,0 +1,99 @@ +/* + mktemp.c Create a temporary file name. + Copyright 1996-2012 by Christopher Heng. All rights reserved. + + This code is released under the terms of the GNU General Public + License Version 2. 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., 675 Mass Ave, Cambridge, MA 02139, + USA. + + Originally written for use in tofrodos, when compiled with + Watcom 10.0, which did not have either mktemp() or mkstemp(). + Tofrodos can be found at + http://www.thefreecountry.com/tofrodos/index.shtml +*/ + +#include /* errno, ENOENT, EINVAL, EEXIST */ +#include /* access() */ +#include /* strlen(), strcmp() */ +#include +#include /* O_IRUSR, O_IWUSR */ +#include /* open(), O_RDWR, O_CREAT, O_EXCL */ +#include "mktemp.h" /* our own header */ + +#define MAXVAL (65535u) /* unsigned is at least this (ANSI) */ + +/* + mkstemp + + Creates a temporary file using "templ" and returns a + file descriptor opened using open(). The file is + open for read and write binary (not text) access + for the current user. The new filename is placed + in "templ", overwriting its existing contents. + + The file path in "templ" must have six trailing "X"s, + ie, it must end with "XXXXXX". + + On success, mkstemp() returns the file descriptor. + On failure, it returns -1, and errno is set to + EINVAL if "templ" does not end with "XXXXXX" on + entry to the function, or EEXIST if no file could + be created. + + Function compatibility: + O_BINARY is used in file creation. This flag + only exists on Windows and MSDOS compilers. + + Example: + char tempfilename[] = "\\tmp\\myXXXXXX" ; + int fd ; + fd = mkstemp( tempfilename ); +*/ +int mkstemp ( char * templ ) +{ + static unsigned val ; + static char fch = 'A' ; + + char *s ; + char *startp ; + size_t len ; + unsigned tval ; + int fd ; + int orig_errno ; + + orig_errno = errno ; + + /* do some sanity checks */ + /* make sure that templ is at least 6 characters long */ + /* and comprises the "XXXXXX" string at the end */ + if ((len = strlen(templ)) < 6 || + strcmp( (s = startp = templ + len - 6), MKTEMP_TEMPLATE )) { + errno = EINVAL ; + return -1 ; + } + for ( ; fch <= 'Z'; val = 0, fch++ ) { + /* plug the first character */ + *startp = fch ; + /* convert val to ascii */ + /* note that we skip the situation where val == MAXVAL */ + /* because if unsigned has a maximum value of MAXVAL */ + /* in an implementation, and we do a compare of */ + /* val <= MAXVAL, the test will always return true! */ + /* Our way, we have at least a cut-off point: MAXVAL. */ + for ( ; val < MAXVAL; ) { + tval = val++ ; + for (s = startp + 5; s > startp ; s--) { + *s = (char) ((tval % 10) + '0') ; + tval /= 10 ; + } + if ((fd = open( templ, O_CREAT | O_EXCL | O_BINARY | O_RDWR, S_IRUSR | S_IWUSR )) != -1) { + errno = orig_errno ; + return fd ; + } + } + } + errno = EEXIST ; + return -1 ; +} diff --git a/base/tofrodos/tofrodos/src/lib/mktemp.h b/base/tofrodos/tofrodos/src/lib/mktemp.h new file mode 100644 index 0000000..fba06cd --- /dev/null +++ b/base/tofrodos/tofrodos/src/lib/mktemp.h @@ -0,0 +1,28 @@ +/* + mktemp.h Declares my mktemp() function. + Copyright 1996-2012 by Christopher Heng. All rights reserved. + + Originally written for use in tofrodos, when compiled with + Watcom 10.0, which did not have either mktemp() or mkstemp(). + Tofrodos can be found at + http://www.thefreecountry.com/tofrodos/index.shtml +*/ + +#if !defined(MKTEMP_H_INCLUDED) +#define MKTEMP_H_INCLUDED + +#ifdef __cplusplus +extern "C" { +#endif + +/* macros */ +#define MKTEMP_TEMPLATE "XXXXXX" + +/* functions declarations */ +extern int mkstemp ( char * templ ); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/base/tofrodos/tofrodos/src/makefile.gcc b/base/tofrodos/tofrodos/src/makefile.gcc new file mode 100644 index 0000000..6dd434e --- /dev/null +++ b/base/tofrodos/tofrodos/src/makefile.gcc @@ -0,0 +1,97 @@ +# makefile.gcc Makefile for building with the GNU C compiler on Linux. +# Copyright 1996-2012 by Christopher Heng. All rights reserved. + +# This makefile requires the GNU make to work (we use the GNU extensions). + +# Define the following if you need +# +# DEBUG to add debugging information, eg "make DEBUG=1 all" + + +ifdef DEBUG +CDEBUG = -g +LDEBUG = -g +else +CDEBUG = -O2 +LDEBUG = -s +endif + +# programs +CC = gcc +CD = cd +CP = cp +GZIP = gzip +INSTALL = install +LN = ln +LD = gcc +MAKE = make +MKDIR = mkdir +MV = mv +RM = rm -f + +# flags +CFLAGS = $(DEFINES) $(TFLAG) $(CDEBUG) -c -Wall +GZIPFLAGS = -9 +INSTALLBINFLAGS = -m 755 +INSTALLDATAFLAGS = -m 644 +LDFLAGS = $(LDEBUG) +LNFLAGS = -sf +RMRECURFLAGS = -rf + +# directories +BINDIR = /usr/bin +LIBDIR = lib +MANDIR = /usr/man/man1 + +# filenames +FROMDOS = fromdos +FROMDOSMAN = fromdos.1 +FROMDOSTXT = fromdos.txt +TODOS = todos +ZIPSRCNAME = tfd.zip + +# lists of filenames +OBJS = emsg.o \ + init.o \ + tofrodos.o \ + utility.o + +# implicit rules +.c.o: + $(CC) $(CFLAGS) $< + +# user visible rules +all: $(FROMDOS) $(TODOS) + +clean: + $(RM) $(OBJS) + +clobber: clean + $(RM) $(FROMDOS) $(TODOS) + +install: installman + $(INSTALL) $(INSTALLBINFLAGS) $(FROMDOS) $(BINDIR) + ($(CD) $(BINDIR) ; $(LN) $(LNFLAGS) fromdos todos) + +installman: $(FROMDOSMAN) + $(INSTALL) $(INSTALLDATAFLAGS) $(FROMDOSMAN) $(MANDIR) + ($(CD) $(MANDIR) ; $(LN) $(LNFLAGS) fromdos.1 todos.1) + + +# real rules +$(FROMDOS): $(OBJS) + $(CC) $(LDFLAGS) -o $(FROMDOS) $(OBJS) + +$(FROMDOSTXT): $(FROMDOSMAN) + gtbl $(FROMDOSMAN) | groff -Tascii -mandoc | \ + troff -Tascii -mandoc | grotty > $@ + +$(TODOS): $(FROMDOS) + $(LN) $(LNFLAGS) $(FROMDOS) $(TODOS) + +# objects +init.o: init.c config.h emsg.h tofrodos.h utility.h version.h + +tofrodos.o: tofrodos.c config.h emsg.h tofrodos.h utility.h version.h + +utility.o: utility.c config.h emsg.h tofrodos.h utility.h diff --git a/base/tofrodos/tofrodos/src/makefile.min b/base/tofrodos/tofrodos/src/makefile.min new file mode 100644 index 0000000..b68cf99 --- /dev/null +++ b/base/tofrodos/tofrodos/src/makefile.min @@ -0,0 +1,68 @@ +# makefile.min Makefile for building with the MinGW (GNU) C Compiler. +# Copyright (c) 1996-2005 by Christopher Heng. All rights reserved. + +# $Id: makefile.min,v 1.2 2005/03/06 05:40:49 chris Exp $ + +# This makefile requires the GNU make to work (we use the GNU extensions). + +# Define the following if you need +# +# DEBUG to add debugging information, eg "make DEBUG=1 all" + + +ifdef DEBUG +CDEBUG = -g +LDEBUG = -g +else +CDEBUG = -O2 +LDEBUG = -s +endif + +# programs +CC = gcc +CD = cd +CP = copy +INSTALL = install +LD = gcc + +# flags +CFLAGS = $(DEFINES) $(TFLAG) $(CDEBUG) -c -Wall +GZIPFLAGS = -9 +LDFLAGS = $(LDEBUG) + +# directories +LIBDIR = lib + +# filenames +FROMDOS = fromdos.exe +FROMDOSMAN = fromdos.1 +TODOS = todos.exe + +# lists of filenames +OBJS = emsg.o \ + init.o \ + tofrodos.o \ + utility.o + +# implicit rules +.c.o: + $(CC) $(CFLAGS) $< + +# user visible rules +all: $(FROMDOS) $(TODOS) + +# real rules +$(FROMDOS): $(OBJS) + $(CC) $(LDFLAGS) -o $(FROMDOS) $(OBJS) + +$(TODOS): $(FROMDOS) + $(CP) $(FROMDOS) $(TODOS) + +# objects +emsg.o: emsg.c config.h emsg.h tofrodos.h + +init.o: init.c config.h emsg.h tofrodos.h utility.h version.h + +tofrodos.o: tofrodos.c config.h emsg.h tofrodos.h utility.h version.h + +utility.o: utility.c config.h emsg.h tofrodos.h utility.h diff --git a/base/tofrodos/tofrodos/src/makefile.vs7 b/base/tofrodos/tofrodos/src/makefile.vs7 new file mode 100644 index 0000000..738a1bd --- /dev/null +++ b/base/tofrodos/tofrodos/src/makefile.vs7 @@ -0,0 +1,89 @@ +# Makefile for use with Visual Studio .NET 2003 to generate Win32 binaries +# Copyright 2005 by Christopher Heng. All rights reserved. + +# To debug, just use the IDE. Sorry. + +# Programs +# Warning: the RM macro assumes that the del command accepts a "/y" +# argument (yes to all prompts) and accepts multiple filenames for +# deletion. +CC = cl +CP = copy +LD = link +RM = del /y +ZIP = zip + +# Flags +CFLAGS = $(CFL1) $(CFL2) + # /nologo - suppress startup banner + # /Zi - debug - create program database + # /W4 - warning level 4 + # /WX - treat warnings as errors + # /02 - maximize speed (/Og /Oi /Ot /Oy /Gs /GF /Gy) + # note that + # /Og global optimizations (implied by /O2) + # /Oi - enable intrinsic functions + # /Ot - optimize speed + # /Oy - + # /Gs stack checking calls (for local variables) + # /GF enable string pooling + # /Gy function-level linking + # /Ob1 - only expand __inline functions + # /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" + # /ML - single threaded library + # /Fo - output dir + # /Fd - PDB dir + # /I - include directory + # /c - compile only +CFL1 = /nologo /Zi /W4 /WX /O2 /Ob1 /D "NDEBUG" /D "_CONSOLE" /D "WIN32" /D "_MBCS" /ML +CFL2 = /I "$(LIBDIR)" /Fo"$(BINDIR)\\" /Fd"$(BINDIR)\\" /c +LDFLAGS = $(LDFL1) $(LDFL2) $(LDFL3) $(LDFL4) +LDFL1 = /OUT:"$(FROMDOS)" /INCREMENTAL:NO /NOLOGO /DEBUG /PDB:"$(PDBFILE)" +LDFL2 = /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /MACHINE:X86 +LDFL3 = odbc32.lib odbccp32.lib setargv.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib +LDFL4 = advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib + +# Directories +BINDIR = .\bin +LIBDIR = .\lib + +# Files +FROMDOS = $(BINDIR)\fromdos.exe +TODOS = $(BINDIR)\todos.exe + +OBJS = $(BINDIR)\emsg.obj \ + $(BINDIR)\init.obj \ + $(BINDIR)\getopt.obj \ + $(BINDIR)\mktemp.obj \ + $(BINDIR)\tofrodos.obj \ + $(BINDIR)\utility.obj +PDBFILE = $(BINDIR)\fromdos.pdb + +# Implicit rules +.c{$(BINDIR)}.obj: + $(CC) @<< + $(CFLAGS) $< +<< + +# Rules +all: $(FROMDOS) $(TODOS) + +clean: + $(RM) $(OBJS) + +clobber: clean + $(RM) $(FROMDOS) $(TODOS) $(PDBFILE) + +$(FROMDOS): $(OBJS) + $(LD) @<< + $(LDFLAGS) $(OBJS) +<< + +$(TODOS): $(FROMDOS) + $(CP) $(FROMDOS) $(TODOS) + +$(BINDIR)\getopt.obj: $(LIBDIR)\getopt.c $(LIBDIR)\getopt.h + $(CC) $(CFLAGS) $(LIBDIR)\getopt.c + +$(BINDIR)\mktemp.obj: $(LIBDIR)\mktemp.c $(LIBDIR)\mktemp.h + $(CC) $(CFLAGS) $(LIBDIR)\mktemp.c diff --git a/base/tofrodos/tofrodos/src/makefile.wcc b/base/tofrodos/tofrodos/src/makefile.wcc new file mode 100644 index 0000000..2e73c4e --- /dev/null +++ b/base/tofrodos/tofrodos/src/makefile.wcc @@ -0,0 +1,122 @@ +# makefile.wcc Makefile for building with the Watcom and OpenWatcom C/C++ compiler. +# Copyright 1996-2011 Christopher Heng. All rights reserved. + +# Prevent checking for existence of targets after rule has been executed. +.NOCHECK + +# This makefile assumes you have wildargv.c in the lib subdirectory. +# wildargv.c is not provided in the distribution. You should use +# the one from watcom\src\startup\wildargv.c. This file expands +# wildcards on the command line. You will also need initarg.h from +# your watcom\src\startup directory as well; put it in the tofrodos +# lib subdirectory. + +# Define the following if you need +# +# DEBUG To add debugging information. +# If you want fine-tune the amount of debugging info, you +# can define CDEBUG to be the compiler option switch and +# LDEBUG for the linker. +# TARGET To determine the type of target +# 32bit if you want a 32 bit DOS executable (using a DOS extender) +# 16bit if you want a 16 bit DOS executable +# Win32 if you want a Windows 32 bit console executable +# The default is to generate a Win32 console executable. + +!ifdef DEBUG +!ifndef CDEBUG +CDEBUG = -d2 +!endif +!ifndef LDEBUG +LDEBUG = d all +!endif +!endif + +!ifeq TARGET 32bit +CCBIN = wcc386 +!ifndef TCFLAGS +TCFLAGS = -bt=DOS -mf -5r -fp3 +!endif +!ifndef TLFLAGS +TLFLAGS = sys dos4g +!endif +!else +!ifeq TARGET 16bit +CCBIN = wcc +!ifndef TCFLAGS +TCFLAGS = -ms -bt=DOS +!endif +!ifndef TLFLAGS +TLFLAGS = sys dos +!endif +!else # Win32 +CCBIN = wcc386 +!ifndef TCFLAGS +TCFLAGS = -bt=nt -6r -fp6 +!endif +!ifndef TLFLAGS +TLFLAGS = sys nt +!endif +!endif # if 16bit else Win32 +!endif # if 32bit else 16bit||Win32 + +# programs +CC = $(CCBIN) +LD = wlink +LN = copy +RM = del + +# flags +CFLAGS = -oxa -wx -fpi -zp1 -zq $(TCFLAGS) $(CINCFLAGS) $(CDEBUG) +CINCFLAGS = -i=$(LIBDIR) +COUTFLAG = /fo= +LDFLAGS = $(TLFLAGS) op q,c,m,el $(LDEBUG) + +# directories +LIBDIR = lib +SRCDIR = . + +# filenames +FROMDOS = fromdos.exe +LDRESP = ldresp.rsp +TODOS = todos.exe + +# lists of filenames +LIBOBJS = $(LIBDIR)\getopt.obj & + $(LIBDIR)\mktemp.obj & + $(LIBDIR)\wildargv.obj +OBJS = emsg.obj & + init.obj & + tofrodos.obj & + utility.obj + +# implicit rules +.c: $(SRCDIR);$(LIBDIR) +.h: $(SRCDIR);$(LIBDIR) +.c.obj: .AUTODEPEND + $(CC) $(CFLAGS) $(COUTFLAG)$@ $[@ + +# user visible rules +all: $(FROMDOS) $(TODOS) + %null + +clean: + $(RM) $(OBJS) $(LIBOBJS) + $(RM) *.map *.err + $(RM) $(LDRESP) todos.exe fromdos.exe + +clobber: clean + +# real rules +$(FROMDOS): $(OBJS) $(LIBOBJS) $(LDRESP) + $(LD) @$(LDRESP) + +$(TODOS): $(FROMDOS) + $(LN) $(LNFLAGS) $(FROMDOS) $(TODOS) + +# support rules +$(LDRESP): $(__MAKEFILES__) + %write $@ $(LDFLAGS) + %append $@ name $(FROMDOS) + for %i in ($(OBJS)) do @%append $@ file %i + for %i in ($(LIBOBJS)) do @%append $@ file %i diff --git a/base/tofrodos/tofrodos/src/tofrodos.c b/base/tofrodos/tofrodos/src/tofrodos.c new file mode 100644 index 0000000..3a382d5 --- /dev/null +++ b/base/tofrodos/tofrodos/src/tofrodos.c @@ -0,0 +1,714 @@ +/* + tofrodos.c Converts text files between DOS and Unix formats. + Copyright 1996-2013 Christopher Heng. All rights reserved. +*/ + +/* this should always be first */ +#include "config.h" + +/* standard headers */ +#include /* errno */ +#include /* signal() */ +#include /* FILE functions */ +#include /* EXIT_SUCCESS, mkstemp() in some systems, ltoa() */ +#include /* strrchr(), strlen(), strcpy(), strcat(), strerror() */ +#include /* stat() */ + +#if defined(_MSC_VER) || defined(__WATCOMC__) +#include +#else /* everybody else keeps this in the include directory */ +#if defined(UNIX) +#include +#endif +#include +#endif + +/* conditionally included headers */ +#if defined(MSDOS) || defined(WIN32) +#include /* O_BINARY */ +#include /* chmod(), setmode(), isatty() */ +#endif + +#if defined(HAVE_GETOPT_H) +#include /* optind, getopt() */ +#endif + +#if defined(HAVE_MKTEMP_H) && defined(MKTEMP_HEADER) +#include MKTEMP_HEADER +#endif + +#if defined(HAVE_UNISTD_H) +#include /* chmod(), mktemp(), isatty(), chown(), readlink(), mkstemp() in some systems, (getopt()) */ +#endif + +/* our headers */ +#include "emsg.h" +#include "tofrodos.h" +#include "utility.h" +#include "version.h" + +/* macros */ +#define BAKEXT ".bak" /* backup file extension */ +#define MKTEMP_TEMPL "XXXXXX" +#define NEWBUFSIZ 16384 /* buffer size for the files */ + +#if defined(MSDOS) || defined(WIN32) +#define DIRSLASH '\\' +#define DIRSLASHSTR "\\" +#else +#define DIRSLASH '/' +#define DIRSLASHSTR "/" +#endif + +/* conditional macros */ +#if defined(MSDOS) +#if !defined(_MAX_DIR) || (_MAX_DIR < 260) /* MAXDIRSIZE */ +#define MAXDIRSIZE 260 +#else +#define MAXDIRSIZE _MAX_DIR +#endif +#if !defined(_MAX_NAME) || (_MAX_NAME < 260) /* MAXFILESIZE */ +#define MAXFILESIZE 260 +#else +#define MAXFILESIZE _MAX_NAME +#endif +#if !defined(_MAX_PATH) || (_MAX_PATH < 260) /* MAXPATHSIZE */ +#define MAXPATHSIZE 260 +#else +#define MAXPATHSIZE _MAX_PATH +#endif +#if !defined(_MAX_DRIVE) +#define _MAX_DRIVE 3 /* for the benefit of djgpp */ +#endif +#endif /* if defined(MSDOS) */ + +#if defined(MSDOS) || defined(WIN32) +#define INFILEMODE "rb" +#define OUTFILEMODE "wb" +#else +#define INFILEMODE "r" +#define OUTFILEMODE "w" +#endif + +#if defined(MSDOS) || defined(WIN32) +#define CURRENTDIR ".\\" /* not used in MSDOS though */ +#else /* Unix-type systems */ +#define CURRENTDIR "./" +#endif + + +/* global variables */ +int abortonerr ; /* 1 if should abort when there is error in any file */ + /* in a list of files, 0 carry on (default) */ +int alwaysconvert ; /* convert all \r\n to \r\r\n when direction */ + /* is UNIXTODOS, and delete all \r when direction is */ + /* DOSTOUNIX */ +int direction = DEFDIRECTION ; /* UNIXTODOS or DOSTOUNIX */ +int forcewrite ; /* convert even if file is not writeable */ +char * errorlogfilename ; /* name of error log file, NULL if we're printing to stderr */ +int preserve ; /* 1 if we are to preserve owner (Unix) and date (all) */ +char * progname = VERSN_PROGNAME ;/* name of binary (ie, argv[0]) */ +int overwrite = 1 ; /* 1 = overwrite original file, 0 = make backup */ +int verbose ; + +/* local variables */ +static char * infilename = "stdin" ; +static FILE * tempfp ; +static char * tempfilename ; + +/* local functions */ +#if !defined(UNIX) +static int checkmode ( char * filename, unsigned short * origfilemodep, + struct utimbuf * filetimebufp ); +#else +static int checkmode ( char * filename, unsigned short * origfilemodep, + struct utimbuf * filetimebufp, uid_t * ownerp, gid_t * groupp ); +#endif +static int convert ( FILE * infp, FILE * outfp ); +static int openandconvert ( char * filename ); +#if !defined(UNIX) +#define openandconvert_preamble openandconvert +#else +static int openandconvert_preamble ( char * filename ); +#endif + +/* + main + + tofrodos converts ASCII text files to/from a DOS CR-LF deliminated + form from/to a Unix LF deliminated form. + + Usage: tofrodos [options] [file...] + + Exit codes: + EXIT_SUCCESS success (stdlib.h) + EXIT_ERROR error (tofrodos.h) +*/ +int main ( int argc, char ** argv ) +{ + int err ; + + /* initialise and parse the options */ + if (init( argv[0] ) || parseargs( argc, argv )) + return EXIT_ERROR ; + + /* check if we are to convert from stdin */ + if (argc == optind) { + if (isatty( fileno( stdin ) )) { + /* stdin must be redirected else you should supply a */ + /* filename. */ + emsg( EMSG_NOFILENAME ); + return EXIT_ERROR ; + } + /* otherwise stdin has been redirected */ +#if defined(MSDOS) || defined(WIN32) + /* need to make sure the input and output files are binary */ + /* on MSDOS and WIN32 */ + setmode( fileno( stdin ), O_BINARY ); + setmode( fileno( stdout ), O_BINARY ); +#endif + return openandconvert( NULL ) ? EXIT_ERROR : EXIT_SUCCESS ; + } + + /* if we reach here, we have a (list?) of files to convert */ + /* (ignore stdin) */ + err = 0 ; + while (optind < argc) { + if (verbose) + emsg( VERBOSE_CONVERTING, argv[optind] ); + if ((err = openandconvert_preamble( argv[optind] )) != 0 && abortonerr) + return EXIT_ERROR ; + optind++ ; + } + + return err ? EXIT_ERROR : EXIT_SUCCESS ; +} + +/* + sighandler + + Handles SIGINT and SIGTERM. Prints a message, closes and + deletes the temporary files and quits with EXIT_ERROR. + + It never returns (and Watcom C knows it). +*/ +void sighandler ( int sig ) +{ + /* restore signal handler, in case we have the old unsafe behaviour */ + signal( sig, sighandler ); + + /* print error message for this only if verbose */ + if (verbose) + emsg( EMSG_SIGNAL ); + + /* close the temporary file and delete it */ + if (tempfp != NULL) { + fclose( tempfp ); + tempfp = NULL ; + } + if (tempfilename != NULL) { + remove( tempfilename ); + tempfilename = NULL ; + } + + exit( EXIT_ERROR ); +} + +/* ---------------------------- local functions --------------------- */ +/* + checkmode + + Checks that the file we are supposed to convert is indeed + writeable. We don't really need for it to be writeable, since + we actually open a new file and eventually delete the current + file. + + However, if a file is marked not-writeable, we should at least + respect the user's choice and abort unless he flags the + forcewrite flag. + + At the same time we also save the current mode of the file + so that we can set the converted file to the same mode. The + value is saved in the variable pointed to by origfilemodep. + + Returns: 0 on success, -1 on error. + + If -1 is returned, it could mean one of few things: + 1) some component of the path was not valid (directory or the file + itself) (DOS/Unix) or search permission was denied (Unix) + 2) the file is not readable + 3) the file is not writeable and forcewrite is zero. + An error message is displayed on error. +*/ +#if !defined(UNIX) +static int checkmode ( char * filename, unsigned short * origfilemodep, + struct utimbuf * filetimebufp ) +#else +static int checkmode ( char * filename, unsigned short * origfilemodep, + struct utimbuf * filetimebufp, uid_t * ownerp, gid_t * groupp ) +#endif +{ + struct stat statbuf ; + + /* get the file information */ + if (stat( filename, &statbuf )) { + /* couldn't stat the file. */ + emsg( EMSG_ACCESSFILE, filename ); + return -1 ; + } + /* save the mode */ + *origfilemodep = statbuf.st_mode ; + /* save the file times for restore later */ + filetimebufp->actime = statbuf.st_atime ; + filetimebufp->modtime = statbuf.st_mtime ; +#if defined(UNIX) + /* save the owner and group id */ + *ownerp = statbuf.st_uid ; + *groupp = statbuf.st_gid ; +#endif + /* check if file can be read - this is actually redundant for */ + /* DOS systems. */ + if (!(statbuf.st_mode & S_IRUSR)) { /* not readable */ + emsg( EMSG_NOTREADABLE, filename ); + return -1 ; + } + /* check if file can be written to, if forcewrite is 0 */ + if (!forcewrite && !(statbuf.st_mode & S_IWUSR)) { /* not writeable */ + emsg( EMSG_NOTWRITEABLE, filename ); + return -1 ; + } + return 0 ; +} + +/* + convert + + Does the actual work of converting infp to outfp. + + If direction is DOSTOUNIX, "\r\n" pairs will be converted to + '\n'. However, standalone '\r' without a '\n' immediately + following will not be eliminated unless alwaysconvert is + nonzero. + + If direction is UNIXTODOS, '\n' will be converted to "\r\n". + However "\r\n" pairs are not converted to '\r\r\n' unless + alwaysconvert is nonzero. + + Returns 0 on success, -1 on error. +*/ +static int convert ( FILE * infp, FILE * outfp ) +{ + int prevch ; + int c ; + + /* actually it is very simple to do the conversion in DOS/WIN32 */ + /* because the stdio library does this work automatically for */ + /* us. But since we want this program to work on Linux as */ + /* well, a little bit of work stands before us (but only a little). */ + + prevch = EOF ; + + if (direction == UNIXTODOS) { + /* basically we convert all newlines to "\r\n" unless */ + /* the file is already in "\r\n" format. The problem here */ + /* is when you have special situations like a Unix */ + /* text file with lines that have a '\r' just */ + /* before a '\n'. These lines will */ + /* not be converted to "\r\r\n" since the function */ + /* below assumes the line has already been converted. */ + /* To force the conversion of all \n to \r\n regardless */ + /* of preceding characters, set alwaysconvert to 1. */ + while ( (c = getc( infp )) != EOF ) { + if (c == '\n' && (alwaysconvert || prevch != '\r')) { + if (putc( '\r', outfp ) == EOF) + break ; + } + /* always emit the current character */ + if (putc( c, outfp ) == EOF) + break ; + prevch = c ; + } + } + else if (direction == DOSTOUNIX) { + if (!alwaysconvert) { + /* basically we withhold emitting any '\r' until we */ + /* are sure that the next character is not a '\n'. */ + /* If it is not, we emit the '\r', if it is, we */ + /* only emit the '\n'. */ + while ( (c = getc( infp )) != EOF ) { + if (prevch == '\r') { + /* '\r' is a special case because we don't */ + /* emit a '\r' until the next character */ + /* has been read */ + if (c == '\n') { /* a "\r\n" pair */ + /* discard previous '\r' and */ + /* just put the '\n' */ + if (putc( c, outfp ) == EOF) + break ; + } + else { /* prevch was a standalone '\r' but the current char is not '\n' */ + /* emit the standalone '\r' */ + if (putc( '\r', outfp ) == EOF) + break ; + /* emit the current character if */ + /* it is not a '\r' */ + if (c != '\r') { + if (putc( c, outfp ) == EOF) + break ; + } + } + } + else { /* prevch was not '\r' */ + /* emit current character if it is not */ + /* a '\r' */ + if (c != '\r') { + if (putc( c, outfp ) == EOF) + break ; + } + } + prevch = c ; + } + } /* alwaysconvert == 0 */ + else { /* eliminate all '\r' */ + while ((c = getc( infp )) != EOF) { + if (c != '\r') { + if (putc( c, outfp ) == EOF) + break ; + } + /* else skip all carriage returns */ + } + } + } + else { + emsg( EMSG_INTERNAL, EINTNL_DIRECTION ); + return -1 ; + } + + /* if we reach here, either we've reached an EOF or an error */ + /* occurred. */ + if (!feof( infp )) { /* error */ + emsg( EMSG_CONVERT, infilename ); + return -1 ; + } + return 0 ; +} + +#if defined(UNIX) +/* + openandconvert_preamble + + On a Unix-type system (including Linux and BSD systems), it is + possible for a given filename to be merely a symlink. This function + obtains the real filename given the symlink, and calls + openandconvert() with the real file name. It simply calls openandconvert() + if the filename is not a symlink. + + Note: this function only exists on Unix-type systems. On MSDOS and Windows, + openandconvert_preamble() is merely a macro that resolves to + openandconvert(). + + Returns: whatever openandconvert() returns. (0 on success, -1 on + error. Error messages will be displayed on error before returning. +*/ +static int openandconvert_preamble ( char * filename ) +{ + struct stat statbuf ; + char * realfilepath ; + int len ; + int err ; + + /* get the file information */ + if (lstat( filename, &statbuf )) { + /* couldn't stat the file. */ + emsg( EMSG_ACCESSFILE, filename ); + return -1 ; + } + + if (S_ISLNK(statbuf.st_mode)) { + /* get the real filename for symbolic links */ + /* Note: the S_ISLNK() macro is supposed to exist in sys/stat.h */ + /* Early Unices may not have this macro. If it does not exist, you */ + /* may have to define it yourself, a la S_ISDIR() and family. */ + /* eg, #define S_ISLNK(x) (((x) & S_IFMT) == S_IFLNK) */ + /* or something like that. */ + + /* for symbolic links, st_size contains the length of the pathname sans terminating null byte */ + if (statbuf.st_size == 0) { + /* There's a report somewhere of a discovery that Mac OS X returns st_size == 0 for "/dev/stdin" when it + is a symlink to "fd/0". I'm not sure if it is a valid report, but let's play it safe. */ + emsg ( EMSG_SYMLINK, filename ); + return -1 ; + } + realfilepath = xmalloc( statbuf.st_size + 1 ); + + if ((len = readlink( filename, realfilepath, statbuf.st_size )) != -1) { + + /* got to null terminate the string - there is always space because */ + /* we passed readlink() the size of the buffer less 1. */ + realfilepath[len] = '\0' ; + if (verbose) { + emsg( VERBOSE_SYMLINKSRC, filename, realfilepath ); + } + err = openandconvert( realfilepath ); + } + else { + emsg( EMSG_SYMLINK, filename ); + err = -1 ; + } + free ( realfilepath ); + return err ; + } + /* If we reach here, "filename" is not a symbolic link */ + return openandconvert( filename ); +} +#endif + + +/* + openandconvert + + Called to open the files and convert the contents. If you want + it to convert stdin to stdout, call it with NULL as the filename + argument; otherwise pass the function the name of the input file. + + Returns: 0 on success, -1 on error. Error messages will be + displayed on error before returning. +*/ +static int openandconvert ( char * filename ) +{ + FILE * infp ; + FILE * outfp ; + int err ; + char * bakfilename ; + unsigned short origfilemode ; /* file mode of original file */ + struct utimbuf filetimebuf ; + int tempfiledes; +#if defined(MSDOS) + char drv[_MAX_DRIVE]; + char dir[MAXDIRSIZE]; + char fname[MAXFILESIZE]; + char tempname[MAXPATHSIZE]; +#else + char * s ; + char * t ; + size_t len ; + int replacech ; + char c ; +#endif +#if defined(UNIX) + uid_t ownerid ; + gid_t groupid ; +#endif +#if NEWBUFSIZ > BUFSIZ + char * inbufptr ; + char * outbufptr ; +#endif + + /* make sure we initialise */ + bakfilename = NULL ; + err = 0 ; + + if (filename != NULL) { /* stdin is not redirected */ + + /* check for appropriate permissions on the file */ + /* also saves the mode in origfilemode */ +#if !defined(UNIX) + if (checkmode( filename, &origfilemode, &filetimebuf )) + return -1 ; +#else + if (checkmode( filename, &origfilemode, &filetimebuf, + &ownerid, &groupid )) + return -1 ; +#endif + + /* we need to create a temporary and backup filename (if */ + /* applicable) in the same directory */ + /* as our file. This is easy to do for DOS since we have the */ + /* _splitpath(), _makepath() functions. */ +#if defined(MSDOS) + _splitpath( filename, drv, dir, fname, NULL ); + _makepath( tempname, drv, dir, MKTEMP_TEMPL, NULL ); + tempfilename = xstrdup( tempname ); + if (!overwrite) { + _makepath( tempname, drv, dir, fname, BAKEXT ); + if (!strcmp( tempname, filename )) { + emsg( EMSG_BAKFILENAME, filename ); + err = -1 ; + goto err_freetempfn ; + } + bakfilename = xstrdup( tempname ); + } +#else /* not MSDOS - ie, Linux, Windows, anything else */ + /* check if there is a path prefix */ + if ((s = strrchr( filename, DIRSLASH )) != NULL) { + c = *++s ; /* save the character after the slash */ + *s = '\0'; + replacech = 1 ; + len = strlen( filename ) ; + t = filename ; + } + else { + replacech = c = 0 ; /* c is initialized as well to suppress */ + /* the warning issued by gcc -Wall */ + len = sizeof(CURRENTDIR) - 1 ; + t = CURRENTDIR ; + } + tempfilename = xmalloc( len + sizeof(MKTEMP_TEMPL) ); + strcpy( tempfilename, t ); /* add the path leading to filename */ + strcat( tempfilename, MKTEMP_TEMPL ); /* add the filename */ + if (replacech) + *s = c ; + if (!overwrite) { + bakfilename = xmalloc( strlen( filename ) + sizeof( BAKEXT ) ); + strcpy( bakfilename, filename ); + strcat( bakfilename, BAKEXT ); /* append the extension to existing filename to create name of backup file */ + } +#endif + + /* create the temporary file */ + if ((tempfiledes = mkstemp( tempfilename )) == -1) { + emsg( EMSG_NOTEMPNAME, filename ); + err = -1 ; /* redundant; defensive */ +err_freebakfn: + if (!overwrite && bakfilename != NULL) + free( bakfilename ); +#if defined(MSDOS) +err_freetempfn: +#endif + free( tempfilename ); + tempfilename = NULL ; + return -1 ; + } + + /* open the filename as the input file */ + if ((infp = fopen( filename, INFILEMODE )) == NULL) { + emsg( EMSG_OPENFILE, filename ); + err = -1 ; + goto err_freebakfn ; + } + /* associate the infilename with the filename for error */ + /* messages */ + infilename = filename ; + + /* open the temp file as the output file */ + if ((tempfp = fdopen( tempfiledes, OUTFILEMODE )) == NULL) { + close ( tempfiledes ); + remove ( tempfilename ); + emsg( EMSG_CREATETEMP, tempfilename, filename ); + fclose( infp ); + err = -1 ; + goto err_freebakfn ; + } + outfp = tempfp ; + + } /* if filename != NULL */ + else { /* filename == NULL, ie stdin is redirected */ + infp = stdin ; + outfp = stdout ; + + /* not needed, but we do this for the record, and for */ + /* fussy compilers */ + origfilemode = 0 ; + memset( &filetimebuf, 0, sizeof( struct utimbuf ) ); + +#if defined(UNIX) + ownerid = groupid = 0 ; +#endif + + } + +#if NEWBUFSIZ > BUFSIZ + /* (don't use xmalloc() because if we can't get what we want, */ + /* we just don't bother, and go ahead with the minimum) */ + if ((inbufptr = malloc( NEWBUFSIZ )) != NULL) + setvbuf( infp, inbufptr, _IOFBF, NEWBUFSIZ ); + if ((outbufptr = malloc( NEWBUFSIZ )) != NULL) + setvbuf( outfp, outbufptr, _IOFBF, NEWBUFSIZ ); +#endif + /* do the conversion */ + err = convert( infp, outfp ); + + /* close the files */ + fclose( infp ); + fclose( outfp ); + + if (tempfp != NULL) { + /* remove the output file handle from the global to avoid */ + /* double attempts to close the same file */ + tempfp = NULL ; + } + +#if NEWBUFSIZ > BUFSIZ + /* got to free buffers we allocated first */ + if (inbufptr != NULL) + free( inbufptr ); + if (outbufptr != NULL) + free( outbufptr ); +#endif + + if (filename != NULL) { /* stdin was not redirected */ + + if (err) { /* there was an error */ + /* delete the temp file since we've already created it */ + remove ( tempfilename ); + goto err_freebakfn ; + } + + if (!overwrite) { +#if defined(MSDOS) || defined(WIN32) + /* delete any backup file of the same name first, since a rename() does not delete it automatically */ + /* on DOS and Windows */ + chmod( bakfilename, S_IRUSR|S_IWUSR ); /* make it writeable (in case it's not) so that it can be deleted */ + remove( bakfilename ); /* don't check for error returns since the file may not even exist in the first place */ +#endif + /* rename the original file to the back up name */ + if (rename( filename, bakfilename )) { + emsg( EMSG_RENAMEBAK, filename, bakfilename, strerror( errno ) ); + } + } +#if defined(MSDOS) || defined(WIN32) /* we need to delete the original file because a rename() operation will not */ + /* automatically delete it for us on DOS and Windows the way it does on POSIX systems */ + else { /* if we do not need to back up the original file */ + chmod( filename, S_IRUSR|S_IWUSR ); /* make it writeable (in case it's not) so that it can be deleted. */ + remove( filename ); /* delete the original file */ + /* we don't check for error returns for this, since any error message about its failure will just */ + /* confuse the user. "What? Why is it deleting my file?" If this fails, the next rename() will fail too */ + /* since rename() on Windows will not delete the target automatically, and the error message will from the */ + /* failed rename() will tell the user what happened. */ + } +#endif + + /* rename the temp file to the original file name */ + if (rename( tempfilename, filename )) { + emsg( EMSG_RENAMETMP, tempfilename, filename, strerror( errno ) ); + } + + /* remove the temp file name from the global for our */ + /* signal handler*/ + tempfilename = NULL ; + + /* free memory we allocated */ + if (!overwrite && bakfilename != NULL) + free( bakfilename ); + + if (preserve) { + /* change to the original file time */ + utime( filename, &filetimebuf ); +#if defined(UNIX) + /* Change the owner to the owner of the original file. */ + /* We ignore errors since the user might simply want */ + /* to use -p to set the file time, and not being root, */ + /* chown() will fail on Linux. However, we issue an error */ + /* message if the user wants verbosity. */ + if (chown( filename, ownerid, groupid ) && verbose) + emsg( EMSG_CHOWN, filename ); +#endif + } + + /* change the file mode to reflect the original file mode */ + chmod( filename, origfilemode ); + + } /* stdin was not redirected */ + + return err ; +} diff --git a/base/tofrodos/tofrodos/src/tofrodos.h b/base/tofrodos/tofrodos/src/tofrodos.h new file mode 100644 index 0000000..0e8f096 --- /dev/null +++ b/base/tofrodos/tofrodos/src/tofrodos.h @@ -0,0 +1,58 @@ +/* + tofrodos.h Converts text files between DOS and Unix formats. + Copyright (c) 1996-2005 by Christopher Heng. All rights reserved. + + $Id: tofrodos.h,v 1.2 2005/03/06 05:40:49 chris Exp $ +*/ + +#if !defined(TOFRODOS_H_INCLUDED) +#define TOFRODOS_H_INCLUDED + +#if defined(__cplusplus) +extern "C" { +#endif + +/* macros */ +#define UNIXTODOS 0 /* convert from Unix to DOS format */ +#define DOSTOUNIX 1 /* convert from DOS to Unix format */ + +#define EXIT_ERROR 1 /* exit code on error */ +#define FROMDOSNAME "fromdos" +#define FROMDOSNAME2 "dos2unix" +#define TODOSNAME "todos" +#define TODOSNAME2 "unix2dos" + +/* conditional macros - depends on system and/or compiler */ +#if defined(MSDOS) || defined(WIN32) /* MSDOS and WIN32 system */ +#define DEFDIRECTION UNIXTODOS +#else /* all systems other than DOS */ +#define DEFDIRECTION DOSTOUNIX +#endif + + +/* global variables */ +extern int abortonerr ; /* 1 = abort list of files if error in any */ +extern int alwaysconvert ; /* convert all \r\n to \r\r\n when direction */ + /* is UNIXTODOS, and delete all \r when direction is */ + /* DOSTOUNIX */ +extern int direction ; /* UNIXTODOS or DOSTOUNIX */ +extern int forcewrite ; /* convert even if file is not writeable */ +extern char * errorlogfilename ; /* name of error log file, NULL if we're printing to stderr */ +extern int overwrite ; /* 1 = overwrite (default), 0 = make backup */ +extern int preserve ; /* 1 if we are to preserve owner (Unix) and date (all) */ +extern char * progname ; /* name of binary */ +extern int verbose ; /* 1 = be noisy, 0 = shut up */ + +/* function prototypes */ +extern int init ( char * firstarg ); +extern int parseargs ( int argc, char ** argv ); +#if defined(__WATCOMC__) /* sighandler() never returns */ +#pragma aux sighandler aborts +#endif +extern void sighandler ( int sig ); + +#if defined(__cplusplus) +} +#endif + +#endif diff --git a/base/tofrodos/tofrodos/src/utility.c b/base/tofrodos/tofrodos/src/utility.c new file mode 100644 index 0000000..3197931 --- /dev/null +++ b/base/tofrodos/tofrodos/src/utility.c @@ -0,0 +1,68 @@ +/* + utility.c Utility functions. + Copyright (c) 1996,1997 by Christopher Heng. All rights reserved. + + $Id: utility.c,v 1.3 2005/03/07 13:40:52 chris Exp $ +*/ + +/* this should always be first */ +#include "config.h" + +/* standard headers */ +#include /* strdup() */ +#include /* malloc() */ + +/* our headers */ +#include "emsg.h" +#include "tofrodos.h" +#include "utility.h" + +/* + errnomem + + Display error message about being out of memory, and exits. + It never returns. + + WARNING: It must never return. All code assumes it does not + return. Also in Watcom, we define it as a function which does + not return (see utility.h) so that the optimiser can jump to + this function (instead of calling it). +*/ +void errnomem ( int exitcode ) +{ + emsg( EMSG_NOMEM ); + exit( exitcode ); +} + +/* + xmalloc + + Does the same thing as malloc() except that it never returns + a NULL pointer. It aborts with an error message on running + out of memory. +*/ +void * xmalloc ( size_t len ) +{ + void * ptr ; + + if ((ptr = malloc( len )) == NULL) + errnomem( EXIT_ERROR ); + return ptr ; +} + +/* + xstrdup + + Same as strdup(). Only, it never returns a NULL pointer. + If memory could not be allocated, it exits with an error + message. +*/ +char * xstrdup ( const char * s ) +{ + char * t ; + + if ((t = strdup( s )) == NULL) + errnomem( EXIT_ERROR ); + return t ; +} + diff --git a/base/tofrodos/tofrodos/src/utility.h b/base/tofrodos/tofrodos/src/utility.h new file mode 100644 index 0000000..8b3a0c0 --- /dev/null +++ b/base/tofrodos/tofrodos/src/utility.h @@ -0,0 +1,28 @@ +/* + utility.h Utility functions. + Copyright (c) 1996,1997 by Christopher Heng. All rights reserved. + + $Id: utility.h,v 1.1 2004/10/01 12:33:39 chris Exp $ +*/ + +#if !defined(UTILITY_H_INCLUDED) +#define UTILITY_H_INCLUDED + +#if defined(__cplusplus) +extern "C" { +#endif + +/* function declarations */ +#if defined(__WATCOMC__) /* errnomem() never returns */ +#pragma aux errnomem aborts +#endif +extern void errnomem ( int exitcode ); +extern void * xmalloc ( size_t len ); +extern char * xstrdup( const char * s ); + +#if defined(__cplusplus) +} +#endif + + +#endif diff --git a/base/tofrodos/tofrodos/src/version.h b/base/tofrodos/tofrodos/src/version.h new file mode 100644 index 0000000..221c9e5 --- /dev/null +++ b/base/tofrodos/tofrodos/src/version.h @@ -0,0 +1,16 @@ +/* + version.h Version number header. + Copyright 1996-2013 Christopher Heng. All rights reserved. +*/ + +#if !defined(VERSION_H_INCLUDED) +#define VERSION_H_INCLUDED + +/* macros */ +#define VERSN_MAJOR 1 +#define VERSN_MINOR 7 +#define VERSN_PATCH 13 + +#define VERSN_PROGNAME "tofrodos" + +#endif diff --git a/base/tofrodos/tofrodos/todos.exe b/base/tofrodos/tofrodos/todos.exe new file mode 100755 index 0000000000000000000000000000000000000000..9f167ca52b0cbb37d6c86bbf7911da894561fd58 GIT binary patch literal 52736 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 + + + +tofrodos - Converts text files between MSDOS and Unix file formats + + + + +

Tofrodos - Converts text files between MSDOS and Unix file formats

+ +

Synopsis

+ +

+fromdos [options] [file...]
+todos [options] [file...]
+

+ +

Description

+ +

+DOS text files traditionally have carriage return and line feed pairs +as their newline characters while Unix text files have the line feed +as their newline character. fromdos +converts ASCII and Unicode UTF-8 text files from the DOS format to the Unix format, while +todos +converts them from the Unix format to the DOS format. +

+ +

+The programs accept multiple filenames and wildcards as their arguments. +You may also use them in a pipe. +If either program finds its input redirected, it will process stdin +and place the output on stdout. +

+ +

Options

+ +
+
-a
+
+This option is deprecated. Do not use it unless you know what you're doing. By default, +Tofrodos does the expected thing for text files. That is, when converting from +DOS to Unix, it will remove carriage returns only if they are followed by line feeds. +When converting from Unix to DOS, it will add carriage returns only if the linefeeds +are not already preceeded by carriage returns. When Tofrodos is run on a normal text file that +has already been converted, the resulting file should be identical to the original. However, +if you use this option, the program will always remove carriage returns in the DOS to Unix mode +and always add carriage returns in the Unix to DOS mode even if it is not appropriate. +
+
-b
+
+Make a backup of original file. The original file is renamed +with a .bak extension appended to the original +filename, silently replacing any existing file of that name. For example, +"filename.ext" becomes +"filename.ext.bak" replacing any existing file +having the name "filename.ext.bak". Important: the program behaves +differently if it is compiled for DOS (as compared to being compiled for Windows, Linux, +Mac OS X or other systems). In view of the filename restrictions present on DOS, the DOS executable +will strip the original file extension, if any, from the file +before appending the .bak extension. For example, +"filename.ext" becomes "filename.bak". +
+
-d
+
+Convert from DOS to Unix. This forces the program to convert the file in +a particular direction. By default, if the program is named +fromdos or dos2unix +it will assume that the input file is in a DOS format and convert it to +a Unix format. If the program is named todos or +unix2dos it will assume that the input file is in a Unix format and convert it to +a DOS format. Using the -d option forces the program to convert from a DOS +format to a Unix format regardless of how the program is named. Likewise, using the +-u option forces the program to convert from a Unix format to a DOS format +regardless of the name of the program. +
+
-e
+
+Abort processing on any error in any file. Normally, the program will +simply skip to process the next file on the command line when it encounters +any errors. This option causes it to abort on errors. +
+
-f
+
+Force: convert even if the file is not writeable (read-only). By default, +if the program finds that the file does not have write permission, it will not process +that file. This option forces the conversion even if the file is read-only. +
+
-h
+
+Display a short help screen on the program usage and quit. +
+
-l <logfile>
+
+Log error messages to <logfile>. Note that if your command line has an +error, such as when you specify an unknown option, the error message for the +command line option error will be issued to stderr instead and not logged. +
+
-o
+
+Overwrite the original file (no backup). This is the default. +
+
-p
+
+Preserve file ownership and time on Unix-type systems (like Linux). On Windows and MSDOS, it only +preserves the file time. Note that on many Unix-type systems, including Linux, the file +ownership will only be preserved if the program is run as root, otherwise it +will just set the file time and silently fail the change of file +ownership. On such systems, if you want a warning message when the file ownership +cannot be changed, use -v (the verbose flag) as well. +
+
-u
+
+Convert from Unix to DOS. See the -d option above for more information. +
+
-v
+
+Verbose. +
+
-V
+
+Show version message and quit. +
+
+ +

Exit Code

+ +

+Tofrodos terminates with an exit code of 0 on success and 1 on error. +

+

+If the program is invoked with multiple files on the command line, the default behaviour is to skip to the next +file in the list if an error is encountered with any file. In such a case, the exit code returned will the +status of the last file processed (ie, 0 on success, 1 on failure). If this is not desirable, use the +-e option, which will force the program to abort immediately with the appropriate exit +code on encountering any error. +

+ +

Author

+ +

+The program and its documentation are copyrighted © 1996-2013 by +Christopher Heng. All rights reserved. They are distributed under +the terms of the GNU General Public License Version 2. +

+ +

+The latest version of Tofrodos can be obtained from +http://www.thefreecountry.com/tofrodos/index.shtml. +

+ +
+ + + + + diff --git a/base/tofrodos/tofrodos/tofrodos.lsm b/base/tofrodos/tofrodos/tofrodos.lsm new file mode 100644 index 0000000..188b1a9 --- /dev/null +++ b/base/tofrodos/tofrodos/tofrodos.lsm @@ -0,0 +1,23 @@ +Begin4 +Title: tofrodos +Version: 1.7.13 +Entered-date: 2013-10-25 +Description: DOS text files traditionally have CR/LF (carriage return + and line feed) pairs as their new line delimiters while + Unix text files traditionally have LFs (line feeds) to + terminate each line. + tofrodos comprises two programs, "fromdos" and "todos", + which convert ASCII and Unicode UTF-8 text files to and from + these formats. +Keywords: todos, fromdos, unix2dos, dos2unix, text file, line feed, + linefeed, newline, carriage return, CR, LF, conversion, + convert, tofrodos, dostounix, unixtodos, dtou, utod, msdos, + dos, DOS +Author: Christopher Heng +Maintained-by: Christopher Heng +Primary-site: http://www.thefreecountry.com/tofrodos/index.shtml +Alternate-site: +Original-site: +Platforms: Linux, Windows, Mac OS X, FreeBSD, OpenBSD, MSDOS, FreeDOS, Unix +Copying-policy: GPL +End diff --git a/base/toluapp/toluapp.SMBuild b/base/toluapp/toluapp.SMBuild index f10f05f..aa28c0d 100755 --- a/base/toluapp/toluapp.SMBuild +++ b/base/toluapp/toluapp.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=toluapp version=1.0.93 -build=2sml +build=1sml homepage="https://github.com/LuaDist/toluapp" download="https://github.com/LuaDist/toluapp/archive/refs/tags/$version.tar.gz" desc="tool to integrate C/C++ code with Lua" @@ -19,13 +19,15 @@ prepbuilddir() { build() { mkdir -p smbuild && cd smbuild cmake .. \ - -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_BINDIR=/bin \ -DCMAKE_BUILD_TYPE=Release make make install DESTDIR=$pkg cp ../README* $pkgdocs/ + mv $pkg/usr/bin $pkg/ mkfinalpkg } diff --git a/base/tree/tree.SMBuild b/base/tree/tree.SMBuild index 5de22dd..6aa6466 100755 --- a/base/tree/tree.SMBuild +++ b/base/tree/tree.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=tree version=1.6.0 -build=2sml +build=1sml homepage="http://mama.indstate.edu/users/ice/tree/" download="http://mama.indstate.edu/users/ice/tree/src/tree-$version.tgz" desc="Program to display a directory tree" @@ -17,7 +17,7 @@ prepbuilddir() { } build() { - make install prefix="$pkg" MANDIR="$pkg/share/man/man1" + make install prefix="$pkg" MANDIR="$pkg/usr/share/man/man1" cp LICENSE $pkgdocs/ diff --git a/base/twolame/twolame.SMBuild b/base/twolame/twolame.SMBuild index 6ec48a4..961047c 100755 --- a/base/twolame/twolame.SMBuild +++ b/base/twolame/twolame.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=twolame version=0.4.0 -build=2sml +build=1sml homepage="https://www.twolame.org/" download="https://downloads.sourceforge.net/twolame/twolame-$version.tar.gz" desc="Optimised MP2 audio encoder" @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/tzdb/tzdb.SMBuild b/base/tzdb/tzdb.SMBuild index 710f81a..5738a39 100755 --- a/base/tzdb/tzdb.SMBuild +++ b/base/tzdb/tzdb.SMBuild @@ -18,11 +18,10 @@ prepbuilddir() { build() { make install CC="$CC" \ - DESTDIR=$pkg \ - USRDIR="/" \ - BINDIR="/bin" \ - ZICDIR="/bin" \ - MANDIR="/share/man" + DESTDIR=$pkg \ + USRDIR="/usr" \ + BINDIR="/bin" \ + ZICDIR="/bin" cp LICENSE $pkgdocs/ diff --git a/base/unzip/unzip.SMBuild b/base/unzip/unzip.SMBuild index dae5df2..5170796 100755 --- a/base/unzip/unzip.SMBuild +++ b/base/unzip/unzip.SMBuild @@ -28,8 +28,8 @@ build() { make prefix="$pkg" -f unix/Makefile install - mkdir -p $pkg/share/man - mv $pkg/man/man* $pkg/share/man/ + mkdir -p $pkg/usr/share/man + mv $pkg/man/man* $pkg/usr/share/man/ rmdir $pkg/man cp LICENSE $pkgdocs/ diff --git a/base/usbutils/usbutils.SMBuild b/base/usbutils/usbutils.SMBuild index 5907d0e..a93c042 100755 --- a/base/usbutils/usbutils.SMBuild +++ b/base/usbutils/usbutils.SMBuild @@ -18,10 +18,11 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --sysconfdir=/etc \ + --bindir=/bin \ --sbindir=/bin \ - --datadir=/share/hwdata + --datadir=/usr/share/hwdata make make install DESTDIR=$pkg diff --git a/base/wavpack/wavpack.SMBuild b/base/wavpack/wavpack.SMBuild index f905c45..89cb11f 100755 --- a/base/wavpack/wavpack.SMBuild +++ b/base/wavpack/wavpack.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static make diff --git a/base/wayland-protocols/wayland-protocols.SMBuild b/base/wayland-protocols/wayland-protocols.SMBuild index d7d86da..6bc2620 100755 --- a/base/wayland-protocols/wayland-protocols.SMBuild +++ b/base/wayland-protocols/wayland-protocols.SMBuild @@ -19,7 +19,7 @@ prepbuilddir() { build() { mkdir -p smbuild && cd smbuild meson .. \ - --prefix=/ + --prefix=/usr ninja DESTDIR=$pkg ninja install diff --git a/base/wayland/wayland.SMBuild b/base/wayland/wayland.SMBuild index a362b39..39a4982 100755 --- a/base/wayland/wayland.SMBuild +++ b/base/wayland/wayland.SMBuild @@ -18,7 +18,8 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ + --bindir=/bin \ --disable-static \ --disable-documentation diff --git a/base/which/which.SMBuild b/base/which/which.SMBuild index c95f371..324cbb9 100755 --- a/base/which/which.SMBuild +++ b/base/which/which.SMBuild @@ -19,7 +19,8 @@ prepbuilddir() { build() { LDFLAGS="-static" \ ./configure \ - --prefix= + --prefix=/usr \ + --bindir=/bin make make install DESTDIR=$pkg diff --git a/base/wireless-regdb/wireless-regdb.SMBuild b/base/wireless-regdb/wireless-regdb.SMBuild index 966b953..227911d 100755 --- a/base/wireless-regdb/wireless-regdb.SMBuild +++ b/base/wireless-regdb/wireless-regdb.SMBuild @@ -17,10 +17,10 @@ prepbuilddir() { } build() { - install -Dm 644 regulatory.bin $pkg/lib/crda/regulatory.bin - install -Dm 644 regulatory.db $pkg/lib/firmware/regulatory.db - install -Dm 644 regulatory.db.p7s $pkg/lib/firmware/regulatory.db.p7s - install -Dm 644 regulatory.bin.5 $pkg/share/man/man5/regulatory.bin.5 + install -Dm 644 regulatory.bin $pkg/usr/lib/crda/regulatory.bin + install -Dm 644 regulatory.db $pkg/usr/lib/firmware/regulatory.db + install -Dm 644 regulatory.db.p7s $pkg/usr/lib/firmware/regulatory.db.p7s + install -Dm 644 regulatory.bin.5 $pkg/usr/share/man/man5/regulatory.bin.5 cp LICENSE $pkgdocs/ diff --git a/base/woff2/woff2.SMBuild b/base/woff2/woff2.SMBuild index 1a83ac1..70af21d 100755 --- a/base/woff2/woff2.SMBuild +++ b/base/woff2/woff2.SMBuild @@ -20,7 +20,8 @@ build() { sed -i "s/NOT BUILD_SHARED_LIBS/TRUE/" CMakeLists.txt mkdir -p smbuild && cd smbuild cmake .. -GNinja \ - -DCMAKE_INSTALL_PREFIX= \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DCMAKE_INSTALL_BINDIR=/bin \ -DCMAKE_INSTALL_LIBDIR=lib DESTDIR="$pkg" ninja install diff --git a/base/xz/xz.SMBuild b/base/xz/xz.SMBuild index 342998b..25354b0 100755 --- a/base/xz/xz.SMBuild +++ b/base/xz/xz.SMBuild @@ -1,7 +1,7 @@ # Maintainer: PktSurf app=xz version=5.2.5 -build=3sml +build=1sml homepage="https://tukaani.org/xz/" download="https://tukaani.org/xz/xz-$version.tar.xz" desc="Compression utility based on the LZMA algorithm" @@ -18,10 +18,11 @@ prepbuilddir() { build() { ./configure \ - --prefix= \ + --prefix=/usr \ --bindir=/bin \ - --enable-static \ - --with-pic + --with-pic \ + --disable-static \ + --disable-nls make make install DESTDIR=$pkg