diff --git a/src/mzscheme/src/file.c b/src/mzscheme/src/file.c index ff5bf70cd2..8b7c7cbb8c 100644 --- a/src/mzscheme/src/file.c +++ b/src/mzscheme/src/file.c @@ -5384,10 +5384,10 @@ static Scheme_Object *file_size(int argc, Scheme_Object *argv[]) } #else { - struct MSC_IZE(BIG_OFF_T_IZE(stat)) buf; + struct BIG_OFF_T_IZE(stat) buf; while (1) { - if (!MSC_W_IZE(BIG_OFF_T_IZE(stat))(MSC_WIDE_PATH(filename), &buf)) + if (!BIG_OFF_T_IZE(stat)(MSC_WIDE_PATH(filename), &buf)) break; else if (errno != EINTR) goto failed; diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index 3bf5eeff65..a010b00851 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -7340,7 +7340,7 @@ long scheme_get_milliseconds(void) # ifdef USE_FTIME struct MSC_IZE(timeb) now; MSC_IZE(ftime)(&now); - return now.time * 1000 + now.millitm; + return (long)(now.time * 1000 + now.millitm); # else # ifdef PALMOS_STUFF /* FIXME */ @@ -7439,7 +7439,7 @@ long scheme_get_seconds(void) # ifdef USE_FTIME struct MSC_IZE(timeb) now; MSC_IZE(ftime)(&now); - return now.time; + return (long)now.time; # else # ifdef USE_PLAIN_TIME time_t now; diff --git a/src/mzscheme/src/port.c b/src/mzscheme/src/port.c index fda273fc4e..b3fc312e3c 100644 --- a/src/mzscheme/src/port.c +++ b/src/mzscheme/src/port.c @@ -241,6 +241,11 @@ typedef struct Scheme_FD { # define FILENAME_EXN_E "%e" #endif +#if defined(DOS_FILE_SYSTEM) +# define fseeko _fseeki64 +# define ftello _ftelli64 +#endif + /******************** Globals and Prototypes ********************/ /* globals */ @@ -4160,10 +4165,17 @@ scheme_file_position(int argc, Scheme_Object *argv[]) # ifdef WINDOWS_FILE_HANDLES { - - if (!SetFilePointerEx((HANDLE)fd, nll, NULL, - ((whence == SEEK_SET) ? FILE_BEGIN : FILE_END))) + DWORD r; + LONG lo_w, hi_w; + lo_w = (LONG)(nll & 0xFFFFFFFF); + hi_w = (LONG)(nll >> 32); + r = SetFilePointer((HANDLE)fd, lo_w, &hi_w, + ((whence == SEEK_SET) ? FILE_BEGIN : FILE_END)); + if ((r == INVALID_SET_FILE_POINTER) + && GetLastError() != NO_ERROR) lv = -1; + else + lv = 0; } # else lv = BIG_OFF_T_IZE(lseek)(fd, nll, whence); @@ -4260,11 +4272,14 @@ scheme_file_position(int argc, Scheme_Object *argv[]) } else if (had_fd) { # ifdef WINDOWS_FILE_HANDLES { - LARGE_INTEGER li; - if (!SetFilePointerEx((HANDLE)fd, 0, &li, FILE_CURRENT)) + DWORD lo_w, hi_w; + hi_w = 0; + lo_w = SetFilePointer((HANDLE)fd, 0, &hi_w, FILE_CURRENT); + if ((lo_w == INVALID_SET_FILE_POINTER) + && GetLastError() != NO_ERROR) pll = -1; else - pll = li; + pll = ((mzlonglong)hi_w << 32) | lo_w; } # else pll = BIG_OFF_T_IZE(lseek)(fd, 0, 1); diff --git a/src/mzscheme/src/read.c b/src/mzscheme/src/read.c index 31007ead04..641f8835f7 100644 --- a/src/mzscheme/src/read.c +++ b/src/mzscheme/src/read.c @@ -5283,7 +5283,7 @@ Scheme_Object *scheme_unmarshal_wrap_get(Scheme_Unmarshal_Tables *ut, long l; l = SCHEME_INT_VAL(wraps_key); - if ((l < 0) || (l >= ut->rp->symtab_size)) + if ((l < 0) || ((unsigned long)l >= ut->rp->symtab_size)) scheme_ill_formed_code(ut->rp); if (!ut->rp->symtab[l]) {