X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;ds=sidebyside;f=windows%2Fwinsftp.c;h=e6b55c1dd82e047e71da0a2d743ff98e6363c881;hb=5c00b581c8b83f6e7be9d53a77d9c61ef4d817a5;hp=4a64c195fba2565fe27095f1c8a8ed9d0a587d38;hpb=0ecfb229f43249008003a8203201c13f31d52d78;p=PuTTY.git diff --git a/windows/winsftp.c b/windows/winsftp.c index 4a64c195..e6b55c1d 100644 --- a/windows/winsftp.c +++ b/windows/winsftp.c @@ -20,7 +20,7 @@ int get_userpass_input(prompts_t *p, unsigned char *in, int inlen) return ret; } -void platform_get_x11_auth(struct X11Display *display, const Config *cfg) +void platform_get_x11_auth(struct X11Display *display, Conf *conf) { /* Do nothing, therefore no auth. */ } @@ -69,17 +69,27 @@ 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; }; RFile *open_existing_file(char *name, uint64 *size, - unsigned long *mtime, unsigned long *atime) + unsigned long *mtime, unsigned long *atime, + long *perms) { HANDLE h; RFile *ret; @@ -104,6 +114,9 @@ RFile *open_existing_file(char *name, uint64 *size, TIME_WIN_TO_POSIX(wrtime, *mtime); } + if (perms) + *perms = -1; + return ret; } @@ -128,7 +141,7 @@ struct WFile { HANDLE h; }; -WFile *open_new_file(char *name) +WFile *open_new_file(char *name, long perms) { HANDLE h; WFile *ret;