OSDN Git Service

* src/lharc.c (init_variable): do not use HEADER_LEVELx macros.
[lha/lha.git] / src / cproto.sh
index aaf8f1f..ba7a7f2 100644 (file)
@@ -1,6 +1,39 @@
 #!/bin/sh
+#
+# generate function prototypes `prototype.h'.
+#
 
-exec > prototypes.h.tmp
+trap "rm -f prototypes.h.tmp prototypes.h.bak" 0 1 2 3 15
+
+CPROTO_FLAGS='-m -d'
+CPPFLAGS='-DSTDC_HEADERS=1
+       -DHAVE_STRDUP=1
+       -DHAVE_MEMSET=1
+       -DHAVE_MEMMOVE=1
+       -DHAVE_STRCASECMP=1
+       -DHAVE_BASENAME=1
+       -DMULTIBYTE_FILENAME=1
+       -Dinterrupt=dummy__
+       -DNEED_INCREMENTAL_INDICATOR=1
+       -D__builtin_va_list=int
+       -D__extension__=
+'
+# `interrupt' is the reserved word for cproto.
+
+SOURCES='append.c bitio.c crcio.c dhuf.c extract.c header.c
+       huf.c larc.c lhadd.c lharc.c lhext.c
+       lhlist.c maketbl.c maketree.c patmatch.c
+       shuf.c slide.c util.c
+'
+
+test -f prototypes.h && mv -f prototypes.h prototypes.h.bak
+
+# below makes cproto regard `RETSIGTYPE' as the variable type.
+cat <<END >prototypes.h
+typedef void RETSIGTYPE;
+END
+
+exec 5>&1 > prototypes.h.tmp
 
 cat <<END
 /* This file was generated by cproto. */
@@ -12,27 +45,26 @@ cat <<END
 
 END
 
-cproto -m -d \
-       -D STDC_HEADERS=1 -D HAVE_STRDUP=0 -D HAVE_MEMSET=0 -D HAVE_MEMMOVE=0 \
-       -D MULTIBYTE_FILENAME=1 -D RETSIGTYPE=void \
-       append.c crcio.c dhuf.c extract.c header.c \
-       huf.c larc.c lhadd.c lharc.c lhext.c \
-       lhlist.c maketbl.c maketree.c patmatch.c \
-       shuf.c slide.c util.c
+cproto $CPROTO_FLAGS $CPPFLAGS $SOURCES |
+       grep -v -e '^int main ' | sed -e 's/dummy__/interrupt/'
 
 cat <<END
 
-/* lharc.c */
-RETSIGTYPE interrupt(int signo);
 /* util.c */
 #if !HAVE_MEMMOVE
 void *memmove P_((void *dst, const void *src, size_t cnt));
 #endif
 #if !HAVE_STRDUP
-char *strdup P_((char *buf));
+char *strdup P_((const char *buf));
 #endif
 #if !HAVE_MEMSET
-char *memset P_((char *s, int c, int n));
+char *memset P_((char *s, int c, size_t n));
+#endif
+#if !HAVE_STRCASECMP
+int strcasecmp P_((const char *p1, const char *p2));
+#endif
+#if !HAVE_BASENAME
+char *basename P_((char *s));
 #endif
 
 /* vsnprintf.c */
@@ -44,5 +76,9 @@ int snprintf P_((char *str, size_t n, char const *fmt, ...));
 #undef P_
 END
 
-exec >&-
-mv prototypes.h.tmp prototypes.h
+exec 1>&5
+if test -f prototypes.h.bak && cmp -s prototypes.h.tmp prototypes.h.bak; then
+  mv -f prototypes.h.bak prototypes.h
+else
+  mv -f prototypes.h.tmp prototypes.h
+fi