mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 07:33:01 +00:00 
			
		
		
		
	Add os/dir support for linux/posix.
This commit is contained in:
		| @@ -464,6 +464,23 @@ static Janet os_stat(int32_t argc, Janet *argv) { | |||||||
|     return janet_wrap_table(tab); |     return janet_wrap_table(tab); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | static Janet os_dir(int32_t argc, Janet *argv) { | ||||||
|  |     struct dirent *dp; | ||||||
|  |     DIR *dfd; | ||||||
|  |     janet_arity(argc, 1, 2); | ||||||
|  |     const char *dir = janet_getcstring(argv, 0); | ||||||
|  |     JanetArray *paths = (argc == 2) ? janet_getarray(argv, 1) : janet_array(0); | ||||||
|  |     if ((dfd = opendir(dir)) == NULL) janet_panicf("cannot open directory %s", dir); | ||||||
|  |     /* Read directory items */ | ||||||
|  |     while ((dp = readdir(dfd)) != NULL) { | ||||||
|  |         if (!strcmp(dp->d_name, ".") || !strcmp(dp->d_name, "..")) { | ||||||
|  |             continue; | ||||||
|  |         } | ||||||
|  |         janet_array_push(paths, janet_cstringv(dp->d_name)); | ||||||
|  |     } | ||||||
|  |     return janet_wrap_array(paths); | ||||||
|  | } | ||||||
|  |  | ||||||
| #endif /* JANET_REDUCED_OS */ | #endif /* JANET_REDUCED_OS */ | ||||||
|  |  | ||||||
| static const JanetReg os_cfuns[] = { | static const JanetReg os_cfuns[] = { | ||||||
| @@ -487,9 +504,15 @@ static const JanetReg os_cfuns[] = { | |||||||
|              "Get the string value of an environment variable.") |              "Get the string value of an environment variable.") | ||||||
|     }, |     }, | ||||||
| #ifndef JANET_REDUCED_OS | #ifndef JANET_REDUCED_OS | ||||||
|  |     { | ||||||
|  |         "os/dir", os_dir, | ||||||
|  |         JDOC("(os/stat dir [, array])\n\n" | ||||||
|  |              "Iterate over files and subdirectories in a directory. Returns an array of paths parts, " | ||||||
|  |              "with only the filename or directory name and no prefix.") | ||||||
|  |     }, | ||||||
|     { |     { | ||||||
|         "os/stat", os_stat, |         "os/stat", os_stat, | ||||||
|         JDOC("(os/stat path)\n\n" |         JDOC("(os/stat path [, tab])\n\n" | ||||||
|              "Gets information about a file or directory. Returns a table.") |              "Gets information about a file or directory. Returns a table.") | ||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Calvin Rose
					Calvin Rose