summaryrefslogtreecommitdiff
path: root/package/gsm
diff options
context:
space:
mode:
authorwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
committerwbx <wbx@hydrogenium.(none)>2009-05-17 14:41:34 +0200
commit219a6dab8995aad9ac4860cc1a84d6f3509a03a4 (patch)
treeb9c0f3c43aebba2fcfef777592d0add39f2072f4 /package/gsm
Initial import
Diffstat (limited to 'package/gsm')
-rw-r--r--package/gsm/Config.in30
-rw-r--r--package/gsm/Makefile31
-rw-r--r--package/gsm/ipkg/gsm-utils.control4
-rw-r--r--package/gsm/ipkg/libgsm.control4
-rw-r--r--package/gsm/patches/patch-Makefile244
-rw-r--r--package/gsm/patches/patch-inc_config_h42
-rw-r--r--package/gsm/patches/patch-inc_gsm_h25
-rw-r--r--package/gsm/patches/patch-inc_toast_h29
-rw-r--r--package/gsm/patches/patch-src_code_c14
-rw-r--r--package/gsm/patches/patch-src_debug_c29
-rw-r--r--package/gsm/patches/patch-src_toast_c69
11 files changed, 521 insertions, 0 deletions
diff --git a/package/gsm/Config.in b/package/gsm/Config.in
new file mode 100644
index 000000000..77bf91626
--- /dev/null
+++ b/package/gsm/Config.in
@@ -0,0 +1,30 @@
+config ADK_COMPILE_GSM
+ tristate
+ default n
+ depends ADK_PACKAGE_LIBGSM
+
+config ADK_PACKAGE_LIBGSM
+ prompt "libgsm............................ A GSM 06.10 full-rate speech transcoding implementation (library)"
+ tristate
+ default n
+ select ADK_COMPILE_GSM
+ help
+ An implementation of the European GSM 06.10 provisional standard
+ for full-rate speech transcoding, prI-ETS 300 036, which uses
+ RPE/LTP (residual pulse excitation/long term prediction) coding
+ at 13 kbit/s.
+
+ ftp://ftp.cs.tu-berlin.de/pub/local/kbs/tubmik/gsm/
+
+config ADK_PACKAGE_GSM_UTILS
+ prompt "gsm-utils....................... A GSM 06.10 full-rate speech transcoding implementation (utilities)"
+ tristate
+ default n
+ depends ADK_PACKAGE_LIBGSM
+ help
+ An implementation of the European GSM 06.10 provisional standard
+ for full-rate speech transcoding, prI-ETS 300 036, which uses
+ RPE/LTP (residual pulse excitation/long term prediction) coding
+ at 13 kbit/s.
+
+ ftp://ftp.cs.tu-berlin.de/pub/local/kbs/tubmik/gsm/
diff --git a/package/gsm/Makefile b/package/gsm/Makefile
new file mode 100644
index 000000000..27dad9eb1
--- /dev/null
+++ b/package/gsm/Makefile
@@ -0,0 +1,31 @@
+# $Id$
+#-
+# This file is part of the OpenADK project. OpenADK is copyrighted
+# material, please see the LICENCE file in the top-level directory.
+
+include ${TOPDIR}/rules.mk
+
+PKG_NAME:= gsm
+PKG_VERSION:= 1.0.10
+PKG_RELEASE:= 1
+PKG_MD5SUM:= 4b148480f82e96d274248e13880ec873
+MASTER_SITES:= http://www-rn.informatik.uni-bremen.de/software/gsm/
+WRKDIST= ${WRKDIR}/${PKG_NAME}-1.0-pl10
+
+include ${TOPDIR}/mk/package.mk
+
+$(eval $(call PKG_template,LIBGSM,libgsm,${PKG_VERSION}-${PKG_RELEASE},${ARCH}))
+$(eval $(call PKG_template,GSM_UTILS,gsm-utils,${PKG_VERSION}-${PKG_RELEASE},${ARCH}))
+
+XAKE_FLAGS+= COPTS="${TARGET_CFLAGS}" \
+ INSTALL_ROOT="${WRKINST}"
+BUILD_STYLE= auto
+INSTALL_STYLE= auto
+
+post-install:
+ ${INSTALL_DIR} ${IDIR_LIBGSM}/usr/lib
+ ${CP} ${WRKINST}/usr/lib/libgsm.so.1.0.10 ${IDIR_LIBGSM}/usr/lib/
+ ${INSTALL_DIR} ${IDIR_GSM_UTILS}/usr/bin
+ ${CP} ${WRKINST}/usr/bin/toast ${IDIR_GSM_UTILS}/usr/bin/
+
+include ${TOPDIR}/mk/pkg-bottom.mk
diff --git a/package/gsm/ipkg/gsm-utils.control b/package/gsm/ipkg/gsm-utils.control
new file mode 100644
index 000000000..b022f7154
--- /dev/null
+++ b/package/gsm/ipkg/gsm-utils.control
@@ -0,0 +1,4 @@
+Package: gsm-utils
+Priority: optional
+Section: admin
+Description: A GSM 06.10 full-rate speech transcoding implementation (utilities)
diff --git a/package/gsm/ipkg/libgsm.control b/package/gsm/ipkg/libgsm.control
new file mode 100644
index 000000000..922f69656
--- /dev/null
+++ b/package/gsm/ipkg/libgsm.control
@@ -0,0 +1,4 @@
+Package: libgsm
+Priority: optional
+Section: libs
+Description: A GSM 06.10 full-rate speech transcoding implementation (library)
diff --git a/package/gsm/patches/patch-Makefile b/package/gsm/patches/patch-Makefile
new file mode 100644
index 000000000..e4ece74fd
--- /dev/null
+++ b/package/gsm/patches/patch-Makefile
@@ -0,0 +1,244 @@
+$Id$
+--- gsm-1.0-pl10.orig/Makefile Tue Jul 2 16:36:06 1996
++++ gsm-1.0-pl10/Makefile Sat Jan 20 13:23:30 2007
+@@ -7,11 +7,13 @@
+ SASR = -DSASR
+ ######### Define SASR if >> is a signed arithmetic shift (-1 >> 1 == -1)
+
+-MULHACK = -DUSE_FLOAT_MUL
++#MULHACK = -DUSE_FLOAT_MUL
++MULHACK =
+ ######### Define this if your host multiplies floats faster than integers,
+ ######### e.g. on a SPARCstation.
+
+-FAST = -DFAST
++#FAST = -DFAST
++FAST =
+ ######### Define together with USE_FLOAT_MUL to enable the GSM library's
+ ######### approximation option for incorrect, but good-enough results.
+
+@@ -43,8 +45,9 @@ WAV49 =
+ # CC = /usr/lang/acc
+ # CCFLAGS = -c -O
+
+-CC = gcc -ansi -pedantic
+-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1
++CC ?= gcc -ansi -pedantic
++COPTS ?= -O2
++CCFLAGS = -c $(COPTS) -DNeedFunctionPrototypes=1
+
+ LD = $(CC)
+
+@@ -78,10 +81,10 @@ INSTALL_ROOT =
+ # Leave GSM_INSTALL_ROOT empty to not install the GSM library outside of
+ # this directory.
+
+-GSM_INSTALL_ROOT = $(INSTALL_ROOT)
++GSM_INSTALL_ROOT = $(INSTALL_ROOT)/usr
+ GSM_INSTALL_LIB = $(GSM_INSTALL_ROOT)/lib
+-GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/inc
+-GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/man/man3
++GSM_INSTALL_INC = $(GSM_INSTALL_ROOT)/include
++GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/share/man/man3
+
+
+ # Where do you want to install the toast binaries and their manpage?
+@@ -89,14 +92,14 @@ GSM_INSTALL_MAN = $(GSM_INSTALL_ROOT)/ma
+ # Leave TOAST_INSTALL_ROOT empty to not install the toast binaries outside
+ # of this directory.
+
+-TOAST_INSTALL_ROOT = $(INSTALL_ROOT)
++TOAST_INSTALL_ROOT = $(INSTALL_ROOT)/usr
+ TOAST_INSTALL_BIN = $(TOAST_INSTALL_ROOT)/bin
+-TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/man/man1
++TOAST_INSTALL_MAN = $(TOAST_INSTALL_ROOT)/share/man/man1
+
+ # Other tools
+
+ SHELL = /bin/sh
+-LN = ln
++LN = ln -s
+ BASENAME = basename
+ AR = ar
+ ARFLAGS = cr
+@@ -126,7 +129,7 @@ INC = $(ROOT)/inc
+
+ # Flags
+
+-# DEBUG = -DNDEBUG
++DEBUG = -DNDEBUG
+ ######### Remove -DNDEBUG to enable assertions.
+
+ CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \
+@@ -140,6 +143,7 @@ LFLAGS = $(LDFLAGS) $(LDINC)
+ # Targets
+
+ LIBGSM = $(LIB)/libgsm.a
++LIBGSMSO= $(LIB)/libgsm.so
+
+ TOAST = $(BIN)/toast
+ UNTOAST = $(BIN)/untoast
+@@ -258,6 +262,9 @@ STUFF = ChangeLog \
+
+ GSM_INSTALL_TARGETS = \
+ $(GSM_INSTALL_LIB)/libgsm.a \
++ $(GSM_INSTALL_LIB)/libgsm.so \
++ $(GSM_INSTALL_LIB)/libgsm.so.1 \
++ $(GSM_INSTALL_LIB)/libgsm.so.1.0.10 \
+ $(GSM_INSTALL_INC)/gsm.h \
+ $(GSM_INSTALL_MAN)/gsm.3 \
+ $(GSM_INSTALL_MAN)/gsm_explode.3 \
+@@ -279,7 +286,7 @@ TOAST_INSTALL_TARGETS = \
+
+ # Target rules
+
+-all: $(LIBGSM) $(TOAST) $(TCAT) $(UNTOAST)
++all: $(LIBGSM) $(LIBGSMSO) $(TOAST) $(TCAT) $(UNTOAST)
+ @-echo $(ROOT): Done.
+
+ tst: $(TST)/lin2cod $(TST)/cod2lin $(TOAST) $(TST)/test-result
+@@ -299,6 +306,11 @@ install: toastinstall gsminstall
+
+ # The basic API: libgsm
+
++$(LIBGSMSO): $(LIB) $(GSM_OBJECTS)
++ $(LD) -o $@.1.0.10 -shared -Xlinker -soname -Xlinker libgsm.so.1 $(GSM_OBJECTS) -lc
++ ln -fs libgsm.so.1.0.10 lib/libgsm.so.1
++ ln -fs libgsm.so.1.0.10 lib/libgsm.so
++
+ $(LIBGSM): $(LIB) $(GSM_OBJECTS)
+ -rm $(RMFLAGS) $(LIBGSM)
+ $(AR) $(ARFLAGS) $(LIBGSM) $(GSM_OBJECTS)
+@@ -308,15 +320,15 @@ $(LIBGSM): $(LIB) $(GSM_OBJECTS)
+ # Toast, Untoast and Tcat -- the compress-like frontends to gsm.
+
+ $(TOAST): $(BIN) $(TOAST_OBJECTS) $(LIBGSM)
+- $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSM) $(LDLIB)
++ $(LD) $(LFLAGS) -o $(TOAST) $(TOAST_OBJECTS) $(LIBGSMSO) $(LDLIB)
+
+ $(UNTOAST): $(BIN) $(TOAST)
+ -rm $(RMFLAGS) $(UNTOAST)
+- $(LN) $(TOAST) $(UNTOAST)
++ $(LN) toast $(UNTOAST)
+
+ $(TCAT): $(BIN) $(TOAST)
+ -rm $(RMFLAGS) $(TCAT)
+- $(LN) $(TOAST) $(TCAT)
++ $(LN) toast $(TCAT)
+
+
+ # The local bin and lib directories
+@@ -332,12 +344,12 @@ $(LIB):
+
+ gsminstall:
+ -if [ x"$(GSM_INSTALL_ROOT)" != x ] ; then \
+- make $(GSM_INSTALL_TARGETS) ; \
++ $(MAKE) $(GSM_INSTALL_TARGETS) ; \
+ fi
+
+ toastinstall:
+ -if [ x"$(TOAST_INSTALL_ROOT)" != x ]; then \
+- make $(TOAST_INSTALL_TARGETS); \
++ $(MAKE) $(TOAST_INSTALL_TARGETS); \
+ fi
+
+ gsmuninstall:
+@@ -351,54 +363,67 @@ toastuninstall:
+ fi
+
+ $(TOAST_INSTALL_BIN)/toast: $(TOAST)
+- -rm $@
+- cp $(TOAST) $@
++ mkdir -p $(TOAST_INSTALL_BIN)
++ cp -f $(TOAST) $@
+ chmod 755 $@
+
+ $(TOAST_INSTALL_BIN)/untoast: $(TOAST_INSTALL_BIN)/toast
+- -rm $@
+- ln $? $@
++ mkdir -p $(TOAST_INSTALL_BIN)
++ ln -sf $? $@
+
+ $(TOAST_INSTALL_BIN)/tcat: $(TOAST_INSTALL_BIN)/toast
+- -rm $@
+- ln $? $@
++ mkdir -p $(TOAST_INSTALL_BIN)
++ ln -sf $? $@
+
+ $(TOAST_INSTALL_MAN)/toast.1: $(MAN)/toast.1
+- -rm $@
+- cp $? $@
++ mkdir -p $(TOAST_INSTALL_MAN)
++ cp -f $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm.3: $(MAN)/gsm.3
+- -rm $@
+- cp $? $@
++ mkdir -p $(GSM_INSTALL_MAN)
++ cp -f $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm_option.3: $(MAN)/gsm_option.3
+- -rm $@
+- cp $? $@
++ mkdir -p $(GSM_INSTALL_MAN)
++ cp -f $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm_explode.3: $(MAN)/gsm_explode.3
+- -rm $@
+- cp $? $@
++ mkdir -p $(GSM_INSTALL_MAN)
++ cp -f $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_MAN)/gsm_print.3: $(MAN)/gsm_print.3
+- -rm $@
+- cp $? $@
++ mkdir -p $(GSM_INSTALL_MAN)
++ cp -f $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_INC)/gsm.h: $(INC)/gsm.h
+- -rm $@
+- cp $? $@
++ mkdir -p $(GSM_INSTALL_INC)
++ cp -f $? $@
+ chmod 444 $@
+
+ $(GSM_INSTALL_LIB)/libgsm.a: $(LIBGSM)
+- -rm $@
+- cp $? $@
++ mkdir -p $(GSM_INSTALL_LIB)
++ cp -f $? $@
+ chmod 444 $@
+
++$(GSM_INSTALL_LIB)/libgsm.so: $(LIBGSMSO)
++ mkdir -p $(GSM_INSTALL_LIB)
++ cp -f $? $@
+
++$(GSM_INSTALL_LIB)/libgsm.so.1: $(LIBGSMSO)
++ mkdir -p $(GSM_INSTALL_LIB)
++ cp -f $? $@
++
++$(GSM_INSTALL_LIB)/libgsm.so.1.0.10: $(LIBGSMSO)
++ mkdir -p $(GSM_INSTALL_LIB)
++ cp -f $? $@
++ chmod 755 $@
++
++
+ # Distribution
+
+ dist: gsm-1.0.tar.Z
+@@ -426,7 +451,9 @@ semi-clean:
+
+ clean: semi-clean
+ -rm $(RMFLAGS) $(LIBGSM) $(ADDTST)/add \
+- $(TOAST) $(TCAT) $(UNTOAST) \
++ $(LIBGSMSO) $(LIB)/libgsm.so.1.0.10 \
++ $(LIB)libgsm.so.1 \
++ $(TOAST) $(TCAT) $(UNTOAST) \
+ $(ROOT)/gsm-1.0.tar.Z
+
+
diff --git a/package/gsm/patches/patch-inc_config_h b/package/gsm/patches/patch-inc_config_h
new file mode 100644
index 000000000..3d4bec8b1
--- /dev/null
+++ b/package/gsm/patches/patch-inc_config_h
@@ -0,0 +1,42 @@
+$Id$
+--- gsm-1.0-pl10.orig/inc/config.h Tue Jul 2 16:32:27 1996
++++ gsm-1.0-pl10/inc/config.h Sat Jan 20 13:06:50 2007
+@@ -9,29 +9,29 @@
+ #ifndef CONFIG_H
+ #define CONFIG_H
+
+-/*efine SIGHANDLER_T int /* signal handlers are void */
+-/*efine HAS_SYSV_SIGNAL 1 /* sigs not blocked/reset? */
++/*efine SIGHANDLER_T int -* signal handlers are void */
++/*efine HAS_SYSV_SIGNAL 1 -* sigs not blocked/reset? */
+
+ #define HAS_STDLIB_H 1 /* /usr/include/stdlib.h */
+-/*efine HAS_LIMITS_H 1 /* /usr/include/limits.h */
++#define HAS_STDIO_H 1 /* /usr/include/stdio.h */
++/*efine HAS_LIMITS_H 1 -* /usr/include/limits.h */
+ #define HAS_FCNTL_H 1 /* /usr/include/fcntl.h */
+-/*efine HAS_ERRNO_DECL 1 /* errno.h declares errno */
+
+ #define HAS_FSTAT 1 /* fstat syscall */
+ #define HAS_FCHMOD 1 /* fchmod syscall */
+ #define HAS_CHMOD 1 /* chmod syscall */
+ #define HAS_FCHOWN 1 /* fchown syscall */
+ #define HAS_CHOWN 1 /* chown syscall */
+-/*efine HAS__FSETMODE 1 /* _fsetmode -- set file mode */
++/*efine HAS__FSETMODE 1 -* _fsetmode -- set file mode */
+
+ #define HAS_STRING_H 1 /* /usr/include/string.h */
+-/*efine HAS_STRINGS_H 1 /* /usr/include/strings.h */
++/*efine HAS_STRINGS_H 1 -* /usr/include/strings.h */
+
+ #define HAS_UNISTD_H 1 /* /usr/include/unistd.h */
+ #define HAS_UTIME 1 /* POSIX utime(path, times) */
+-/*efine HAS_UTIMES 1 /* use utimes() syscall instead */
++/*efine HAS_UTIMES 1 -* use utimes() syscall instead */
+ #define HAS_UTIME_H 1 /* UTIME header file */
+-/*efine HAS_UTIMBUF 1 /* struct utimbuf */
+-/*efine HAS_UTIMEUSEC 1 /* microseconds in utimbuf? */
++/*efine HAS_UTIMBUF 1 -* struct utimbuf */
++/*efine HAS_UTIMEUSEC 1 -* microseconds in utimbuf? */
+
+ #endif /* CONFIG_H */
diff --git a/package/gsm/patches/patch-inc_gsm_h b/package/gsm/patches/patch-inc_gsm_h
new file mode 100644
index 000000000..8e7ec33b7
--- /dev/null
+++ b/package/gsm/patches/patch-inc_gsm_h
@@ -0,0 +1,25 @@
+$Id$
+--- gsm-1.0-pl10.orig/inc/gsm.h Fri Jul 5 20:31:51 1996
++++ gsm-1.0-pl10/inc/gsm.h Sat Jan 20 13:06:50 2007
+@@ -54,6 +54,10 @@ typedef gsm_byte gsm_frame[33]; /* 33
+ #define GSM_OPT_FRAME_INDEX 5
+ #define GSM_OPT_FRAME_CHAIN 6
+
++#ifdef __cplusplus
++extern "C" {
++#endif
++
+ extern gsm gsm_create GSM_P((void));
+ extern void gsm_destroy GSM_P((gsm));
+
+@@ -65,6 +69,10 @@ extern int gsm_decode GSM_P((gsm, gsm_
+
+ extern int gsm_explode GSM_P((gsm, gsm_byte *, gsm_signal *));
+ extern void gsm_implode GSM_P((gsm, gsm_signal *, gsm_byte *));
++
++#ifdef __cplusplus
++}
++#endif
+
+ #undef GSM_P
+
diff --git a/package/gsm/patches/patch-inc_toast_h b/package/gsm/patches/patch-inc_toast_h
new file mode 100644
index 000000000..9772f077c
--- /dev/null
+++ b/package/gsm/patches/patch-inc_toast_h
@@ -0,0 +1,29 @@
+$Id$
+--- gsm-1.0-pl10.orig/inc/toast.h Tue Jul 2 16:32:29 1996
++++ gsm-1.0-pl10/inc/toast.h Sat Jan 20 13:06:50 2007
+@@ -16,11 +16,12 @@
+
+ #include <stdio.h>
+ #include <ctype.h>
++#include <pthread.h>
+ #include <signal.h>
+
+ #include <errno.h>
+-#ifndef HAS_ERRNO_DECL
+- extern int errno;
++#ifndef errno
++ extern int errno;
+ #endif
+
+ #ifdef HAS_LIMITS_H
+@@ -35,6 +36,10 @@
+ # ifdef HAS_UTIME_H
+ # include <utime.h>
+ # endif
++#endif
++
++#ifdef HAS_STDIO_H
++# include <stdio.h>
+ #endif
+
+ #include "gsm.h"
diff --git a/package/gsm/patches/patch-src_code_c b/package/gsm/patches/patch-src_code_c
new file mode 100644
index 000000000..6d81a946b
--- /dev/null
+++ b/package/gsm/patches/patch-src_code_c
@@ -0,0 +1,14 @@
+$Id$
+--- gsm-1.0-pl10.orig/src/code.c Tue Jul 2 16:32:36 1996
++++ gsm-1.0-pl10/src/code.c Sat Jan 20 13:06:50 2007
+@@ -9,8 +9,8 @@
+ #include "config.h"
+
+
+-#ifdef HAS_STDLIB_H
+-#include <stdlib.h>
++#ifdef HAS_STRING_H
++#include <string.h>
+ #else
+ # include "proto.h"
+ extern char * memcpy P((char *, char *, int));
diff --git a/package/gsm/patches/patch-src_debug_c b/package/gsm/patches/patch-src_debug_c
new file mode 100644
index 000000000..74335b938
--- /dev/null
+++ b/package/gsm/patches/patch-src_debug_c
@@ -0,0 +1,29 @@
+$Id$
+--- gsm-1.0-pl10.orig/src/debug.c Tue Jul 2 16:32:37 1996
++++ gsm-1.0-pl10/src/debug.c Sat Jan 20 13:06:50 2007
+@@ -49,7 +49,7 @@ void gsm_debug_longwords P4( (name, from
+ fprintf( stderr, "%s [%d .. %d]: ", name, from, to );
+ while (from <= to) {
+
+- fprintf(stderr, "%d ", ptr[ from ] );
++ fprintf(stderr, "%ld ", ptr[ from ] );
+ from++;
+ if (nprinted++ >= 7) {
+ nprinted = 0;
+@@ -63,14 +63,14 @@ void gsm_debug_longword P2( (name, valu
+ char * name,
+ longword value )
+ {
+- fprintf(stderr, "%s: %d\n", name, (long)value );
++ fprintf(stderr, "%s: %ld\n", name, (long)value );
+ }
+
+ void gsm_debug_word P2( (name, value),
+ char * name,
+ word value )
+ {
+- fprintf(stderr, "%s: %d\n", name, (long)value);
++ fprintf(stderr, "%s: %ld\n", name, (long)value);
+ }
+
+ #endif
diff --git a/package/gsm/patches/patch-src_toast_c b/package/gsm/patches/patch-src_toast_c
new file mode 100644
index 000000000..e06463992
--- /dev/null
+++ b/package/gsm/patches/patch-src_toast_c
@@ -0,0 +1,69 @@
+$Id$
+--- gsm-1.0-pl10.orig/src/toast.c Tue Jul 2 16:32:55 1996
++++ gsm-1.0-pl10/src/toast.c Sat Jan 20 13:06:50 2007
+@@ -251,8 +251,8 @@ static char * emalloc P1((len), size_t l
+ {
+ char * s;
+ if (!(s = malloc(len))) {
+- fprintf(stderr, "%s: failed to malloc %d bytes -- abort\n",
+- progname, len);
++ fprintf(stderr, "%s: failed to malloc %ld bytes -- abort\n",
++ progname, (long) len);
+ onintr();
+ exit(1);
+ }
+@@ -270,7 +270,7 @@ static char* normalname P3((name, want,
+ maxlen = strlen(name) + 1 + strlen(want) + strlen(cut);
+ p = strcpy(emalloc(maxlen), name);
+
+- if (s = suffix(p, cut)) strcpy(s, want);
++ if ((s = suffix(p, cut))) strcpy(s, want);
+ else if (*want && !suffix(p, want)) strcat(p, want);
+
+ return p;
+@@ -386,7 +386,7 @@ static void update_times P0()
+ ut[0] = instat.st_atime;
+ ut[1] = instat.st_mtime;
+
+- (void) utime(outname, ut);
++ (void) utime(outname, (struct utimbuf *)ut);
+
+ #endif /* UTIMBUF */
+ }
+@@ -416,7 +416,7 @@ static int okay_as_input P3((name,f,st),
+ }
+ if (st->st_nlink > 1 && !f_cat && !f_precious) {
+ fprintf(stderr,
+- "%s: \"%s\" has %s other link%s -- unchanged.\n",
++ "%s: \"%s\" has %d other link%s -- unchanged.\n",
+ progname,name,st->st_nlink - 1,"s" + (st->st_nlink<=2));
+ return 0;
+ }
+@@ -585,8 +585,8 @@ static int process_decode P0()
+
+ if (cc != sizeof(s)) {
+ if (cc >= 0) fprintf(stderr,
+- "%s: incomplete frame (%d byte%s missing) from %s\n",
+- progname, sizeof(s) - cc,
++ "%s: incomplete frame (%ld byte%s missing) from %s\n",
++ progname, (long) sizeof(s) - cc,
+ "s" + (sizeof(s) - cc == 1),
+ inname ? inname : "stdin" );
+ gsm_destroy(r);
+@@ -624,8 +624,6 @@ static int process_decode P0()
+
+ static int process P1((name), char * name)
+ {
+- int step = 0;
+-
+ out = (FILE *)0;
+ in = (FILE *)0;
+
+@@ -779,7 +777,6 @@ int main P2((ac, av), int ac, char **av)
+ case 'h': help(); exit(0);
+
+ default:
+- usage:
+ fprintf(stderr,
+ "Usage: %s [-fcpdhvuaslFC] [files...] (-h for help)\n",
+ progname);