summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2002-04-21 01:55:35 +0000
committerGurusamy Sarathy <gsar@cpan.org>2002-04-21 01:55:35 +0000
commitc623ac675720b3145d48cc2ea9474a0f3e0cbbca (patch)
tree72f97c16f706a1538dd9a5726323e59d251c8c53 /sv.c
parent6d1c0808b641926567cd16e07679f427c5fedc61 (diff)
downloadperl-c623ac675720b3145d48cc2ea9474a0f3e0cbbca.tar.gz
Windows 64-bit support:
* support for building it in the regular makefiles * large files support via the _*i64() functions (this should be portable to the 32-bit universe too, but quite untested and and binary-incompatible, therefore not enabled there) * three additional test failures in addition to the t/end.t one (see README.win32) * sprintf() on Windows gets %I{32,64,}[xoud] format that parallel the ones available from the CRT (needed because Perl uses the UVxf macros in both sprintf() *and* in sv_catpvf() et al.) * add a few 64-bit notes to README.win32 The following general problems were also fixed: * s/struct stat/Stat_t/g * Data::Dumper had some naughty 'long' typecasts * Errno_pm.PL didn't work safe when winsock.h was not in the same directory as errno.h * various tell/seek things were incorrectly prototyped * squelch ugly looking noise when running tests * Embed.t wasn't linking in all the libraries * perl57.dll is now perl58.dll (anticipating 5.8.0-RC1) * re-enable all the disabled warnings (additional fixes may be needed for the warnings uncovered by this) p4raw-id: //depot/perl@16033
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/sv.c b/sv.c
index eafb35a928..40b7b877f9 100644
--- a/sv.c
+++ b/sv.c
@@ -8054,6 +8054,25 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
/* SIZE */
switch (*q) {
+#ifdef WIN32
+ case 'I': /* Ix, I32x, and I64x */
+# ifdef WIN64
+ if (q[1] == '6' && q[2] == '4') {
+ q += 3;
+ intsize = 'q';
+ break;
+ }
+# endif
+ if (q[1] == '3' && q[2] == '2') {
+ q += 3;
+ break;
+ }
+# ifdef WIN64
+ intsize = 'q';
+# endif
+ q++;
+ break;
+#endif
#if defined(HAS_QUAD) || (defined(HAS_LONG_DOUBLE) && defined(USE_LONG_DOUBLE))
case 'L': /* Ld */
/* FALL THROUGH */