This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Continue largefileness separation from quadness;
authorJarkko Hietaniemi <jhi@iki.fi>
Sat, 13 Nov 1999 16:26:13 +0000 (16:26 +0000)
committerJarkko Hietaniemi <jhi@iki.fi>
Sat, 13 Nov 1999 16:26:13 +0000 (16:26 +0000)
move nv-preserving test out of perl.h into Configure;
use HAS_SETVBUF in IO.

p4raw-id: //depot/metaconfig@4560

U/a_dvisory/quadtype.U
U/perl/d_fseeko.U
U/perl/d_ftello.U
U/perl/io64.U
U/perl/nvpresuv.U [new file with mode: 0644]

index d970b48..12355ff 100644 (file)
@@ -7,7 +7,7 @@
 ?RCS:
 ?MAKE:d_quad quadtype uquadtype quadkind: \
        longsize intsize d_longlong longlongsize uselonglong d_int64t \
-       Inhdr Setvar
+       Inhdr Setvar use64bits
 ?MAKE: -pick add $@ %<
 ?S:d_quad:
 ?S:    This variable, if defined, tells that there's a 64-bit integer type,
 ?C:    This symbol holds the type used for 64-bit integers.
 ?C:    It can be int, long, long long, int64_t etc...
 ?C:.
-?C:QUADKIND:
-?C:    This symbol, if defined, encodes the type of a quad:
-?C:    1 = int, 2 = long, 3 = long long, 4 = int64_t.
-?C:.
 ?C:Uquad_t:
 ?C:    This symbol holds the type used for unsigned 64-bit integers.
 ?C:    It can be unsigned int, unsigned long, unsigned long long,
@@ -54,6 +50,7 @@
 ?H:?%<:#   define QUAD_IS_INT64_T      4
 ?H:?%<:#endif
 ?H:.
+?T:verb
 ?LINT:set quadtype
 ?LINT:set uquadtype
 
@@ -114,7 +111,12 @@ case "$quadtype" in
        esac
        d_quad="$undef"
        ;;
-*)     echo "We could use '$quadtype' for 64-bit integers." >&4
+*)     if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
+           verb="will"
+       else
+           verb="could"
+       fi
+       echo "We $verb use '$quadtype' for 64-bit integers." >&4
        d_quad="$define"
        ;;
 esac
index acecdf7..795f6f6 100644 (file)
@@ -5,7 +5,7 @@
 ?RCS: You may distribute under the terms of either the GNU General Public
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
-?MAKE:d_fseeko: Inlibc
+?MAKE:d_fseeko: Inlibc longsize
 ?MAKE: -pick add $@ %<
 ?S:d_fseeko:
 ?S:    This variable conditionally defines the HAS_FSEEKO symbol, which
@@ -21,4 +21,7 @@
 : see if fseeko exists
 set fseeko d_fseeko
 eval $inlibc
+case "$longsize" in
+8) echo "(Your long is 64 bits, so in a pinch you could use fseek.)" ;;
+esac
 
index 6591680..8318d38 100644 (file)
@@ -5,7 +5,7 @@
 ?RCS: You may distribute under the terms of either the GNU General Public
 ?RCS: License or the Artistic License, as specified in the README file.
 ?RCS:
-?MAKE:d_ftello: Inlibc
+?MAKE:d_ftello: Inlibc longsize
 ?MAKE: -pick add $@ %<
 ?S:d_ftello:
 ?S:    This variable conditionally defines the HAS_FTELLO symbol, which
@@ -21,4 +21,7 @@
 : see if ftello exists
 set ftello d_ftello
 eval $inlibc
+case "$longsize" in
+8) echo "(Your long is 64 bits, so in a pinch you could use ftell.)" ;;
+esac
 
index 73031e1..6323f57 100644 (file)
@@ -42,7 +42,7 @@ else
        val="$undef"
        echo "No, it doesn't."
        case "$lseeksize" in
-       8) echo "(This is okay because your off_t is 64 bits wide.)" >&4 ;;
+       8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
        esac
 fi
 $rm -f try.* try
@@ -64,7 +64,7 @@ else
        val="$undef"
        echo "No, it doesn't."
        case "$fpossize" in
-       8) echo "(This is okay because your fpos_t is 64 bits wide.)" >&4 ;;
+       8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
        esac
 fi
 $rm -f try.* try
diff --git a/U/perl/nvpresuv.U b/U/perl/nvpresuv.U
new file mode 100644 (file)
index 0000000..6eee995
--- /dev/null
@@ -0,0 +1,60 @@
+?RCS: $Id$
+?RCS:
+?RCS: Copyright (c) 1999 Jarkko Hietaniemi
+?RCS:
+?RCS: You may distribute under the terms of either the GNU General Public
+?RCS: License or the Artistic License, as specified in the README file.
+?RCS:
+?MAKE:d_nv_preserves_uv: uvtype nvtype uvsize nvsize \
+       Compile echo cat rm exe_ext
+?MAKE: -pick add $@ %<
+?S:d_nv_preserves_uv:
+?S:    This variable conditionally defines the NV_PRESERVES_UV symbol, which
+?S:    indicates to an NV can preserve an UV.
+?S:.
+?C:NV_PRESERVES_UV:
+?C:    This symbol, if defined, indicates that an NV can preserve an UV.
+?C:.
+?H:#$d_nv_preserves_uv NV_PRESERVES_UV         /**/
+?H:.
+?T:yyy
+?F:!try
+?LINT:set d_nv_preserves_uv
+
+$echo "Checking whether your NV can preserve your UV..." >&4
+$cat >try.c <<EOCP
+#include <stdio.h>
+int main() {
+    printf("%s\n",
+           ($uvtype)($nvtype)($uvtype)~0 == ($uvtype)~0 ? "yes" : "no");
+    exit(0);
+}
+EOCP
+set try
+if eval $compile; then
+       yyy=`./try$exe_ext`
+       case "$yyy" in
+       'yes')  d_nv_preserves_uv="$define"
+               echo "Your NV can preserve your UV."
+               ;;
+       'no')   d_nv_preserves_uv="$undef"
+               echo "Your NV cannot preserve your UV."
+               ;;
+       '')     echo "(I can't execute the test program.)" >&4
+               ;;
+       esac
+else
+       echo "(I can't compile the test program.)" >&4
+fi
+case "$d_nv_preserves_uv" in
+'')    : this is a crude test, actually we would want to test
+       : LDBL_MANT_DIG, DBL_MANT_DIG, IV_DIG, NV_DIG first.
+       if test X"$nvsize" = X"$uvsize"; then
+               d_nv_preserves_uv="$undef"
+       else
+               d_nv_preserves_uv="$define"
+       fi
+esac
+
+$rm -f try.* try
+