This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Restore dist/U/* versions of several units
authorAaron Crane <arc@cpan.org>
Thu, 19 Apr 2018 14:41:02 +0000 (16:41 +0200)
committerAaron Crane <arc@cpan.org>
Thu, 19 Apr 2018 14:41:39 +0000 (16:41 +0200)
When using the "-X .metaconfig-exclusions.txt" option in an mconfig command,
the dist/U/* units aren't included, so we can allow them to sit happily
unused in that directory (thus reducing the size of our diff with upstream
dist/mcon/U).

This reverts the following commits:

  301e67c457a24b99e46dc3f4cf7c106669ef6157
  6952d89540352461dc892820dcec1aeb7dbc586c
  8f9faff3fbb4c83ae994b06233a5dfd26a215c8b

U/compline/d_vprintf.U
U/modified/i_varhdr.U [new file with mode: 0644]
U/modified/vaproto.U
dist/U/d_strchr.U [new file with mode: 0644]
dist/U/i_limits.U [new file with mode: 0644]
dist/U/i_varhdr.U [new file with mode: 0644]

index c61c171..023c77b 100644 (file)
@@ -13,7 +13,7 @@
 ?RCS: Baseline for dist 3.0 netwide release.
 ?RCS:
 ?MAKE:d_vprintf d_charvspr: Compile Guess cat Csym Setvar run rm_try \
-       i_stdlib i_unistd
+       i_stdlib i_unistd i_stdarg i_varargs
 ?MAKE: -pick add $@ %<
 ?S:d_vprintf:
 ?S:    This variable conditionally defines the HAS_VPRINTF symbol, which
@@ -48,11 +48,17 @@ if set vprintf val -f d_vprintf; eval $csym; $val; then
        echo 'vprintf() found.' >&4
        val="$define"
        $cat >try.c <<EOF
+#$i_stdarg I_STDARG  /* Only one of these can be defined by i_varhrd */
+#$i_varargs I_VARARGS
 
 #$i_stdlib I_STDLIB
 #$i_unistd I_UNISTD
 
-#include <stdarg.h>
+#ifdef I_STDARG
+#  include <stdarg.h>
+#else /* I_VARARGS */
+#  include <varargs.h>
+#endif
 
 #ifdef I_UNISTD
 #  include <unistd.h>
@@ -64,6 +70,7 @@ if set vprintf val -f d_vprintf; eval $csym; $val; then
 
 #include <stdio.h> /* vsprintf prototype */
 
+#ifdef I_STDARG
 void xxx(int n, ...)
 {
     va_list args;
@@ -73,6 +80,20 @@ void xxx(int n, ...)
 }
 int main() { xxx(1, "foo"); }
 
+#else /* I_VARARGS */
+
+xxx(va_alist)
+va_dcl
+{
+    va_list args;
+    char buf[10];
+    va_start(args);
+    exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
+}
+int main() { xxx("foo"); }
+
+#endif
+
 EOF
        set try
        if eval $compile_ok; then
diff --git a/U/modified/i_varhdr.U b/U/modified/i_varhdr.U
new file mode 100644 (file)
index 0000000..61aae35
--- /dev/null
@@ -0,0 +1,175 @@
+?RCS: $Id: i_varhdr.U 1 2006-08-24 12:32:52Z rmanfredi $
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic License,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic License; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: i_varhdr.U,v $
+?RCS: Revision 3.0.1.3  1997/02/28  15:54:42  ram
+?RCS: patch61: varargs script now starts with leading "startsh"
+?RCS:
+?RCS: Revision 3.0.1.2  1994/10/29  16:21:02  ram
+?RCS: patch36: added ?F: line for metalint file checking
+?RCS:
+?RCS: Revision 3.0.1.1  1994/05/13  15:26:05  ram
+?RCS: patch27: this unit now supersedes old i_stdarg.U and i_varargs.U
+?RCS: patch27: modified to avoid spurious Whoa warnings (ADO)
+?RCS:
+?RCS: Revision 3.0  1993/08/18  12:08:49  ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:i_stdarg i_varargs i_varhdr: cat +cc +ccflags rm test Setvar \
+       Findhdr startsh _o
+?MAKE: -pick add $@ %<
+?S:i_stdarg:
+?S:    This variable conditionally defines the I_STDARG symbol, which
+?S:    indicates to the C program that <stdarg.h> exists and should
+?S:    be included.
+?S:.
+?S:i_varargs:
+?S:    This variable conditionally defines I_VARARGS, which indicates
+?S:    to the C program that it should include <varargs.h>.
+?S:.
+?S:i_varhdr:
+?S:    Contains the name of the header to be included to get va_dcl definition.
+?S:    Typically one of varargs.h or stdarg.h.
+?S:.
+?C:I_STDARG:
+?C:    This symbol, if defined, indicates that <stdarg.h> exists and should
+?C:    be included.
+?C:.
+?C:I_VARARGS:
+?C:    This symbol, if defined, indicates to the C program that it should
+?C:    include <varargs.h>.
+?C:.
+?H:#$i_stdarg I_STDARG         /**/
+?H:#$i_varargs I_VARARGS       /**/
+?H:.
+?W:%<:va_dcl
+?F:!varargs
+?T:valstd
+?LINT:set i_stdarg i_varargs
+?X:
+?X: Don't use setvar because the varargs test below might override these.
+?X: Actually, the messages here are just informative. We don't wish to set
+?X: i_varargs or i_stdarg to their final value before knowing which of the
+?X: two we'll include.
+?X:
+: see if stdarg is available
+echo " "
+if $test `./findhdr stdarg.h`; then
+       echo "<stdarg.h> found." >&4
+       valstd="$define"
+else
+       echo "<stdarg.h> NOT found." >&4
+       valstd="$undef"
+fi
+
+: see if varargs is available
+echo " "
+if $test `./findhdr varargs.h`; then
+       echo "<varargs.h> found." >&4
+else
+       echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
+fi
+
+?X:
+?X: if you have stdarg.h, you need to support prototypes to actually use it;
+?X: but if stdarg.h exists and the compiler doesn't support prototypes (for some
+?X: bizarre reason), we'll fall back to varargs.h anyway so it's not so bad.
+?X:
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
+#ifdef I_STDARG
+#include <stdarg.h>
+#endif
+#ifdef I_VARARGS
+#include <varargs.h>
+#endif
+
+#ifdef I_STDARG
+int f(char *p, ...)
+#else
+int f(va_alist)
+va_dcl
+#endif
+{
+       va_list ap;
+#ifndef I_STDARG
+       char *p;
+#endif
+#ifdef I_STDARG
+       va_start(ap,p);
+#else
+       va_start(ap);
+       p = va_arg(ap, char *);
+#endif
+       va_end(ap);
+       return 0;
+}
+EOP
+$cat > varargs <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
+       echo "true"
+else
+       echo "false"
+fi
+$rm -f varargs$_o
+EOP
+chmod +x varargs
+
+: now check which varargs header should be included
+echo " "
+i_varhdr=''
+val=''
+case "$valstd" in
+"$define")
+       if `./varargs I_STDARG`; then
+               val='stdarg.h'
+       elif `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+*)
+       if `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+esac
+case "$val" in
+'')
+       echo " "
+       echo "*** WHOA THERE!!! ***" >&4
+       echo "    Your C compiler \"$cc\" doesn't seem to support stdarg or varargs!" >&4
+       case "$knowitall" in
+       '')
+       echo "    I'm giving up; maybe you can try again with a different compiler?" >&4
+               exit 1
+               ;;
+       esac
+echo "I could not find the definition for va_dcl... You have problems..." >&4
+       val="$undef"; set i_stdarg; eval $setvar
+       val="$undef"; set i_varargs; eval $setvar
+       ;;
+*)
+       set i_varhdr
+       eval $setvar
+       case "$i_varhdr" in
+       stdarg.h)
+               val="$define"; set i_stdarg; eval $setvar
+               val="$undef"; set i_varargs; eval $setvar
+               ;;
+       varargs.h)
+               val="$undef"; set i_stdarg; eval $setvar
+               val="$define"; set i_varargs; eval $setvar
+               ;;
+       esac
+       echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+esac
+$rm -f varargs*
+
index f2eb47f..9c16a4b 100644 (file)
@@ -17,7 +17,7 @@
 ?RCS: Revision 3.0  1993/08/18  12:09:59  ram
 ?RCS: Baseline for dist 3.0 netwide release.
 ?RCS:
-?MAKE:vaproto: prototype Setvar
+?MAKE:vaproto: prototype i_stdarg Setvar
 ?MAKE: -pick add $@ %<
 ?S:vaproto:
 ?S:    This variable conditionally defines CAN_VAPROTO on systems supporting
@@ -49,8 +49,8 @@
 ?LINT:set vaproto
 : see if prototypes support variable argument declarations
 echo " "
-case "$prototype" in
-$define)
+case "$prototype$i_stdarg" in
+$define$define)
        echo "It appears we'll be able to prototype varargs functions." >&4
        val="$define"
        ;;
diff --git a/dist/U/d_strchr.U b/dist/U/d_strchr.U
new file mode 100644 (file)
index 0000000..dd9bbd8
--- /dev/null
@@ -0,0 +1,95 @@
+?RCS: $Id: d_strchr.U 1 2006-08-24 12:32:52Z rmanfredi $
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic Licence; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: d_strchr.U,v $
+?RCS: Revision 3.0.1.2  1993/10/16  13:49:20  ram
+?RCS: patch12: added support for HAS_INDEX
+?RCS: patch12: added magic for index() and rindex()
+?RCS:
+?RCS: Revision 3.0.1.1  1993/09/13  16:05:26  ram
+?RCS: patch10: now only defines HAS_STRCHR, no macro remap of index (WAD)
+?RCS:
+?RCS: Revision 3.0  1993/08/18  12:07:32  ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:d_strchr d_index: contains strings Setvar Myread Oldconfig Csym
+?MAKE: -pick add $@ %<
+?S:d_strchr:
+?S:    This variable conditionally defines HAS_STRCHR if strchr() and
+?S:    strrchr() are available for string searching.
+?S:.
+?S:d_index:
+?S:    This variable conditionally defines HAS_INDEX if index() and
+?S:    rindex() are available for string searching.
+?S:.
+?C:HAS_STRCHR:
+?C:    This symbol is defined to indicate that the strchr()/strrchr()
+?C:    functions are available for string searching. If not, try the
+?C:    index()/rindex() pair.
+?C:.
+?C:HAS_INDEX:
+?C:    This symbol is defined to indicate that the index()/rindex()
+?C:    functions are available for string searching.
+?C:.
+?H:#$d_strchr HAS_STRCHR       /**/
+?H:#$d_index HAS_INDEX /**/
+?H:.
+?M:index: HAS_INDEX
+?M:#ifndef HAS_INDEX
+?M:#ifndef index
+?M:#define index strchr
+?M:#endif
+?M:#endif
+?M:.
+?M:rindex: HAS_INDEX
+?M:#ifndef HAS_INDEX
+?M:#ifndef rindex
+?M:#define rindex strrchr
+?M:#endif
+?M:#endif
+?M:.
+?T:vali
+?LINT:set d_strchr d_index
+: index or strchr
+echo " "
+if set index val -f; eval $csym; $val; then
+       if set strchr val -f d_strchr; eval $csym; $val; then
+               if $contains strchr "$strings" >/dev/null 2>&1 ; then
+?X: has index, strchr, and strchr in string header
+                       val="$define"
+                       vali="$undef"
+                       echo "strchr() found." >&4
+               else
+?X: has index, strchr, and no strchr in string header
+                       val="$undef"
+                       vali="$define"
+                       echo "index() found." >&4
+               fi
+       else
+?X: has only index, no strchr, string header is a moot point
+               val="$undef"
+               vali="$define"
+               echo "index() found." >&4
+       fi
+else
+       if set strchr val -f d_strchr; eval $csym; $val; then
+               val="$define"
+               vali="$undef"
+               echo "strchr() found." >&4
+       else
+               echo "No index() or strchr() found!" >&4
+               val="$undef"
+               vali="$undef"
+       fi
+fi
+set d_strchr; eval $setvar
+val="$vali"
+set d_index; eval $setvar
+
diff --git a/dist/U/i_limits.U b/dist/U/i_limits.U
new file mode 100644 (file)
index 0000000..4fad0ce
--- /dev/null
@@ -0,0 +1,33 @@
+?RCS: $Id: i_limits.U 1 2006-08-24 12:32:52Z rmanfredi $
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic Licence,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic Licence; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: i_limits.U,v $
+?RCS: Revision 3.0  1993/08/18  12:08:20  ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:i_limits: Inhdr
+?MAKE: -pick add $@ %<
+?S:i_limits:
+?S:    This variable conditionally defines the I_LIMITS symbol, and indicates
+?S:    whether a C program may include <limits.h> to get symbols like WORD_BIT
+?S:    and friends.
+?S:.
+?C:I_LIMITS:
+?C:    This symbol, if defined, indicates to the C program that it should
+?C:    include <limits.h> to get definition of symbols like WORD_BIT or
+?C:    LONG_MAX, i.e. machine dependant limitations.
+?C:.
+?H:#$i_limits I_LIMITS         /**/
+?H:.
+?LINT:set i_limits
+: see if this is a limits.h system
+set limits.h i_limits
+eval $inhdr
+
diff --git a/dist/U/i_varhdr.U b/dist/U/i_varhdr.U
new file mode 100644 (file)
index 0000000..9659e40
--- /dev/null
@@ -0,0 +1,164 @@
+?RCS: $Id$
+?RCS:
+?RCS: Copyright (c) 1991-1997, 2004-2006, Raphael Manfredi
+?RCS:
+?RCS: You may redistribute only under the terms of the Artistic License,
+?RCS: as specified in the README file that comes with the distribution.
+?RCS: You may reuse parts of this distribution only within the terms of
+?RCS: that same Artistic License; a copy of which may be found at the root
+?RCS: of the source tree for dist 4.0.
+?RCS:
+?RCS: $Log: i_varhdr.U,v $
+?RCS: Revision 3.0.1.3  1997/02/28  15:54:42  ram
+?RCS: patch61: varargs script now starts with leading "startsh"
+?RCS:
+?RCS: Revision 3.0.1.2  1994/10/29  16:21:02  ram
+?RCS: patch36: added ?F: line for metalint file checking
+?RCS:
+?RCS: Revision 3.0.1.1  1994/05/13  15:26:05  ram
+?RCS: patch27: this unit now supersedes old i_stdarg.U and i_varargs.U
+?RCS: patch27: modified to avoid spurious Whoa warnings (ADO)
+?RCS:
+?RCS: Revision 3.0  1993/08/18  12:08:49  ram
+?RCS: Baseline for dist 3.0 netwide release.
+?RCS:
+?MAKE:i_stdarg i_varargs i_varhdr: cat +cc +ccflags rm test Setvar \
+       Findhdr Warn startsh _o
+?MAKE: -pick add $@ %<
+?S:i_stdarg:
+?S:    This variable conditionally defines the I_STDARG symbol, which
+?S:    indicates to the C program that <stdarg.h> exists and should
+?S:    be included.
+?S:.
+?S:i_varargs:
+?S:    This variable conditionally defines I_VARARGS, which indicates
+?S:    to the C program that it should include <varargs.h>.
+?S:.
+?S:i_varhdr:
+?S:    Contains the name of the header to be included to get va_dcl definition.
+?S:    Typically one of varargs.h or stdarg.h.
+?S:.
+?C:I_STDARG:
+?C:    This symbol, if defined, indicates that <stdarg.h> exists and should
+?C:    be included.
+?C:.
+?C:I_VARARGS:
+?C:    This symbol, if defined, indicates to the C program that it should
+?C:    include <varargs.h>.
+?C:.
+?H:#$i_stdarg I_STDARG         /**/
+?H:#$i_varargs I_VARARGS       /**/
+?H:.
+?W:%<:va_dcl
+?F:!varargs
+?T:valstd
+?LINT:set i_stdarg i_varargs
+?X:
+?X: Don't use setvar because the varags test below might override these.
+?X: Actually, the messages here are just informative. We don't wish to set
+?X: i_varargs or i_stdarg to their final value before knowing which of the
+?X: two we'll include.
+?X:
+: see if stdarg is available
+echo " "
+if $test `./findhdr stdarg.h`; then
+       echo "<stdarg.h> found." >&4
+       valstd="$define"
+else
+       echo "<stdarg.h> NOT found." >&4
+       valstd="$undef"
+fi
+
+: see if varags is available
+echo " "
+if $test `./findhdr varargs.h`; then
+       echo "<varargs.h> found." >&4
+else
+       echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
+fi
+
+?X:
+?X: if you have stdarg.h, you need to support prototypes to actually use it;
+?X: but if stdarg.h exists and the compiler doesn't support prototypes (for some
+?X: bizarre reason), we'll fall back to varargs.h anyway so it's not so bad.
+?X:
+: set up the varargs testing programs
+$cat > varargs.c <<EOP
+#ifdef I_STDARG
+#include <stdarg.h>
+#endif
+#ifdef I_VARARGS
+#include <varargs.h>
+#endif
+
+#ifdef I_STDARG
+int f(char *p, ...)
+#else
+int f(va_alist)
+va_dcl
+#endif
+{
+       va_list ap;
+#ifndef I_STDARG
+       char *p;
+#endif
+#ifdef I_STDARG
+       va_start(ap,p);
+#else
+       va_start(ap);
+       p = va_arg(ap, char *);
+#endif
+       va_end(ap);
+}
+EOP
+$cat > varargs <<EOP
+$startsh
+if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
+       echo "true"
+else
+       echo "false"
+fi
+$rm -f varargs$_o
+EOP
+chmod +x varargs
+
+: now check which varargs header should be included
+echo " "
+i_varhdr=''
+case "$valstd" in
+"$define")
+       if `./varargs I_STDARG`; then
+               val='stdarg.h'
+       elif `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+*)
+       if `./varargs I_VARARGS`; then
+               val='varargs.h'
+       fi
+       ;;
+esac
+case "$val" in
+'')
+       ./warn "I could not find the definition for va_dcl... You have problems..."
+       val="$undef"; set i_stdarg; eval $setvar
+       val="$undef"; set i_varargs; eval $setvar
+       ;;
+*)
+       set i_varhdr
+       eval $setvar
+       case "$i_varhdr" in
+       stdarg.h)
+               val="$define"; set i_stdarg; eval $setvar
+               val="$undef"; set i_varargs; eval $setvar
+               ;;
+       varargs.h)
+               val="$undef"; set i_stdarg; eval $setvar
+               val="$define"; set i_varargs; eval $setvar
+               ;;
+       esac
+       echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
+esac
+$rm -f varargs*
+