From 2763b64b1486d6920ff3e51061e7914a0fdd0525 Mon Sep 17 00:00:00 2001 From: jacob Date: Sun, 27 Sep 2009 15:52:13 +0000 Subject: [PATCH] Quell more warnings and, perhaps, avoid alignment faults on 64-bit Windows. git-svn-id: svn://svn.tartarus.org/sgt/putty@8664 cda61777-01e9-0310-a592-d414129be87e --- windows/winsftp.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/windows/winsftp.c b/windows/winsftp.c index 4a64c195..c5555d53 100644 --- a/windows/winsftp.c +++ b/windows/winsftp.c @@ -69,10 +69,19 @@ char *psftp_getcwd(void) return ret; } -#define TIME_POSIX_TO_WIN(t, ft) (*(LONGLONG*)&(ft) = \ - ((LONGLONG) (t) + (LONGLONG) 11644473600) * (LONGLONG) 10000000) -#define TIME_WIN_TO_POSIX(ft, t) ((t) = (unsigned long) \ - ((*(LONGLONG*)&(ft)) / (LONGLONG) 10000000 - (LONGLONG) 11644473600)) +#define TIME_POSIX_TO_WIN(t, ft) do { \ + ULARGE_INTEGER uli; \ + uli.QuadPart = ((ULONGLONG)(t) + 11644473600ull) * 10000000ull; \ + (ft).dwLowDateTime = uli.LowPart; \ + (ft).dwHighDateTime = uli.HighPart; \ +} while(0) +#define TIME_WIN_TO_POSIX(ft, t) do { \ + ULARGE_INTEGER uli; \ + uli.LowPart = (ft).dwLowDateTime; \ + uli.HighPart = (ft).dwHighDateTime; \ + uli.QuadPart = uli.QuadPart / 10000000ull - 11644473600ull; \ + (t) = (unsigned long) uli.QuadPart; \ +} while(0) struct RFile { HANDLE h; -- 2.11.0