1
0
mirror of https://github.com/janet-lang/janet synced 2025-06-13 20:14:12 +00:00

Be explicit about 64 bit offset on windows.

This commit is contained in:
Calvin Rose 2024-05-26 11:22:09 -05:00
parent fd5315793c
commit fe348187cc
3 changed files with 13 additions and 4 deletions

View File

@ -2,6 +2,9 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## Unreleased - ??? ## Unreleased - ???
- Add extra optional `env` argument to `eval` and `eval-string`.
- Allow naming function literals with a keyword. This allows better stacktraces for macros without
accidentally adding new bindings.
- Add `bundle/` module for managing packages within Janet. This should replace the jpm packaging - Add `bundle/` module for managing packages within Janet. This should replace the jpm packaging
format eventually and is much simpler and amenable to more complicated builds. format eventually and is much simpler and amenable to more complicated builds.
- Add macros `ev/with-lock`, `ev/with-rlock`, and `ev/with-wlock` for using mutexes and rwlocks. - Add macros `ev/with-lock`, `ev/with-rlock`, and `ev/with-wlock` for using mutexes and rwlocks.

View File

@ -41,6 +41,11 @@ static void io_file_marshal(void *p, JanetMarshalContext *ctx);
static void *io_file_unmarshal(JanetMarshalContext *ctx); static void *io_file_unmarshal(JanetMarshalContext *ctx);
static Janet io_file_next(void *p, Janet key); static Janet io_file_next(void *p, Janet key);
#ifdef JANET_WINDOWS
#define ftell _ftelli64
#define fseek _fseeki64
#endif
const JanetAbstractType janet_file_type = { const JanetAbstractType janet_file_type = {
"core/file", "core/file",
cfun_io_gc, cfun_io_gc,
@ -337,7 +342,7 @@ JANET_CORE_FN(cfun_io_fseek,
JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type); JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
if (iof->flags & JANET_FILE_CLOSED) if (iof->flags & JANET_FILE_CLOSED)
janet_panic("file is closed"); janet_panic("file is closed");
long int offset = 0; int64_t offset = 0;
int whence = SEEK_CUR; int whence = SEEK_CUR;
if (argc >= 2) { if (argc >= 2) {
const uint8_t *whence_sym = janet_getkeyword(argv, 1); const uint8_t *whence_sym = janet_getkeyword(argv, 1);
@ -351,7 +356,7 @@ JANET_CORE_FN(cfun_io_fseek,
janet_panicf("expected one of :cur, :set, :end, got %v", argv[1]); janet_panicf("expected one of :cur, :set, :end, got %v", argv[1]);
} }
if (argc == 3) { if (argc == 3) {
offset = (long) janet_getinteger64(argv, 2); offset = (int64_t) janet_getinteger64(argv, 2);
} }
} }
if (fseek(iof->file, offset, whence)) janet_panic("error seeking file"); if (fseek(iof->file, offset, whence)) janet_panic("error seeking file");
@ -365,7 +370,7 @@ JANET_CORE_FN(cfun_io_ftell,
JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type); JanetFile *iof = janet_getabstract(argv, 0, &janet_file_type);
if (iof->flags & JANET_FILE_CLOSED) if (iof->flags & JANET_FILE_CLOSED)
janet_panic("file is closed"); janet_panic("file is closed");
long pos = ftell(iof->file); int64_t pos = ftell(iof->file);
if (pos == -1) janet_panic("error getting position in file"); if (pos == -1) janet_panic("error getting position in file");
return janet_wrap_number((double)pos); return janet_wrap_number((double)pos);
} }

View File

@ -50,7 +50,8 @@
(rmrf syspath) (rmrf syspath)
(assert (os/mkdir syspath)) (assert (os/mkdir syspath))
(put root-env *syspath* (bundle-rpath syspath)) (put root-env *syspath* (bundle-rpath syspath))
#(setdyn *out* @"") (unless (os/getenv "VERBOSE")
(setdyn *out* @""))
(assert (empty? (bundle/list)) "initial bundle/list") (assert (empty? (bundle/list)) "initial bundle/list")
(assert (empty? (bundle/topolist)) "initial bundle/topolist") (assert (empty? (bundle/topolist)) "initial bundle/topolist")