diff options
-rw-r--r-- | system/arj/README | 7 | ||||
-rw-r--r-- | system/arj/arj.SlackBuild | 98 | ||||
-rw-r--r-- | system/arj/arj.info | 10 | ||||
-rw-r--r-- | system/arj/patches/001_arches_align.patch | 35 | ||||
-rw-r--r-- | system/arj/patches/002_no_remove_static_const.patch | 15 | ||||
-rw-r--r-- | system/arj/patches/003_64_bit_clean.patch | 196 | ||||
-rw-r--r-- | system/arj/patches/004_parallel_build.patch | 177 | ||||
-rw-r--r-- | system/arj/patches/005_use_system_strnlen.patch | 47 | ||||
-rw-r--r-- | system/arj/patches/006_use_safe_strcpy.patch | 91 | ||||
-rw-r--r-- | system/arj/patches/SBo_integrity_64bit.patch | 45 | ||||
-rw-r--r-- | system/arj/patches/doc_refer_robert_k_jung.patch | 14 | ||||
-rw-r--r-- | system/arj/patches/gnu_build_fix.patch | 24 | ||||
-rw-r--r-- | system/arj/patches/gnu_build_flags.patch | 38 | ||||
-rw-r--r-- | system/arj/patches/gnu_build_strip.patch | 96 | ||||
-rw-r--r-- | system/arj/patches/hurd_no_fcntl_getlk.patch | 16 | ||||
-rw-r--r-- | system/arj/patches/security_format.patch | 302 | ||||
-rw-r--r-- | system/arj/patches/series | 13 | ||||
-rw-r--r-- | system/arj/slack-desc | 19 |
18 files changed, 1243 insertions, 0 deletions
diff --git a/system/arj/README b/system/arj/README new file mode 100644 index 0000000000..2cb7b69f23 --- /dev/null +++ b/system/arj/README @@ -0,0 +1,7 @@ +arj (Free Software implementation of arj archiver) + +A portable version of the ARJ archiver, available for a growing number +of DOS-like and UNIX-like platforms on a variety of architectures. + +This build doesn't conflict with Slackware's unarj package. Unlike unarj, +arj is capable of creating archives as well as extracting them. diff --git a/system/arj/arj.SlackBuild b/system/arj/arj.SlackBuild new file mode 100644 index 0000000000..49e052d924 --- /dev/null +++ b/system/arj/arj.SlackBuild @@ -0,0 +1,98 @@ +#!/bin/sh + +# Slackware build script for arj + +# Written by B. Watson (yalhcru@gmail.com) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +PRGNAM=arj +VERSION=${VERSION:-3.10.22} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i486 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$VERSION +tar xvf $CWD/$PRGNAM-$VERSION.tar.gz +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; + +# Use Debian's patches. See https://packages.debian.org/sid/arj. These are +# needed to get the source to build on modern systems, and work correctly +# on 64-bit systems. The SBo_integrity_64bit.patch is my own, it fixes +# "arj i" on 64-bit (and I've sent it to the debian maintainer as well). + +for i in $( cat $CWD/patches/series ); do + patch -p1 < $CWD/patches/$i +done + +# Truly archaic autoconf stuff. The funkiness with config.sub is meant +# to deal with the unlikely situation that multiple automake versions +# are installed. +cd gnu +cp $( ls /usr/share/automake-*/config.sub | head -1 ) . +autoreconf -if || true # exits with error, generates configure anyway + +CFLAGS="-D_UNIX $SLKCFLAGS" \ +CXXFLAGS="-D_UNIX $SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PRGNAM-$VERSION \ + --build=$ARCH-slackware-linux + +cd - + +make BUILD_STRIP=1 +make install DESTDIR=$PKG + +gzip -9 $PKG/usr/man/man1/*.1 + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cp -a ChangeLog doc/* $PKG/usr/doc/$PRGNAM-$VERSION +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/system/arj/arj.info b/system/arj/arj.info new file mode 100644 index 0000000000..57c8b58657 --- /dev/null +++ b/system/arj/arj.info @@ -0,0 +1,10 @@ +PRGNAM="arj" +VERSION="3.10.22" +HOMEPAGE="http://arj.sourceforge.net/" +DOWNLOAD="http://downloads.sourceforge.net/project/arj/arj/2.78_3.10%20build%2022/arj-3.10.22.tar.gz" +MD5SUM="f263bf3cf6d42a8b7e85b4fb514336d3" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" diff --git a/system/arj/patches/001_arches_align.patch b/system/arj/patches/001_arches_align.patch new file mode 100644 index 0000000000..96180dab70 --- /dev/null +++ b/system/arj/patches/001_arches_align.patch @@ -0,0 +1,35 @@ +Index: b/arj_proc.c +=================================================================== +--- a/arj_proc.c 2005-06-21 22:53:12.000000000 +0300 ++++ b/arj_proc.c 2008-06-16 08:25:28.000000000 +0300 +@@ -2898,7 +2898,7 @@ char *ltrim(char *str) + } + #endif + +-#if defined(WORDS_BIGENDIAN)&&!defined(ARJDISP)&&!defined(REGISTER) ++#if (defined(WORDS_BIGENDIAN) || defined(ALIGN_POINTERS)) && !defined(ARJDISP) && !defined(REGISTER) + /* Model-independent routine to get 2 bytes from far RAM */ + + unsigned int mget_word(char FAR *p) +Index: b/arj_proc.h +=================================================================== +--- a/arj_proc.h 2004-01-25 12:39:30.000000000 +0200 ++++ b/arj_proc.h 2008-06-16 08:25:28.000000000 +0300 +@@ -12,7 +12,7 @@ + + #define mget_byte(p) (*(unsigned char FAR *)(p)&0xFF) + #define mput_byte(c, p) *(unsigned char FAR *)(p)=(unsigned char)(c) +-#ifndef WORDS_BIGENDIAN ++#if !defined(ALIGN_POINTERS) && !defined(WORDS_BIGENDIAN) + #define mget_word(p) (*(unsigned short *)(p)&0xFFFF) + #define mput_word(w,p) (*(unsigned short *)(p)=(unsigned short)(w)) + #define mget_dword(p) (*(unsigned long *)(p)) +@@ -60,7 +60,7 @@ void pack_mem(struct mempack *mempack); + void unpack_mem(struct mempack *mempack); + void strip_lf(char *str); + char *ltrim(char *str); +-#ifdef WORDS_BIGENDIAN ++#if defined(ALIGN_POINTERS) || defined(WORDS_BIGENDIAN) + unsigned int mget_word(char FAR *p); + unsigned long mget_dword(char FAR *p); + void mput_word(unsigned int w, char FAR *p); diff --git a/system/arj/patches/002_no_remove_static_const.patch b/system/arj/patches/002_no_remove_static_const.patch new file mode 100644 index 0000000000..9f435316e2 --- /dev/null +++ b/system/arj/patches/002_no_remove_static_const.patch @@ -0,0 +1,15 @@ +--- + integr.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/integr.c ++++ b/integr.c +@@ -5,7 +5,7 @@ + * + */ + +-static const char intergrity_identifier[] = { ++static volatile const char intergrity_identifier[] = { + 0xB0, 0x03, 0xB0, 0x02, 0xB0, 0x03, + 0xB0, 0x04, 0xB0, 0x05, + 0x90, 0x90, 0x90, 0x90, diff --git a/system/arj/patches/003_64_bit_clean.patch b/system/arj/patches/003_64_bit_clean.patch new file mode 100644 index 0000000000..4e32a86a6a --- /dev/null +++ b/system/arj/patches/003_64_bit_clean.patch @@ -0,0 +1,196 @@ +Index: b/arj_arcv.c +=================================================================== +--- a/arj_arcv.c 2005-06-21 22:53:12.000000000 +0300 ++++ b/arj_arcv.c 2008-06-16 08:25:43.000000000 +0300 +@@ -59,27 +59,27 @@ static char idxid_fault[]="?"; + #define setup_hput(ptr) (tmp_hptr=(ptr)) + + #define hget_byte() (*(tmp_hptr++)&0xFF) +-#define hput_byte(c) (*(tmp_hptr++)=(char) (c)) ++#define hput_byte(c) (*(tmp_hptr++)=(uint8_t) (c)) + + /* Reads two bytes from the header, incrementing the pointer */ + +-static unsigned int hget_word() ++static uint16_t hget_word() + { +- unsigned int result; ++ uint16_t result; + + result=mget_word(tmp_hptr); +- tmp_hptr+=sizeof(short); ++ tmp_hptr+=sizeof(uint16_t); + return result; + } + + /* Reads four bytes from the header, incrementing the pointer */ + +-static unsigned long hget_longword() ++static uint32_t hget_longword() + { +- unsigned long result; ++ uint32_t result; + + result=mget_dword(tmp_hptr); +- tmp_hptr+=sizeof(unsigned long); ++ tmp_hptr+=sizeof(uint32_t); + return result; + } + +@@ -87,18 +87,18 @@ static unsigned long hget_longword() + + /* Writes two bytes to the header, incrementing the pointer */ + +-static void hput_word(unsigned int w) ++static void hput_word(uint16_t w) + { + mput_word(w,tmp_hptr); +- tmp_hptr+=sizeof(unsigned short); ++ tmp_hptr+=sizeof(uint16_t); + } + + /* Writes four bytes to the header, incrementing the pointer */ + +-static void hput_longword(unsigned long l) ++static void hput_longword(uint32_t l) + { + mput_dword(l,tmp_hptr); +- tmp_hptr+=sizeof(unsigned long); ++ tmp_hptr+=sizeof(uint32_t); + } + + /* Calculates and stores the basic header size */ +Index: b/arj_proc.c +=================================================================== +--- a/arj_proc.c 2008-06-16 08:25:28.000000000 +0300 ++++ b/arj_proc.c 2008-06-16 08:25:43.000000000 +0300 +@@ -585,7 +585,7 @@ int search_for_extension(char *name, cha + /* Returns the exact amount of data that could be safely written to the + destination volume */ + +-unsigned long get_volfree(unsigned int increment) ++unsigned long get_volfree(unsigned long increment) + { + unsigned long pvol; + unsigned int arjsec_overhead; +@@ -605,7 +605,7 @@ unsigned long get_volfree(unsigned int i + remain=volume_limit-ftell(aostream)-pvol-(long)arjsec_overhead- + (long)out_bytes-(long)cpos-(long)ext_voldata- + MULTIVOLUME_RESERVE-t_volume_offset; +- return((unsigned long)min(remain, (unsigned long)increment)); ++ return((unsigned long)min(remain, increment)); + } + + /* Performs various checks when multivolume data is packed to predict an +@@ -2466,14 +2466,14 @@ static int get_str_from_jq() + *tsptr='\0'; + endptr=tsptr; + tsptr=sptr; +- while((unsigned int)tsptr<(unsigned int)endptr&&patterns<SEARCH_STR_MAX) ++ while((intptr_t)tsptr<(intptr_t)endptr&&patterns<SEARCH_STR_MAX) + { + while(*tsptr=='\0') + tsptr++; +- if((unsigned int)tsptr<(unsigned int)endptr) ++ if((intptr_t)tsptr<(intptr_t)endptr) + { + search_str[patterns++]=tsptr; +- while(*tsptr!='\0'&&(unsigned int)tsptr<(unsigned int)endptr) ++ while(*tsptr!='\0'&&(intptr_t)tsptr<(intptr_t)endptr) + tsptr++; + } + } +@@ -2901,9 +2901,9 @@ char *ltrim(char *str) + #if (defined(WORDS_BIGENDIAN) || defined(ALIGN_POINTERS)) && !defined(ARJDISP) && !defined(REGISTER) + /* Model-independent routine to get 2 bytes from far RAM */ + +-unsigned int mget_word(char FAR *p) ++uint16_t mget_word(char FAR *p) + { +- unsigned int b0, b1; ++ uint16_t b0, b1; + + b0=mget_byte(p); + b1=mget_byte(p+1); +@@ -2912,9 +2912,9 @@ unsigned int mget_word(char FAR *p) + + /* Model-independent routine to get 4 bytes from far RAM */ + +-unsigned long mget_dword(char FAR *p) ++uint32_t mget_dword(char FAR *p) + { +- unsigned long w0, w1; ++ uint32_t w0, w1; + + w0=mget_word(p); + w1=mget_word(p+2); +@@ -2923,7 +2923,7 @@ unsigned long mget_dword(char FAR *p) + + /* Model-independent routine to store 2 bytes in far RAM */ + +-void mput_word(unsigned int w, char FAR *p) ++void mput_word(uint16_t w, char FAR *p) + { + mput_byte(w&0xFF, p); + mput_byte(w>>8 , p+1); +@@ -2931,7 +2931,7 @@ void mput_word(unsigned int w, char FAR + + /* Model-independent routine to store 4 bytes in far RAM */ + +-void mput_dword(unsigned long d, char FAR *p) ++void mput_dword(uint32_t d, char FAR *p) + { + mput_word(d&0xFFFF, p); + mput_word(d>>16 , p+2); +Index: b/arj_proc.h +=================================================================== +--- a/arj_proc.h 2008-06-16 08:25:28.000000000 +0300 ++++ b/arj_proc.h 2008-06-16 08:25:43.000000000 +0300 +@@ -8,15 +8,17 @@ + #ifndef ARJ_PROC_INCLUDED + #define ARJ_PROC_INCLUDED + ++#include <stdint.h> ++ + /* Helper macros */ + +-#define mget_byte(p) (*(unsigned char FAR *)(p)&0xFF) +-#define mput_byte(c, p) *(unsigned char FAR *)(p)=(unsigned char)(c) ++#define mget_byte(p) (*(uint8_t FAR *)(p)&0xFF) ++#define mput_byte(c, p) *(uint8_t FAR *)(p)=(uint8_t)(c) + #if !defined(ALIGN_POINTERS) && !defined(WORDS_BIGENDIAN) +-#define mget_word(p) (*(unsigned short *)(p)&0xFFFF) +-#define mput_word(w,p) (*(unsigned short *)(p)=(unsigned short)(w)) +-#define mget_dword(p) (*(unsigned long *)(p)) +-#define mput_dword(w,p) (*(unsigned long *)(p)=(unsigned long)(w)) ++#define mget_word(p) (*(uint16_t *)(p)&0xFFFF) ++#define mput_word(w,p) (*(uint16_t *)(p)=(uint16_t)(w)) ++#define mget_dword(p) (*(uint32_t *)(p)) ++#define mput_dword(w,p) (*(uint32_t *)(p)=(uint32_t)(w)) + #endif + + /* Prototypes */ +@@ -31,7 +33,7 @@ void copy_bytes(unsigned long nbytes); + int translate_path(char *name); + void restart_proc(char *dest); + int search_for_extension(char *name, char *ext_list); +-unsigned long get_volfree(unsigned int increment); ++unsigned long get_volfree(unsigned long increment); + unsigned int check_multivolume(unsigned int increment); + void store(); + void hollow_encode(); +@@ -61,10 +63,10 @@ void unpack_mem(struct mempack *mempack) + void strip_lf(char *str); + char *ltrim(char *str); + #if defined(ALIGN_POINTERS) || defined(WORDS_BIGENDIAN) +-unsigned int mget_word(char FAR *p); +-unsigned long mget_dword(char FAR *p); +-void mput_word(unsigned int w, char FAR *p); +-void mput_dword(unsigned long d, char FAR *p); ++uint16_t mget_word(char FAR *p); ++uint32_t mget_dword(char FAR *p); ++void mput_word(uint16_t w, char FAR *p); ++void mput_dword(uint32_t d, char FAR *p); + #endif + + #endif diff --git a/system/arj/patches/004_parallel_build.patch b/system/arj/patches/004_parallel_build.patch new file mode 100644 index 0000000000..3351376233 --- /dev/null +++ b/system/arj/patches/004_parallel_build.patch @@ -0,0 +1,177 @@ +--- + gnu/makefile.in | 74 +++++++++++++++++++++++++++++++++----------------------- + 1 file changed, 44 insertions(+), 30 deletions(-) + +--- a/gnu/makefile.in ++++ b/gnu/makefile.in +@@ -159,13 +159,15 @@ $(SFXSTUB_DIR)/%.o: $(SRC_DIR)/%.c + # Main dependency tree + # + +-.PHONY: timestamp prepare cleanup package help ++.PHONY: timestamp msg-headers depends prepare clean package help + + ifdef COMMERCIAL + MAKE_KEY=$(TOOLS_DIR)/make_key$x + endif + + all: prepare timestamp ++ $(MAKE) msg-headers ++ $(MAKE) depends + $(MAKE) do-all + + do-all: \ +@@ -175,8 +177,28 @@ do-all: \ + $(REGISTER_DIR)/$(REGISTER)$x \ + $(ARJDISP_DIR)/arjdisp$x \ + $(TOOLS_DIR)/packager$x \ +- $(MAKE_KEY) \ +- dispose ++ $(MAKE_KEY) ++ ++MSG_ID := \ ++ msg_crp msg_stb msg_sfv msg_sfx msg_sfj msg_arj msg_rej msg_reg msg_adi ++MSG_HEADERS := $(patsubst %,$(BASEDIR)/%.h,$(MSG_ID)) ++ ++msg-headers: $(MSG_HEADERS) ++ ++.deps: ++ mkdir -p $@ ++ ++.deps/%.d: %.c .deps ++ $(CC) $(CPPFLAGS) $(COPT) $< -MM > $@ ++ ++SOURCES = $(wildcard *.c) ++DEPS = $(addprefix .deps/,$(SOURCES:.c=.d)) ++ ++ifeq ($(sort $(DEPS)),$(sort $(wildcard .deps/*.d))) ++include $(DEPS) ++endif ++ ++depends: $(DEPS) + + # + # Update timestamp file +@@ -186,12 +208,6 @@ timestamp: $(TOOLS_DIR)/today$x + $(TOOLS_DIR)/today$x $(LOCALE) $(BASEDIR) + + # +-# Final cleanup +-# +- +-dispose: +- +-# + # The tools + # + +@@ -255,7 +271,7 @@ $(ARJCRYPT_DIR)/arjcrypt$d: $(ARJCRYPT_O + $(CC) $(ALL_CFLAGS) $(DLL_FLAGS) -o $@ $(ARJCRYPT_OBJS) $(ARJCRYPT_DEF) $(LIBS) + $(TOOLS_DIR)/postproc $@ + +-$(BASEDIR)/nmsg_crp.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/nmsg_crp.c $(BASEDIR)/msg_crp.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_crp $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -269,7 +285,7 @@ $(SFXSTUB_DIR)/sfxstub$x: $(SFXSTUB_OBJS + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(SFXSTUB_OBJS) $(LIBS) + $(TOOLS_DIR)/postproc$x $@ -sfx + +-$(BASEDIR)/nmsg_stb.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/nmsg_stb.c $(BASEDIR)/msg_stb.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_stb $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -287,7 +303,8 @@ $(ARJSFXV_DIR)/arjsfxv$x: $(ARJSFXV_OBJS + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJSFXV_OBJS) $(LIBS) $(DYN_LIBS) + $(TOOLS_DIR)/postproc$x $@ -sfx + +-$(BASEDIR)/fmsg_sfv.c $(BASEDIR)/imsg_sfv.c $(BASEDIR)/nmsg_sfv.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_sfv.c $(BASEDIR)/imsg_sfv.c $(BASEDIR)/nmsg_sfv.c \ ++$(BASEDIR)/msg_sfv.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_sfv $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -304,7 +321,8 @@ $(ARJSFX_DIR)/arjsfx$x: $(ARJSFX_OBJS) $ + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJSFX_OBJS) $(LIBS) + $(TOOLS_DIR)/postproc$x $@ -sfx + +-$(BASEDIR)/fmsg_sfx.c $(BASEDIR)/imsg_sfx.c $(BASEDIR)/nmsg_sfx.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_sfx.c $(BASEDIR)/imsg_sfx.c $(BASEDIR)/nmsg_sfx.c \ ++$(BASEDIR)/msg_sfx.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_sfx $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -319,7 +337,8 @@ $(ARJSFXJR_DIR)/arjsfxjr$x: $(ARJSFXJR_O + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJSFXJR_OBJS) $(LIBS) + $(TOOLS_DIR)/postproc$x $@ -sfx + +-$(BASEDIR)/fmsg_sfj.c $(BASEDIR)/imsg_sfj.c $(BASEDIR)/nmsg_sfj.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_sfj.c $(BASEDIR)/imsg_sfj.c $(BASEDIR)/nmsg_sfj.c \ ++$(BASEDIR)/msg_sfj.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_sfj $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -354,7 +373,8 @@ $(ARJ_DIR)/arj$x: $(ARJ_OBJS) \ + $(TOOLS_DIR)/join $(ARJ_DIR)/arj$x $(BASEDIR)/help.arj + $(TOOLS_DIR)/postproc $@ + +-$(BASEDIR)/fmsg_arj.c $(BASEDIR)/imsg_arj.c $(BASEDIR)/nmsg_arj.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_arj.c $(BASEDIR)/imsg_arj.c $(BASEDIR)/nmsg_arj.c \ ++$(BASEDIR)/msg_arj.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_arj $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -372,7 +392,8 @@ $(REARJ_DIR)/rearj$x: $(REARJ_OBJS) \ + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(REARJ_OBJS) $(LIBS) + $(TOOLS_DIR)/postproc $@ + +-$(BASEDIR)/fmsg_rej.c $(BASEDIR)/imsg_rej.c $(BASEDIR)/nmsg_rej.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_rej.c $(BASEDIR)/imsg_rej.c $(BASEDIR)/nmsg_rej.c \ ++$(BASEDIR)/msg_rej.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_rej $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -388,7 +409,8 @@ $(REGISTER_DIR)/$(REGISTER)$x: $(REGISTE + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(REGISTER_OBJS) $(LIBS) + $(TOOLS_DIR)/postproc $@ -sfx + +-$(BASEDIR)/fmsg_reg.c $(BASEDIR)/imsg_reg.c $(BASEDIR)/nmsg_reg.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_reg.c $(BASEDIR)/imsg_reg.c $(BASEDIR)/nmsg_reg.c \ ++$(BASEDIR)/msg_reg.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_reg $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -402,7 +424,8 @@ ARJDISP_OBJS = $(patsubst %,$(ARJDISP_DI + $(ARJDISP_DIR)/arjdisp$x: $(ARJDISP_OBJS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJDISP_OBJS) $(LIBS) + +-$(BASEDIR)/fmsg_adi.c $(BASEDIR)/imsg_adi.c $(BASEDIR)/nmsg_adi.c: $(TOOLS_DIR)/msgbind$x $(RESFILE) ++$(BASEDIR)/fmsg_adi.c $(BASEDIR)/imsg_adi.c $(BASEDIR)/nmsg_adi.c \ ++$(BASEDIR)/msg_adi.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) + $(TOOLS_DIR)/msgbind $(RESFILE) msg_adi $(OS_ID) $(PACKAGE) $(LOCALE) $(BASEDIR) + + # +@@ -427,18 +450,9 @@ prepare: + # + + clean: +- -rm -f $(BASEDIR)/* +- -rm -f $(TOOLS_DIR)/* +- -rm -f $(ARJCRYPT_DIR)/* +- -rm -f $(SFXSTUB_DIR)/* +- -rm -f $(ARJSFXV_DIR)/* +- -rm -f $(ARJSFX_DIR)/* +- -rm -f $(ARJSFXJR_DIR)/* +- -rm -f $(ARJ_DIR)/* +- -rm -f $(REARJ_DIR)/* +- -rm -f $(REGISTER_DIR)/* +- -rm -f $(ARJDISP_DIR)/* +- -rm -f arj.core ++ rm -rf .deps ++ rm -rf $(BASEDIR) ++ rm -f arj.core + + # + # Local installation diff --git a/system/arj/patches/005_use_system_strnlen.patch b/system/arj/patches/005_use_system_strnlen.patch new file mode 100644 index 0000000000..00a459809b --- /dev/null +++ b/system/arj/patches/005_use_system_strnlen.patch @@ -0,0 +1,47 @@ +--- + fardata.c | 2 ++ + gnu/config.h.in | 1 + + gnu/configure.in | 4 +++- + 3 files changed, 6 insertions(+), 1 deletion(-) + +--- a/fardata.c ++++ b/fardata.c +@@ -190,6 +190,7 @@ int msg_sprintf(char *str, FMSG *fmt, .. + + /* Length-limited strlen() */ + ++#ifndef HAVE_STRNLEN + static int strnlen(const char FAR *s, int count) + { + const char FAR *sc; +@@ -198,6 +199,7 @@ static int strnlen(const char FAR *s, in + ; + return(sc-s); + } ++#endif + + /* Hex representation of digits */ + +--- a/gnu/config.h.in ++++ b/gnu/config.h.in +@@ -8,6 +8,7 @@ + #undef HAVE_FCLOSEALL + #undef HAVE_SETPRIORITY + #undef HAVE_STRCASECMP ++#undef HAVE_STRNLEN + #undef HAVE_STRUPR + #undef HAVE_STRLWR + #undef USE_COLORS +--- a/gnu/configure.in ++++ b/gnu/configure.in +@@ -35,7 +35,9 @@ AC_FUNC_MEMCMP + AC_FUNC_SETVBUF_REVERSED + AC_TYPE_SIGNAL + AC_FUNC_VPRINTF +-AC_CHECK_FUNCS([getcwd min max mkdir mkdtemp rmdir fcloseall strcasecmp setpriority strdup strerror strstr strupr strlwr strtol strtoul]) ++AC_CHECK_FUNCS([getcwd min max mkdir mkdtemp rmdir fcloseall \ ++ strcasecmp setpriority strdup strerror strstr strnlen \ ++ strupr strlwr strtol strtoul]) + + dnl Platform-specific tuning + PROG_EXT= diff --git a/system/arj/patches/006_use_safe_strcpy.patch b/system/arj/patches/006_use_safe_strcpy.patch new file mode 100644 index 0000000000..ffcab3031e --- /dev/null +++ b/system/arj/patches/006_use_safe_strcpy.patch @@ -0,0 +1,91 @@ +--- + arj.c | 2 +- + arjdata.c | 9 +-------- + ea_mgr.c | 2 +- + misc.h | 4 ++++ + msgbind.c | 2 +- + packager.c | 2 +- + 6 files changed, 9 insertions(+), 12 deletions(-) + +--- a/arjdata.c ++++ b/arjdata.c +@@ -204,13 +204,6 @@ void date_fmt(char *dest) + #endif + } + +-/* A safe strcpy() */ +- +-static void safe_strcpy(char *dest, char *src) +-{ +- memmove(dest, src, strlen(src)+1); +-} +- + /* Context substitution routine */ + + char *expand_tags(char *str, int limit) +@@ -232,7 +225,7 @@ char *expand_tags(char *str, int limit) + { + if(*(p+1)==TAG_CHAR) + { +- strcpy(p, p+1); ++ safe_strcpy(p, p+1); + p++; + } + else if(*(p+1)==TAG_SPECIAL_BEGIN&&(et=strchr(p+3, TAG_SPECIAL_END))!=NULL) +--- a/arj.c ++++ b/arj.c +@@ -1169,7 +1169,7 @@ int main(int argc, char *argv[]) + if(strlen(tmp_ptr)<=121) + tmp_ptr[0]='\0'; + else if(tmp_ptr[120]==' ') +- strcpy(tmp_ptr, tmp_ptr+121); ++ safe_strcpy(tmp_ptr, tmp_ptr+121); + } + if(cmd==ARJ_CMD_ORDER&&strpbrk(tmp_ptr, wildcard_pattern)!=NULL) + error(M_ORDER_WILDCARD); +--- a/ea_mgr.c ++++ b/ea_mgr.c +@@ -696,7 +696,7 @@ int resolve_longname(char *dest, char *n + tmp_name[st_len]='\0'; + if(tmp_name[0]==0xFD&&tmp_name[1]==0xFF) + { +- strcpy(tmp_name, (char *)tmp_name+4); ++ safe_strcpy(tmp_name, (char *)tmp_name+4); + st_len-=4; + } + if(st_len==0||st_len+entry>=FILENAME_MAX) +--- a/msgbind.c ++++ b/msgbind.c +@@ -578,7 +578,7 @@ int main(int argc, char **argv) + } + strcat(pool[tpool].data, msgname); + strcat(pool[tpool].data, ", "); +- strcpy(msg_buffer, msg_buffer+1); ++ safe_strcpy(msg_buffer, msg_buffer+1); + buf_len=strlen(msg_buffer); + msg_buffer[--buf_len]='\0'; + patch_string(msg_buffer); +--- a/packager.c ++++ b/packager.c +@@ -347,7 +347,7 @@ int main(int argc, char **argv) + expand_tags(buf, sizeof(buf)-1); + if((p=strchr(buf, '.'))!=NULL) + { +- strcpy(p, p+1); ++ safe_strcpy(p, p+1); + if((p=strchr(buf, '.'))!=NULL) + *p='\0'; + } +--- a/misc.h ++++ b/misc.h +@@ -11,6 +11,10 @@ + #include "arjtypes.h" + #include "filelist.h" + ++/* A safe strcpy() */ ++ ++#define safe_strcpy(dest, src) memmove(dest, src, strlen(src)+1); ++ + /* ASCIIZ string copy macro */ + + #define strcpyn(dest, src, n) \ diff --git a/system/arj/patches/SBo_integrity_64bit.patch b/system/arj/patches/SBo_integrity_64bit.patch new file mode 100644 index 0000000000..2ade621403 --- /dev/null +++ b/system/arj/patches/SBo_integrity_64bit.patch @@ -0,0 +1,45 @@ +diff -Naur arj-3.10.22/arj_proc.c arj-3.10.22.patched/arj_proc.c +--- arj-3.10.22/arj_proc.c 2005-06-21 15:53:12.000000000 -0400 ++++ arj-3.10.22.patched/arj_proc.c 2014-08-06 04:11:35.000000000 -0400 +@@ -7,6 +7,7 @@ + * + */ + ++#include <stdint.h> + #include "arj.h" + + DEBUGHDR(__FILE__) /* Debug information block */ +@@ -929,9 +930,9 @@ + #endif + fclose(stream); + #if SFX_LEVEL>=ARJSFXV +- return(crc32term==st_crc&&fsize==st_fsize); ++ return((uint32_t)crc32term==(uint32_t)st_crc&&(uint32_t)fsize==(uint32_t)st_fsize); + #else +- if(crc32term==st_crc&&fsize==st_fsize) ++ if((uint32_t)crc32term==(uint32_t)st_crc&&(uint32_t)fsize==(uint32_t)st_fsize) + msg_cprintf(0, M_INTEGRITY_OK); + else + pause_error(M_INTEGRITY_VIOLATED); +diff -Naur arj-3.10.22/postproc.c arj-3.10.22.patched/postproc.c +--- arj-3.10.22/postproc.c 2003-06-22 07:12:28.000000000 -0400 ++++ arj-3.10.22.patched/postproc.c 2014-08-06 03:22:16.000000000 -0400 +@@ -6,6 +6,7 @@ + * + */ + ++#include <stdint.h> + #include "arj.h" + + /* Operations */ +@@ -37,8 +38,9 @@ + + static char buf[PROC_BLOCK_SIZE]; + +-static void _fput_dword(const unsigned long l, FILE *stream) ++static void _fput_dword(const unsigned long w, FILE *stream) + { ++ uint32_t l = (uint32_t)w; + #ifdef WORDS_BIGENDIAN + fputc(l ,stream); + fputc(l>>8 ,stream); diff --git a/system/arj/patches/doc_refer_robert_k_jung.patch b/system/arj/patches/doc_refer_robert_k_jung.patch new file mode 100644 index 0000000000..f61b558775 --- /dev/null +++ b/system/arj/patches/doc_refer_robert_k_jung.patch @@ -0,0 +1,14 @@ +Index: b/resource/en/arj.1 +=================================================================== +--- a/resource/en/arj.1 2005-06-21 21:27:20.000000000 +0300 ++++ b/resource/en/arj.1 2008-06-16 08:25:47.000000000 +0300 +@@ -21,6 +21,9 @@ arj \- Archiver for .arj files + .IR archive [ .arj ] + .RI [ "base directory" ] + .RI [ "!list name" | "path name" | "wildcard name" ] ++.SH DESCRIPTION ++\fIarj\fP is a compression and file archiving utility. It was invented by ++Robert K. Jung. \fIARJ\fP stands for \fIA\fPrchived by \fIR\fPobert \fIJ\fPung. + .SH COMMANDS + .TP + .B ac diff --git a/system/arj/patches/gnu_build_fix.patch b/system/arj/patches/gnu_build_fix.patch new file mode 100644 index 0000000000..e9ab1b6929 --- /dev/null +++ b/system/arj/patches/gnu_build_fix.patch @@ -0,0 +1,24 @@ +--- + gnu/configure.in | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +--- a/gnu/configure.in ++++ b/gnu/configure.in +@@ -49,16 +49,11 @@ OS_DEF="-D_UNIX" + DLL_CFLAGS="-fPIC" + + case $host_os in +-linux*) ++gnu*|linux*|k*bsd*) + AC_DEFINE(ELF_EXECUTABLES, 1, [Define if executables use ELF format]) + DYN_LIBS="-ldl" + LD_STRIP="gnu/stripgcc.lnk" + ;; +-k*bsd*) +- AC_DEFINE(ELF_EXECUTABLES) +- DYN_LIBS="-ldl" +- LD_STRIP="gnu/stripgcc.lnk" +- ;; + *bsd*) + AC_DEFINE(ELF_EXECUTABLES) + DLL_FLAGS="-shared -export-dynamic" diff --git a/system/arj/patches/gnu_build_flags.patch b/system/arj/patches/gnu_build_flags.patch new file mode 100644 index 0000000000..89a8ffe653 --- /dev/null +++ b/system/arj/patches/gnu_build_flags.patch @@ -0,0 +1,38 @@ +--- + gnu/makefile.in | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +--- a/gnu/makefile.in ++++ b/gnu/makefile.in +@@ -56,7 +56,7 @@ DEBUG_SM = r + ADD_LDFLAGS = -s @LD_STRIP@ + endif + +-ALL_CFLAGS += $(CFLAGS) ++ALL_CFLAGS += @CPPFLAGS@ $(CPPFLAGS) @CFLAGS@ $(CFLAGS) + + # Build Installation paths + +@@ -80,11 +80,11 @@ SFXSTUB_DIR = $(BASEDIR)/sfxstub + # Definitions for compiling submodules + + LDFLAGS = @LDFLAGS@ $(ADD_LDFLAGS) +-DLL_FLAGS = @DLL_FLAGS@ $(ADD_LDFLAGS) ++DLL_FLAGS = @DLL_FLAGS@ $(LDFLAGS) + DLL_CFLAGS = @DLL_CFLAGS@ + REQUIRES_DEF = @REQUIRES_DEF@ + +-COPT = -c -I@OUT_DIR@ -I$(BASEDIR) -I$(SRC_DIR) @CFLAGS@ $(ALL_CFLAGS) ++COPT = -c -I@OUT_DIR@ -I$(BASEDIR) -I$(SRC_DIR) $(ALL_CFLAGS) + STD_COPT = -DARJUTIL $(COPT) + ARJ_COPT = -DSFL=4 $(COPT) + ARJSFXV_COPT = -DSFL=3 $(COPT) +@@ -189,7 +190,7 @@ msg-headers: $(MSG_HEADERS) + mkdir -p $@ + + .deps/%.d: %.c .deps +- $(CC) $(CPPFLAGS) $(COPT) $< -MM > $@ ++ $(CC) $(COPT) $< -MM > $@ + + SOURCES = $(wildcard *.c) + DEPS = $(addprefix .deps/,$(SOURCES:.c=.d)) diff --git a/system/arj/patches/gnu_build_strip.patch b/system/arj/patches/gnu_build_strip.patch new file mode 100644 index 0000000000..8b543dcd28 --- /dev/null +++ b/system/arj/patches/gnu_build_strip.patch @@ -0,0 +1,96 @@ +--- + gnu/makefile.in | 18 ++++++++++++++++-- + 1 file changed, 16 insertions(+), 2 deletions(-) + +--- a/gnu/makefile.in ++++ b/gnu/makefile.in +@@ -50,10 +50,15 @@ endif + + ifdef DEBUG + DEBUG_SM = d +-ALL_CFLAGS += -g -DDEBUG ++ALL_CFLAGS += -DDEBUG + else + DEBUG_SM = r +-ADD_LDFLAGS = -s @LD_STRIP@ ++endif ++ ++ifdef BUILD_STRIP ++STRIP = strip --strip-unneeded ++else ++STRIP = : + endif + + ALL_CFLAGS += @CPPFLAGS@ $(CPPFLAGS) @CFLAGS@ $(CFLAGS) +@@ -269,6 +274,7 @@ ARJCRYPT_OBJS = $(patsubst %,$(ARJCRYPT_ + + $(ARJCRYPT_DIR)/arjcrypt$d: $(ARJCRYPT_OBJS) $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(DLL_FLAGS) -o $@ $(ARJCRYPT_OBJS) $(ARJCRYPT_DEF) $(LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc $@ + + $(BASEDIR)/nmsg_crp.c $(BASEDIR)/msg_crp.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) +@@ -283,6 +289,7 @@ SFXSTUB_OBJS = $(patsubst %,$(SFXSTUB_DI + + $(SFXSTUB_DIR)/sfxstub$x: $(SFXSTUB_OBJS) $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(SFXSTUB_OBJS) $(LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc$x $@ -sfx + + $(BASEDIR)/nmsg_stb.c $(BASEDIR)/msg_stb.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) +@@ -301,6 +308,7 @@ ARJSFXV_OBJS = $(patsubst %,$(ARJSFXV_DI + + $(ARJSFXV_DIR)/arjsfxv$x: $(ARJSFXV_OBJS) $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJSFXV_OBJS) $(LIBS) $(DYN_LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc$x $@ -sfx + + $(BASEDIR)/fmsg_sfv.c $(BASEDIR)/imsg_sfv.c $(BASEDIR)/nmsg_sfv.c \ +@@ -319,6 +327,7 @@ ARJSFX_OBJS = $(patsubst %,$(ARJSFX_DIR) + + $(ARJSFX_DIR)/arjsfx$x: $(ARJSFX_OBJS) $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJSFX_OBJS) $(LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc$x $@ -sfx + + $(BASEDIR)/fmsg_sfx.c $(BASEDIR)/imsg_sfx.c $(BASEDIR)/nmsg_sfx.c \ +@@ -335,6 +344,7 @@ ARJSFXJR_OBJS = $(patsubst %,$(ARJSFXJR_ + + $(ARJSFXJR_DIR)/arjsfxjr$x: $(ARJSFXJR_OBJS) $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJSFXJR_OBJS) $(LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc$x $@ -sfx + + $(BASEDIR)/fmsg_sfj.c $(BASEDIR)/imsg_sfj.c $(BASEDIR)/nmsg_sfj.c \ +@@ -364,6 +374,7 @@ $(ARJ_DIR)/arj$x: $(ARJ_OBJS) \ + $(ARJSFX_DIR)/arjsfx$x \ + $(ARJSFXJR_DIR)/arjsfxjr$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJ_OBJS) $(LIBS) $(DYN_LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/join $(ARJ_DIR)/arj$x $(ARJSFXJR_DIR)/arjsfxjr$x + $(TOOLS_DIR)/join $(ARJ_DIR)/arj$x $(ARJSFX_DIR)/arjsfx$x + $(TOOLS_DIR)/join $(ARJ_DIR)/arj$x $(ARJSFXV_DIR)/arjsfxv$x +@@ -390,6 +401,7 @@ REARJ_OBJS = $(patsubst %,$(REARJ_DIR)/% + $(REARJ_DIR)/rearj$x: $(REARJ_OBJS) \ + $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(REARJ_OBJS) $(LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc $@ + + $(BASEDIR)/fmsg_rej.c $(BASEDIR)/imsg_rej.c $(BASEDIR)/nmsg_rej.c \ +@@ -407,6 +419,7 @@ REGISTER_OBJS = $(patsubst %,$(REGISTER_ + $(REGISTER_DIR)/$(REGISTER)$x: $(REGISTER_OBJS) \ + $(TOOLS_DIR)/postproc$x + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(REGISTER_OBJS) $(LIBS) ++ $(STRIP) $@ + $(TOOLS_DIR)/postproc $@ -sfx + + $(BASEDIR)/fmsg_reg.c $(BASEDIR)/imsg_reg.c $(BASEDIR)/nmsg_reg.c \ +@@ -423,6 +436,7 @@ ARJDISP_OBJS = $(patsubst %,$(ARJDISP_DI + + $(ARJDISP_DIR)/arjdisp$x: $(ARJDISP_OBJS) + $(CC) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(ARJDISP_OBJS) $(LIBS) ++ $(STRIP) $@ + + $(BASEDIR)/fmsg_adi.c $(BASEDIR)/imsg_adi.c $(BASEDIR)/nmsg_adi.c \ + $(BASEDIR)/msg_adi.h: $(TOOLS_DIR)/msgbind$x $(RESFILE) diff --git a/system/arj/patches/hurd_no_fcntl_getlk.patch b/system/arj/patches/hurd_no_fcntl_getlk.patch new file mode 100644 index 0000000000..ff1113f831 --- /dev/null +++ b/system/arj/patches/hurd_no_fcntl_getlk.patch @@ -0,0 +1,16 @@ +--- + environ.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/environ.c ++++ b/environ.c +@@ -1775,7 +1775,8 @@ int file_test_access(char *name) + memset(&flk, 0, sizeof(flk)); + rc=fcntl(handle, F_GETLK, &flk); + close(handle); +- return(((rc==-1&&errno!=EINVAL)||(rc!=1&&flk.l_type==F_RDLCK))?-1:0); ++ return(((rc==-1&&errno!=EINVAL&&errno!=ENOSYS)|| ++ (rc!=1&&flk.l_type==F_RDLCK))?-1:0); + #endif + } + #endif diff --git a/system/arj/patches/security_format.patch b/system/arj/patches/security_format.patch new file mode 100644 index 0000000000..229303dcb5 --- /dev/null +++ b/system/arj/patches/security_format.patch @@ -0,0 +1,302 @@ +--- + arj_arcv.c | 12 ++++++------ + arj_user.c | 8 ++++---- + arjdisp.c | 58 ++++++++++++++++++++++++++++------------------------------ + arjsfx.c | 2 +- + fardata.c | 10 +++++----- + rearj.c | 2 +- + register.c | 2 +- + 7 files changed, 46 insertions(+), 48 deletions(-) + +--- a/fardata.c ++++ b/fardata.c +@@ -52,7 +52,7 @@ int error_proc(FMSG *errmsg, ...) + /* Check if the message could have a standard error code */ + if(errno!=0&&is_std_error(errmsg)) + { +- msg_cprintf(0, lf); ++ msg_cprintf(0, "\n"); + error_report(); + } + #endif +@@ -379,10 +379,10 @@ static void flush_cbuf(int ccode, char * + { + #if SFX_LEVEL>=ARJSFXV + fprintf(new_stdout, strform, n_text); +- fprintf(new_stdout, lf); ++ fprintf(new_stdout, "\n"); + #else + printf(strform, n_text); +- printf(lf); ++ printf("\n"); + #endif + } + else +@@ -393,13 +393,13 @@ static void flush_cbuf(int ccode, char * + #ifdef NEED_CRLF + scr_out("\r"); + #endif +- scr_out(lf); ++ scr_out("\n"); + } + if(!no_colors) + textcolor(color_table[ccode&H_COLORMASK].color); + #else + printf(strform, n_text); +- printf(lf); ++ printf("\n"); + #endif + n_text=t_text+1; + #if SFX_LEVEL>=ARJ +--- a/arj_user.c ++++ b/arj_user.c +@@ -1059,7 +1059,7 @@ static void finish_processing(int cmd) + if(recover_file(tmp_archive_name, nullstr, tmp_tmp_filename, protected, eof_pos)) + { + msg_cprintf(H_HL, M_CANT_FIND_DAMAGE, archive_name); +- printf(lf); ++ printf("\n"); + } + else + { +@@ -1294,7 +1294,7 @@ static void finish_processing(int cmd) + if(recover_file(archive_name, nullstr, nullstr, protected, eof_pos)) + { + msg_cprintf(H_HL, M_CANT_FIND_DAMAGE, archive_name); +- printf(lf); ++ printf("\n"); + } + else + { +@@ -1327,7 +1327,7 @@ static void finish_processing(int cmd) + msg_cprintf(0, M_CHAPTERS_ON); + else if(chapter_mode==CHAP_REMOVE) + msg_cprintf(0, M_CHAPTERS_OFF); +- msg_cprintf(0, strform, lf); ++ msg_cprintf(0, strform, "\n"); + } + if(cmd==ARJ_CMD_COPY&&protfile_option&&!arjprot_tail) + msg_cprintf(0, M_ARJPROT_DISABLED); +@@ -2303,7 +2303,7 @@ void process_archive() + timestamp_to_str(timetext, &ftime_stamp); + msg_cprintf(H_HL|H_NFMT, M_ARCHIVE_CREATED, timetext); + if(show_ansi_comments) +- printf(cmt_ptr); ++ fputs(cmt_ptr, stdout); + else + display_comment(cmt_ptr); + /* The sfx_setup() occurs here */ +--- a/arj_arcv.c ++++ b/arj_arcv.c +@@ -913,13 +913,13 @@ int supply_comment(char *cmtname, char * + else + { + strcat(tmp_comment, tmp_cmtline); +- strcat(tmp_comment, lf); ++ strcat(tmp_comment, "\n"); + } + } + else + { + strcat(tmp_comment, tmp_cmtline); +- strcat(tmp_comment, lf); ++ strcat(tmp_comment, "\n"); + } + } + } +@@ -1846,7 +1846,7 @@ int pack_file(int is_update, int is_repl + raw_eh=eh_lookup(eh, UXSPECIAL_ID)->raw; + uxspecial_stats(raw_eh, UXSTATS_SHORT); + } +- msg_cprintf(0, lf); ++ msg_cprintf(0, "\n"); + } + if(err_id==0&&user_wants_fail) + { +@@ -2523,9 +2523,9 @@ int unpack_validation() + { + msg_cprintf(0, (FMSG *)strform, misc_buf); + if(search_mode==SEARCH_DEFAULT) +- msg_cprintf(0, (FMSG *)lf); ++ msg_cprintf(0, "\n"); + if(search_mode==SEARCH_BRIEF) +- msg_cprintf(0, (FMSG *)cr); ++ msg_cprintf(0, "\r"); + } + for(pattern=0; pattern<SEARCH_STR_MAX; search_occurences[pattern++]=0); + reserve_size=0; +@@ -3652,7 +3652,7 @@ void archive_cleanup() + { + if(msg_fprintf(idxstream, M_TESTING, archive_name)<0) + error(M_DISK_FULL); +- if(fprintf(idxstream, lf)<0) ++ if(fprintf(idxstream, "\n")<0) + error(M_DISK_FULL); + } + cmd_verb=ARJ_CMD_TEST; +--- a/arjsfx.c ++++ b/arjsfx.c +@@ -214,7 +214,7 @@ static void final_cleanup(void) + freopen(dev_con, m_w, stdout); + #if SFX_LEVEL>=ARJSFXV + if(ferror(stdout)) +- msg_fprintf(stderr, M_DISK_FULL); ++ msg_fprintf(stderr, "Can't write file. Disk full?"); + if(debug_enabled&&strchr(debug_opt, 't')!=NULL) + { + ticks=get_ticks()-ticks; +--- a/rearj.c ++++ b/rearj.c +@@ -935,7 +935,7 @@ static int convert_archive(char *name) + msg_cprintf(H_HL|H_NFMT, M_OLD_SIZE, old_fsize); + msg_cprintf(H_HL|H_NFMT, M_NEW_SIZE, new_fsize); + msg_cprintf(H_HL|H_NFMT, M_SAVINGS_SIZE, gain); +- printf(lf); ++ printf("\n"); + total_old_fsize+=old_fsize; + total_new_fsize+=new_fsize; + total_files++; +--- a/register.c ++++ b/register.c +@@ -205,7 +205,7 @@ int main(int argc, char **argv) + char reg_source[200]; + int i; + +- printf(M_REGISTER_BANNER); ++ fputs(M_REGISTER_BANNER, stdout); + integrity_pattern[0]--; + build_crc32_table(); + if(argc!=2) +--- a/arjdisp.c ++++ b/arjdisp.c +@@ -20,8 +20,6 @@ static long bytes; + static long compsize; + static char cmd_verb; + static char msg_lf[]="\n"; +-char strform[]="%s"; /* Export it for scrnio.c, too +- (a byte saved is a byte gained) */ + + /* Pseudographical controls */ + +@@ -54,19 +52,19 @@ static void show_init_scrn() + textcolor(7); + clrscr(); + gotoxy(2, 2); +- scrprintf(win_top); ++ fputs(win_top, stdout); + for(i=3; i<24; i++) + { +- gotoxy(2, i); scrprintf(win_border); +- gotoxy(79, i); scrprintf(win_border); ++ gotoxy(2, i); fputs(win_border, stdout); ++ gotoxy(79, i); fputs(win_border, stdout); + } +- gotoxy(2, 24); scrprintf(win_bottom); ++ gotoxy(2, 24); fputs(win_bottom, stdout); + gotoxy(10, 5); +- scrprintf(M_ARJDISP_COPYRIGHT); ++ fputs(M_ARJDISP_COPYRIGHT, stdout); + gotoxy(10, 6); +- scrprintf(M_ARJDISP_DISTRIBUTION); ++ fputs(M_ARJDISP_DISTRIBUTION, stdout); + gotoxy(10, 7); +- scrprintf(M_ARJDISP_LICENSE); ++ fputs(M_ARJDISP_LICENSE, stdout); + gotoxy(16, 10); + scrprintf(M_PROCESSING_ARCHIVE, archive_name); + t=strtok(M_ARJDISP_INFO, msg_lf); +@@ -74,11 +72,11 @@ static void show_init_scrn() + while(t!=NULL&&i<=23) + { + gotoxy(10, i++); +- scrprintf(strform, t); ++ scrprintf("%s", t); + t=strtok(NULL, msg_lf); + } + gotoxy(16, 20); +- scrprintf(M_PRESS_ANY_KEY); ++ fputs(M_PRESS_ANY_KEY, stdout); + uni_getch(); + gotoxy(1, 24); + } +@@ -96,19 +94,19 @@ static void show_proc_scrn() + { + clrscr(); + gotoxy(2, 2); +- scrprintf(win_top); ++ fputs(win_top, stdout); + for(i=3; i<24; i++) + { +- gotoxy(2, i); scrprintf(win_border); +- gotoxy(79, i); scrprintf(win_border); ++ gotoxy(2, i); fputs(win_border, stdout); ++ gotoxy(79, i); fputs(win_border, stdout); + } +- gotoxy(2, 24); scrprintf(win_bottom); ++ gotoxy(2, 24); fputs(win_bottom, stdout); + gotoxy(10, 5); +- scrprintf(M_ARJDISP_COPYRIGHT); ++ fputs(M_ARJDISP_COPYRIGHT, stdout); + gotoxy(10, 6); +- scrprintf(M_ARJDISP_DISTRIBUTION); ++ fputs(M_ARJDISP_DISTRIBUTION, stdout); + gotoxy(10, 7); +- scrprintf(M_ARJDISP_LICENSE); ++ fputs(M_ARJDISP_LICENSE, stdout); + gotoxy(16, 10); + scrprintf(M_PROCESSING_ARCHIVE, archive_name); + gotoxy(16, 12); +@@ -132,13 +130,13 @@ static void show_proc_scrn() + break; + } + gotoxy(15, 14); +- scrprintf(ind_top); ++ fputs(ind_top, stdout); + gotoxy(15, 15); +- scrprintf(ind_middle); ++ fputs(ind_middle, stdout); + gotoxy(15, 16); +- scrprintf(ind_bottom); ++ fputs(ind_bottom, stdout); + gotoxy(16, 18); +- scrprintf(M_ARJDISP_CTR_START); ++ fputs(M_ARJDISP_CTR_START, stdout); + } + else + { +@@ -146,7 +144,7 @@ static void show_proc_scrn() + gotoxy(16, 15); + memset(progress, indo, i); + progress[i]='\0'; +- scrprintf(progress); ++ fputs(progress, stdout); + gotoxy(16, 18); + scrprintf(M_ARJDISP_CTR, calc_percentage(bytes, uncompsize)/10); + } +@@ -165,19 +163,19 @@ static void show_ending_scrn() + textcolor(7); + clrscr(); + gotoxy(2, 2); +- scrprintf(win_top); ++ fputs(win_top, stdout); + for(i=3; i<24; i++) + { +- gotoxy(2, i); scrprintf(win_border); +- gotoxy(79, i); scrprintf(win_border); ++ gotoxy(2, i); fputs(win_border, stdout); ++ gotoxy(79, i); fputs(win_border, stdout); + } +- gotoxy(2, 24); scrprintf(win_bottom); ++ gotoxy(2, 24); fputs(win_bottom, stdout); + gotoxy(10, 5); +- scrprintf(M_ARJDISP_COPYRIGHT); ++ fputs(M_ARJDISP_COPYRIGHT, stdout); + gotoxy(10, 6); +- scrprintf(M_ARJDISP_DISTRIBUTION); ++ fputs(M_ARJDISP_DISTRIBUTION, stdout); + gotoxy(10, 7); +- scrprintf(M_ARJDISP_LICENSE); ++ fputs(M_ARJDISP_LICENSE, stdout); + gotoxy(16, 10); + scrprintf(M_FINISHED_PROCESSING, archive_name); + gotoxy(1, 24); diff --git a/system/arj/patches/series b/system/arj/patches/series new file mode 100644 index 0000000000..23c1fc7e53 --- /dev/null +++ b/system/arj/patches/series @@ -0,0 +1,13 @@ +001_arches_align.patch +002_no_remove_static_const.patch +003_64_bit_clean.patch +004_parallel_build.patch +005_use_system_strnlen.patch +006_use_safe_strcpy.patch +hurd_no_fcntl_getlk.patch +security_format.patch +doc_refer_robert_k_jung.patch +gnu_build_fix.patch +gnu_build_flags.patch +gnu_build_strip.patch +SBo_integrity_64bit.patch diff --git a/system/arj/slack-desc b/system/arj/slack-desc new file mode 100644 index 0000000000..0d435c6e11 --- /dev/null +++ b/system/arj/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +arj: arj (free software implementation of arj archiver) +arj: +arj: A portable version of the ARJ archiver, available for a growing number +arj: of DOS-like and UNIX-like platforms on a variety of architectures. +arj: +arj: +arj: +arj: +arj: +arj: +arj: |