mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-30 23:23:07 +00:00 
			
		
		
		
	Add extra argument to (native) to allow for passing
in custom environment to add stuff to.
This commit is contained in:
		| @@ -1623,7 +1623,7 @@ value, one key will be ignored." | |||||||
|             (def n (find-native path)) |             (def n (find-native path)) | ||||||
|             (if (not n) |             (if (not n) | ||||||
|               (error (string "could not open file for module " path))) |               (error (string "could not open file for module " path))) | ||||||
|             (native n))))))) |             (native n (make-env)))))))) | ||||||
|  |  | ||||||
| (defn import* | (defn import* | ||||||
|   "Import a module into a given environment table. This is the |   "Import a module into a given environment table. This is the | ||||||
|   | |||||||
| @@ -67,10 +67,15 @@ JanetModule janet_native(const char *name, const uint8_t **error) { | |||||||
|  |  | ||||||
| static Janet janet_core_native(int32_t argc, Janet *argv) { | static Janet janet_core_native(int32_t argc, Janet *argv) { | ||||||
|     JanetModule init; |     JanetModule init; | ||||||
|     JanetTable *env = janet_table(0); |     janet_arity(argc, 1, 2); | ||||||
|     janet_fixarity(argc, 1); |  | ||||||
|     const uint8_t *path = janet_getstring(argv, 0); |     const uint8_t *path = janet_getstring(argv, 0); | ||||||
|     const uint8_t *error = NULL; |     const uint8_t *error = NULL; | ||||||
|  |     JanetTable *env; | ||||||
|  |     if (argc == 2) { | ||||||
|  |         env = janet_gettable(argv, 1); | ||||||
|  |     } else { | ||||||
|  |         env = janet_table(0); | ||||||
|  |     } | ||||||
|     init = janet_native((const char *)path, &error); |     init = janet_native((const char *)path, &error); | ||||||
|     if (!init) { |     if (!init) { | ||||||
|         janet_panicf("could not load native %S: %S", path, error); |         janet_panicf("could not load native %S: %S", path, error); | ||||||
| @@ -245,7 +250,7 @@ static Janet janet_core_hash(int32_t argc, Janet *argv) { | |||||||
|  |  | ||||||
| static const JanetReg cfuns[] = { | static const JanetReg cfuns[] = { | ||||||
|     {"native", janet_core_native, |     {"native", janet_core_native, | ||||||
|         "(native path)\n\n" |         "(native path [,env])\n\n" | ||||||
|         "Load a native module from the given path. The path " |         "Load a native module from the given path. The path " | ||||||
|         "must be an absolute or relative path on the file system, and is " |         "must be an absolute or relative path on the file system, and is " | ||||||
|         "usually a .so file on Unix systems, and a .dll file on Windows. " |         "usually a .so file on Unix systems, and a .dll file on Windows. " | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose