Correct large files / lseek size & type settings in Win32 canned configs.
Steve Hay [Fri, 22 Feb 2008 17:10:50 +0000 (17:10 +0000)]
Change 25208 switched off USE_LARGE_FILES in win32/config_H.* but left
LSEEKSIZE/Off_t_size and Off_t as 8 and __int64 (or long long)
respectively. Similarly change 25215 switched off uselargefiles in
win32/config.* but left lseeksize and lseektype as 8 and __int64 (or
long long) respectively. Change 25216 fixed the Borland settings in
win32/config.bc on the basis that Borland should always be using 4 and
long, but really all the other files should be using 4 and long for
their default values as well to match the default values of
USE_LARGE_FILES and uselargefiles. Having done that, we must then
reverse the logic for fiddling with these values in win32/config_sh.PL:
they are now changed to 8 and __int64 (or long long) if uselargefiles
*is* defined (except for Borland, which always wants 4 and long).

p4raw-id: //depot/perl@33347

win32/config.gc
win32/config.vc
win32/config.vc64
win32/config_H.bc
win32/config_H.gc
win32/config_H.vc
win32/config_H.vc64
win32/config_sh.PL

index 817482a..7a3802e 100644 (file)
@@ -756,8 +756,8 @@ longsize='4'
 lp=''
 lpr=''
 ls='dir'
-lseeksize='8'
-lseektype='long long'
+lseeksize='4'
+lseektype='long'
 mad='undef'
 madlyh=''
 madlyobj=''
index 12290a7..2c9a6ef 100644 (file)
@@ -756,8 +756,8 @@ longsize='4'
 lp=''
 lpr=''
 ls='dir'
-lseeksize='8'
-lseektype='__int64'
+lseeksize='4'
+lseektype='long'
 mad='undef'
 madlyh=''
 madlyobj=''
index c50ef7b..e9fd377 100644 (file)
@@ -756,8 +756,8 @@ longsize='4'
 lp=''
 lpr=''
 ls='dir'
-lseeksize='8'
-lseektype='__int64'
+lseeksize='4'
+lseektype='long'
 mad='undef'
 madlyh=''
 madlyobj=''
index 7520a55..7184387 100644 (file)
 /* Off_t_size:
  *     This symbol holds the number of bytes used by the Off_t.
  */
-#define Off_t __int64          /* <offset> type */
-#define LSEEKSIZE 8            /* <offset> size */
-#define Off_t_size 8   /* <offset> size */
+#define Off_t long             /* <offset> type */
+#define LSEEKSIZE 4            /* <offset> size */
+#define Off_t_size 4   /* <offset> size */
 
 /* PERL_MAD:
  *     This symbol, if defined, indicates that the Misc Attribution
index 0970b9a..c9af417 100644 (file)
 /* Off_t_size:
  *     This symbol holds the number of bytes used by the Off_t.
  */
-#ifndef _MSC_VER
-#   define Off_t long long             /* <offset> type */
-#else
-#   define Off_t __int64               /* <offset> type */
-#endif
-#define LSEEKSIZE 8            /* <offset> size */
-#define Off_t_size 8   /* <offset> size */
+#define Off_t long             /* <offset> type */
+#define LSEEKSIZE 4            /* <offset> size */
+#define Off_t_size 4   /* <offset> size */
 
 /* PERL_MAD:
  *     This symbol, if defined, indicates that the Misc Attribution
index 8bdb7de..490af3d 100644 (file)
 /* Off_t_size:
  *     This symbol holds the number of bytes used by the Off_t.
  */
-#ifndef __GNUC__
-#   define Off_t __int64               /* <offset> type */
-#else
-#   define Off_t long long             /* <offset> type */
-#endif
-#define LSEEKSIZE 8            /* <offset> size */
-#define Off_t_size 8   /* <offset> size */
+#define Off_t long             /* <offset> type */
+#define LSEEKSIZE 4            /* <offset> size */
+#define Off_t_size 4   /* <offset> size */
 
 /* PERL_MAD:
  *     This symbol, if defined, indicates that the Misc Attribution
index 7aaa926..3a827e5 100644 (file)
 /* Off_t_size:
  *     This symbol holds the number of bytes used by the Off_t.
  */
-#define Off_t __int64          /* <offset> type */
-#define LSEEKSIZE 8            /* <offset> size */
-#define Off_t_size 8   /* <offset> size */
+#define Off_t long             /* <offset> type */
+#define LSEEKSIZE 4            /* <offset> size */
+#define Off_t_size 4   /* <offset> size */
 
 /* PERL_MAD:
  *     This symbol, if defined, indicates that the Misc Attribution
index 67f9c20..99d6a22 100644 (file)
@@ -117,9 +117,18 @@ unless (defined $ENV{SYSTEMROOT}) { # SystemRoot has been introduced by WinNT
     $opt{d_link} = 'undef';
 }
 
-if ($opt{uselargefiles} ne 'define') {
-    $opt{lseeksize} = 4;
-    $opt{lseektype} = 'off_t';
+# change the lseeksize and lseektype from their canned default values (which
+# are set-up for a non-uselargefiles build) if we are building with
+# uselargefiles. don't do this for bcc32: the code contains special handling
+# for bcc32 and the lseeksize and lseektype should not be changed.
+if ($opt{uselargefiles} eq 'define' and $opt{cc} ne 'bcc32') {
+    $opt{lseeksize} = 8;
+    if ($opt{cc} eq 'cl') {
+       $opt{lseektype} = '__int64';
+    }
+    elsif ($opt{cc} eq 'gcc') {
+       $opt{lseektype} = 'long long';
+    }
 }
 
 if ($opt{useithreads} eq 'define' && $opt{ccflags} =~ /-DPERL_IMPLICIT_SYS\b/) {