This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Rely on C89 prototypes
authorAaron Crane <arc@cpan.org>
Thu, 12 Oct 2017 16:50:15 +0000 (18:50 +0200)
committerAaron Crane <arc@cpan.org>
Sat, 21 Oct 2017 15:52:27 +0000 (16:52 +0100)
The Configure changes here were generated using a version of metaconfig
that modifies the prototype.U and Protochk.U units to assume that C89
prototypes work.

16 files changed:
Configure
NetWare/config_H.wc
Porting/Glossary
Porting/config_H
config_h.SH
ext/SDBM_File/pair.c
ext/SDBM_File/pair.h
ext/SDBM_File/sdbm.c
ext/SDBM_File/sdbm.h
perl.h
plan9/config.plan9
plan9/config_h.sample
uconfig.h
win32/config_H.ce
win32/config_H.gc
win32/config_H.vc

index 5c7853b..919220b 100755 (executable)
--- a/Configure
+++ b/Configure
@@ -1242,7 +1242,6 @@ prefixexp=''
 installprivlib=''
 privlib=''
 privlibexp=''
-prototype=''
 ptrsize=''
 d_PRIXU64=''
 d_PRId64=''
@@ -10742,28 +10741,6 @@ eval $inlibc
 set asctime64 d_asctime64
 eval $inlibc
 
-: Cruising for prototypes
-echo " "
-echo "Checking out function prototypes..." >&4
-$cat >prototype.c <<EOCP
-#$i_stdlib I_STDLIB
-#ifdef I_STDLIB
-#include <stdlib.h>
-#endif
-int main(int argc, char *argv[]) {
-       exit(0);}
-EOCP
-if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
-       echo "Your C compiler appears to support function prototypes."
-       val="$define"
-else
-       echo "Your C compiler doesn't seem to understand function prototypes."
-       val="$undef"
-fi
-set prototype
-eval $setvar
-$rm -f prototype*
-
 : see if POSIX threads are available
 set pthread.h i_pthread
 eval $inhdr
@@ -10774,7 +10751,6 @@ $startsh
 cc="$cc"
 optimize="$optimize"
 ccflags="$ccflags"
-prototype="$prototype"
 define="$define"
 rm_try="$rm_try"
 usethreads=$usethreads
@@ -10802,13 +10778,8 @@ while test $# -ge 2; do
     fi
     shift 2
 done
-test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
 cat >> try.c <<'EOCP'
-#ifdef CAN_PROTOTYPE
 #define        _(args) args
-#else
-#define        _(args) ()
-#endif
 EOCP
 echo "$foo" >> try.c
 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
@@ -25056,7 +25027,6 @@ prefixexp='$prefixexp'
 privlib='$privlib'
 privlibexp='$privlibexp'
 procselfexe='$procselfexe'
-prototype='$prototype'
 ptrsize='$ptrsize'
 quadkind='$quadkind'
 quadtype='$quadtype'
index eddece5..a25166b 100644 (file)
  */
 /*#define I_VFORK      /**/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-#define        CAN_PROTOTYPE   /**/
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 6d964ae..b462f20 100644 (file)
@@ -4712,10 +4712,6 @@ procselfexe (d_procselfexe.U):
        of the symbolic link pointing to the absolute pathname of
        the executing program.
 
-prototype (prototype.U):
-       This variable holds the eventual value of CAN_PROTOTYPE, which
-       indicates the C compiler can handle function prototypes.
-
 ptrsize (ptrsize.U):
        This variable contains the value of the PTRSIZE symbol, which
        indicates to the C program how many bytes there are in a pointer.
index 6e11af8..564848b 100644 (file)
  */
 /*#define MYMALLOC                     / **/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#define        CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 9f79f4d..812fd02 100755 (executable)
@@ -2323,24 +2323,6 @@ sed <<!GROK!THIS! >$CONFIG_H -e 's!^#undef\(.*/\)\*!/\*#define\1 \*!' -e 's!^#un
  */
 #$d_mymalloc MYMALLOC                  /**/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#$prototype    CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 5bbd873..2e4d807 100644 (file)
@@ -22,7 +22,7 @@
 /* 
  * forward 
  */
-static int seepair proto((char *, int, const char *, int));
+static int seepair(char *, int, const char *, int);
 
 /*
  * page format:
index b6944ed..7191556 100644 (file)
@@ -9,14 +9,14 @@
 #define putpair sdbm__putpair
 #define splpage sdbm__splpage
 
-extern int fitpair proto((char *, int));
-extern void  putpair proto((char *, datum, datum));
-extern datum   getpair proto((char *, datum));
-extern int  exipair proto((char *, datum));
-extern int  delpair proto((char *, datum));
-extern int  chkpage proto((char *));
-extern datum getnkey proto((char *, int));
-extern void splpage proto((char *, char *, long));
+extern int fitpair(char *, int);
+extern void  putpair(char *, datum, datum);
+extern datum   getpair(char *, datum);
+extern int  exipair(char *, datum);
+extern int  delpair(char *, datum);
+extern int  chkpage(char *);
+extern datum getnkey(char *, int);
+extern void splpage(char *, char *, long);
 #ifdef SEEDUPS
-extern int duppair proto((char *, datum));
+extern int duppair(char *, datum);
 #endif
index cf5dc75..e055f08 100644 (file)
@@ -41,8 +41,8 @@
 extern "C" {
 #endif
 
-extern Malloc_t malloc proto((MEM_SIZE));
-extern Free_t free proto((Malloc_t));
+extern Malloc_t malloc(MEM_SIZE);
+extern Free_t free(Malloc_t);
 
 #ifdef __cplusplus
 }
@@ -53,11 +53,11 @@ const datum nullitem = {0, 0};
 /*
  * forward
  */
-static int getdbit proto((DBM *, long));
-static int setdbit proto((DBM *, long));
-static int getpage proto((DBM *, long));
-static datum getnext proto((DBM *));
-static int makroom proto((DBM *, long, int));
+static int getdbit(DBM *, long);
+static int setdbit(DBM *, long);
+static int getpage(DBM *, long);
+static datum getnext(DBM *);
+static int makroom(DBM *, long, int);
 
 /*
  * useful macros
index 1c1151a..d5511da 100644 (file)
@@ -53,12 +53,6 @@ typedef struct {
 
 extern const datum nullitem;
 
-#if defined(__STDC__) || defined(__cplusplus) || defined(CAN_PROTOTYPE)
-#define proto(p) p
-#else
-#define proto(p) ()
-#endif
-
 /*
  * flags to sdbm_store
  */
@@ -68,20 +62,20 @@ extern const datum nullitem;
 /*
  * ndbm interface
  */
-extern DBM *sdbm_open proto((char *, int, int));
-extern void sdbm_close proto((DBM *));
-extern datum sdbm_fetch proto((DBM *, datum));
-extern int sdbm_delete proto((DBM *, datum));
-extern int sdbm_store proto((DBM *, datum, datum, int));
-extern datum sdbm_firstkey proto((DBM *));
-extern datum sdbm_nextkey proto((DBM *));
-extern int sdbm_exists proto((DBM *, datum));
+extern DBM *sdbm_open(char *, int, int);
+extern void sdbm_close(DBM *);
+extern datum sdbm_fetch(DBM *, datum);
+extern int sdbm_delete(DBM *, datum);
+extern int sdbm_store(DBM *, datum, datum, int);
+extern datum sdbm_firstkey(DBM *);
+extern datum sdbm_nextkey(DBM *);
+extern int sdbm_exists(DBM *, datum);
 
 /*
  * other
  */
-extern DBM *sdbm_prep proto((char *, char *, int, int));
-extern long sdbm_hash proto((const char *, int));
+extern DBM *sdbm_prep(char *, char *, int, int);
+extern long sdbm_hash(const char *, int);
 
 #ifndef SDBM_ONLY
 #define dbm_open sdbm_open
@@ -179,10 +173,10 @@ extern long sdbm_hash proto((const char *, int));
 extern "C" {
 #endif
 
-Malloc_t Perl_malloc proto((MEM_SIZE nbytes));
-Malloc_t Perl_calloc proto((MEM_SIZE elements, MEM_SIZE size));
-Malloc_t Perl_realloc proto((Malloc_t where, MEM_SIZE nbytes));
-Free_t   Perl_mfree proto((Malloc_t where));
+Malloc_t Perl_malloc(MEM_SIZE nbytes);
+Malloc_t Perl_calloc(MEM_SIZE elements, MEM_SIZE size);
+Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes);
+Free_t   Perl_mfree(Malloc_t where);
 
 #ifdef __cplusplus
 }
diff --git a/perl.h b/perl.h
index 1790fd5..d3ed6ae 100644 (file)
--- a/perl.h
+++ b/perl.h
 # define DONT_DECLARE_STD 1
 #endif
 
-/* This exists only for back-compat. */
+/* These exist only for back-compat with XS modules. */
 #ifndef PERL_CORE
 #define VOL volatile
+#define CAN_PROTOTYPE
 #endif
 
 /* By compiling a perl with -DNO_TAINT_SUPPORT or -DSILENT_NO_TAINT_SUPPORT,
index 770ebc8..1be10e8 100644 (file)
 #define I_STDARG               /**/
 /*#define I_VARARGS    / **/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#define        CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 01791a7..cd44e99 100644 (file)
 #define I_STDARG               /**/
 /*#define I_VARARGS    / **/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#define        CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index ae678dd..df2e69d 100644 (file)
--- a/uconfig.h
+++ b/uconfig.h
  */
 /*#define MYMALLOC                     / **/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-/*#define      CAN_PROTOTYPE   / **/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
 #endif
 
 /* Generated from:
- * 3690e5bc441c5e9339d85fcb354568da9527990929543d72c73cf8ed150832fc config_h.SH
+ * 6c763f32474aeeec2af78bc744f36dcb8ec9c9cad13e888b624596dc4f0efb08 config_h.SH
  * 51a3d2a1b0cd9329ef5b65d93eca04f6f0769a86b8c16db672fda17ea1308fd3 uconfig.sh
  * ex: set ro: */
index b732361..a484265 100644 (file)
 #define I_STDARG               /**/
 /*#define I_VARARGS    /**/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#define        CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 702bdb5..757295c 100644 (file)
  */
 /*#define MYMALLOC                     / **/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#define        CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be
index 74f4947..38df7a6 100644 (file)
  */
 /*#define MYMALLOC                     / **/
 
-/* CAN_PROTOTYPE:
- *     If defined, this macro indicates that the C compiler can handle
- *     function prototypes.
- */
-/* _:
- *     This macro is used to declare function parameters for folks who want
- *     to make declarations with prototypes using a different style than
- *     the above macros.  Use double parentheses.  For example:
- *
- *             int main _((int argc, char *argv[]));
- */
-#define        CAN_PROTOTYPE   /**/
-#ifdef CAN_PROTOTYPE
-#define        _(args) args
-#else
-#define        _(args) ()
-#endif
-
 /* SH_PATH:
  *     This symbol contains the full pathname to the shell used on this
  *     on this system to execute Bourne shell scripts.  Usually, this will be