From: Nicolas Thill Date: Thu, 8 Dec 2005 17:33:29 +0000 (+0000) Subject: add libgsm and gsm-utils packages X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=70882293ab6566314044c1be2b008ef5596a26b5;p=openwrt%2Fstaging%2Fwigyori.git add libgsm and gsm-utils packages SVN-Revision: 2601 --- diff --git a/openwrt/package/Config.in b/openwrt/package/Config.in index 9fc7170c67..10d1c02429 100644 --- a/openwrt/package/Config.in +++ b/openwrt/package/Config.in @@ -172,6 +172,7 @@ source "package/libgdbm/Config.in" source "package/gmp/Config.in" # libgmp source "package/gnutls/Config.in" ## libgnutls source "package/libgpg-error/Config.in" +source "package/gsm/Config.in" # libgsm source "package/libid3tag/Config.in" source "package/jpeg/Config.in" # libjpeg source "package/libtool/Config.in" # libltdl diff --git a/openwrt/package/Makefile b/openwrt/package/Makefile index 38e1752c63..a9df886d95 100644 --- a/openwrt/package/Makefile +++ b/openwrt/package/Makefile @@ -51,6 +51,7 @@ package-$(BR2_PACKAGE_GMEDIASERVER) += gmediaserver package-$(BR2_COMPILE_GMP) += gmp package-$(BR2_COMPILE_GNUTLS) += gnutls package-$(BR2_PACKAGE_GPSD) += gpsd +package-$(BR2_COMPILE_GSM) += gsm package-$(BR2_PACKAGE_HASERL) += haserl package-$(BR2_PACKAGE_HOSTAP_UTILS) += hostap-utils package-$(BR2_PACKAGE_HOSTAPD) += hostapd diff --git a/openwrt/package/gsm/Config.in b/openwrt/package/gsm/Config.in new file mode 100644 index 0000000000..f6d6587edc --- /dev/null +++ b/openwrt/package/gsm/Config.in @@ -0,0 +1,30 @@ +config BR2_COMPILE_GSM + tristate + default n + depends BR2_PACKAGE_LIBGSM + +config BR2_PACKAGE_LIBGSM + prompt "libgsm............................ A GSM 06.10 full-rate speech transcoding implementation (library)" + tristate + default m if CONFIG_DEVEL + select BR2_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 BR2_PACKAGE_GSM_UTILS + prompt "gsm-utils......................... A GSM 06.10 full-rate speech transcoding implementation (utilities)" + tristate + default m if CONFIG_DEVEL + depends BR2_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/openwrt/package/gsm/Makefile b/openwrt/package/gsm/Makefile new file mode 100644 index 0000000000..29490596b4 --- /dev/null +++ b/openwrt/package/gsm/Makefile @@ -0,0 +1,70 @@ +# $Id: Makefile 2567 2005-11-29 11:13:32Z nico $ + +include $(TOPDIR)/rules.mk + +PKG_NAME:=gsm +PKG_VERSION:=1.0.10 +PKG_RELEASE:=1 +PKG_MD5SUM:= + +PKG_SOURCE_URL:=ftp://ftp.cs.tu-berlin.de/pub/local/kbs/tubmik/gsm/ +PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_CAT:=zcat + +PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-1.0-pl10 +PKG_INSTALL_DIR:=$(PKG_BUILD_DIR)/ipkg-install + +include $(TOPDIR)/package/rules.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))) + +$(PKG_BUILD_DIR)/.configured: + touch $@ + +$(PKG_BUILD_DIR)/.built: + rm -rf $(PKG_INSTALL_DIR) + mkdir -p $(PKG_INSTALL_DIR) + $(MAKE) -C $(PKG_BUILD_DIR) \ + $(TARGET_CONFIGURE_OPTS) \ + LD="$(TARGET_CC)" \ + COPTS="$(TARGET_CFLAGS)" \ + INSTALL_ROOT="$(PKG_INSTALL_DIR)" \ + all install + touch $@ + +$(IPKG_LIBGSM): + install -d -m0755 $(IDIR_LIBGSM)/usr/lib + cp -fpR $(PKG_INSTALL_DIR)/usr/lib/libgsm.so.* $(IDIR_LIBGSM)/usr/lib/ + $(RSTRIP) $(IDIR_LIBGSM) + $(IPKG_BUILD) $(IDIR_LIBGSM) $(PACKAGE_DIR) + +$(IPKG_GSM_UTILS): + install -d -m0755 $(IDIR_GSM_UTILS)/usr/bin + cp -fpR $(PKG_INSTALL_DIR)/usr/bin/* $(IDIR_GSM_UTILS)/usr/bin/ + $(RSTRIP) $(IDIR_GSM_UTILS) + $(IPKG_BUILD) $(IDIR_GSM_UTILS) $(PACKAGE_DIR) + +$(STAGING_DIR)/usr/lib/libgsm.so: $(PKG_BUILD_DIR)/.built + mkdir -p $(STAGING_DIR)/usr/include + cp -fpR $(PKG_INSTALL_DIR)/usr/include/gsm.h $(STAGING_DIR)/usr/include/ + mkdir -p $(STAGING_DIR)/usr/lib + cp -fpR $(PKG_INSTALL_DIR)/usr/lib/libgsm.a $(STAGING_DIR)/usr/lib/ + cp -fpR $(PKG_INSTALL_DIR)/usr/lib/libgsm.so* $(STAGING_DIR)/usr/lib/ + touch $@ + +install-dev: $(STAGING_DIR)/usr/lib/libgsm.so + +uninstall-dev: + rm -rf \ + $(STAGING_DIR)/usr/include/gsm.h \ + $(STAGING_DIR)/usr/lib/libgsm.a \ + $(STAGING_DIR)/usr/lib/libgsm.so* \ + +compile-targets: install-dev +clean-targets: uninstall-dev + +mostlyclean: + -$(MAKE) -C $(PKG_BUILD_DIR) clean + rm -f $(PKG_BUILD_DIR)/.built + diff --git a/openwrt/package/gsm/ipkg/gsm-utils.control b/openwrt/package/gsm/ipkg/gsm-utils.control new file mode 100644 index 0000000000..b022f71544 --- /dev/null +++ b/openwrt/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/openwrt/package/gsm/ipkg/libgsm.control b/openwrt/package/gsm/ipkg/libgsm.control new file mode 100644 index 0000000000..922f696569 --- /dev/null +++ b/openwrt/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/openwrt/package/gsm/patches/01-debian-libsgm-1.0.10-13.patch b/openwrt/package/gsm/patches/01-debian-libsgm-1.0.10-13.patch new file mode 100644 index 0000000000..4e6e71cce6 --- /dev/null +++ b/openwrt/package/gsm/patches/01-debian-libsgm-1.0.10-13.patch @@ -0,0 +1,434 @@ +diff -ruN gsm-1.0.10-orig/Makefile gsm-1.0.10-1/Makefile +--- gsm-1.0.10-orig/Makefile 1996-07-02 16:36:06.000000000 +0200 ++++ gsm-1.0.10-1/Makefile 2005-04-08 18:47:52.000000000 +0200 +@@ -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. + +@@ -44,7 +46,8 @@ + # CCFLAGS = -c -O + + CC = gcc -ansi -pedantic +-CCFLAGS = -c -O2 -DNeedFunctionPrototypes=1 ++COPTS = -O2 ++CCFLAGS = -c $(COPTS) -DNeedFunctionPrototypes=1 + + LD = $(CC) + +@@ -78,10 +81,10 @@ + # 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 @@ + # 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 @@ + + # Flags + +-# DEBUG = -DNDEBUG ++DEBUG = -DNDEBUG + ######### Remove -DNDEBUG to enable assertions. + + CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \ +@@ -140,6 +143,7 @@ + # Targets + + LIBGSM = $(LIB)/libgsm.a ++LIBGSMSO= $(LIB)/libgsm.so + + TOAST = $(BIN)/toast + UNTOAST = $(BIN)/untoast +@@ -258,6 +262,9 @@ + + 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 @@ + + # 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 @@ + + # 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 @@ + # 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 +@@ -351,53 +363,66 @@ + 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 + +@@ -426,7 +451,9 @@ + + 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 -ruN gsm-1.0.10-orig/inc/config.h gsm-1.0.10-1/inc/config.h +--- gsm-1.0.10-orig/inc/config.h 1996-07-02 16:32:27.000000000 +0200 ++++ gsm-1.0.10-1/inc/config.h 2005-04-08 18:24:31.000000000 +0200 +@@ -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 -ruN gsm-1.0.10-orig/inc/gsm.h gsm-1.0.10-1/inc/gsm.h +--- gsm-1.0.10-orig/inc/gsm.h 1996-07-05 20:31:51.000000000 +0200 ++++ gsm-1.0.10-1/inc/gsm.h 2005-04-08 18:24:31.000000000 +0200 +@@ -54,6 +54,10 @@ + #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)); + +@@ -66,6 +70,10 @@ + 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 + + #endif /* GSM_H */ +diff -ruN gsm-1.0.10-orig/inc/toast.h gsm-1.0.10-1/inc/toast.h +--- gsm-1.0.10-orig/inc/toast.h 1996-07-02 16:32:29.000000000 +0200 ++++ gsm-1.0.10-1/inc/toast.h 2005-04-08 18:24:31.000000000 +0200 +@@ -16,11 +16,12 @@ + + #include + #include ++#include + #include + + #include +-#ifndef HAS_ERRNO_DECL +- extern int errno; ++#ifndef errno ++ extern int errno; + #endif + + #ifdef HAS_LIMITS_H +@@ -37,6 +38,10 @@ + # endif + #endif + ++#ifdef HAS_STDIO_H ++# include ++#endif ++ + #include "gsm.h" + + #ifndef S_ISREG +diff -ruN gsm-1.0.10-orig/src/code.c gsm-1.0.10-1/src/code.c +--- gsm-1.0.10-orig/src/code.c 1996-07-02 16:32:36.000000000 +0200 ++++ gsm-1.0.10-1/src/code.c 2005-04-08 18:24:31.000000000 +0200 +@@ -9,8 +9,8 @@ + #include "config.h" + + +-#ifdef HAS_STDLIB_H +-#include ++#ifdef HAS_STRING_H ++#include + #else + # include "proto.h" + extern char * memcpy P((char *, char *, int)); +diff -ruN gsm-1.0.10-orig/src/debug.c gsm-1.0.10-1/src/debug.c +--- gsm-1.0.10-orig/src/debug.c 1996-07-02 16:32:37.000000000 +0200 ++++ gsm-1.0.10-1/src/debug.c 2005-04-08 18:24:31.000000000 +0200 +@@ -49,7 +49,7 @@ + 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 @@ + 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 -ruN gsm-1.0.10-orig/src/toast.c gsm-1.0.10-1/src/toast.c +--- gsm-1.0.10-orig/src/toast.c 1996-07-02 16:32:55.000000000 +0200 ++++ gsm-1.0.10-1/src/toast.c 2005-04-08 18:24:31.000000000 +0200 +@@ -251,8 +251,8 @@ + { + 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 @@ + 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 @@ + 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 @@ + } + 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 @@ + + 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 P1((name), char * name) + { +- int step = 0; +- + out = (FILE *)0; + in = (FILE *)0; + +@@ -779,7 +777,6 @@ + case 'h': help(); exit(0); + + default: +- usage: + fprintf(stderr, + "Usage: %s [-fcpdhvuaslFC] [files...] (-h for help)\n", + progname);