diff options
-rw-r--r-- | sv.c | 13 | ||||
-rw-r--r-- | win32/win32.c | 10 |
2 files changed, 13 insertions, 10 deletions
@@ -5139,6 +5139,13 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV /* SIZE */ switch (*q) { +#ifdef HAS_QUAD + case 'L': /* Ld */ + case 'q': /* qd */ + intsize = 'q'; + q++; + break; +#endif case 'l': #ifdef HAS_QUAD if (*(q + 1) == 'l') { /* lld */ @@ -5146,12 +5153,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV q += 2; break; } - case 'L': /* Ld */ - case 'q': /* qd */ - intsize = 'q'; - q++; - break; #endif + /* FALL THROUGH */ case 'h': /* FALL THROUGH */ case 'V': diff --git a/win32/win32.c b/win32/win32.c index 4f0d7f8cd6..1bfb6feaa0 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -1296,14 +1296,13 @@ win32_times(struct tms *timebuf) return 0; } -/* fix utime() so it works on directories in NT - * thanks to Jan Dubois <jan.dubois@ibm.net> - */ +/* fix utime() so it works on directories in NT */ static BOOL filetime_from_time(PFILETIME pFileTime, time_t Time) { - struct tm *pTM = gmtime(&Time); + struct tm *pTM = localtime(&Time); SYSTEMTIME SystemTime; + FILETIME LocalTime; if (pTM == NULL) return FALSE; @@ -1316,7 +1315,8 @@ filetime_from_time(PFILETIME pFileTime, time_t Time) SystemTime.wSecond = pTM->tm_sec; SystemTime.wMilliseconds = 0; - return SystemTimeToFileTime(&SystemTime, pFileTime); + return SystemTimeToFileTime(&SystemTime, &LocalTime) && + LocalFileTimeToFileTime(&LocalTime, pFileTime); } DllExport int |