commit 9410c14
Devine Lu Linvega
·
2025-01-23 19:54:03 +0000 UTC
parent 0d4a5ee
Improved folder read handler
2 files changed,
+9,
-8
+6,
-0
1@@ -31,6 +31,11 @@
2 #0200 .File/length DEO2
3 ;mem-nested DUP2 .File/read DEO2
4 <pstr>
5+ ( | dir nested bad2 )
6+ ;dir-nested-bad2 .File/name DEO2
7+ #0200 .File/length DEO2
8+ ;mem-nested DUP2 .File/read DEO2
9+ <pstr>
10 BRK
11
12 @<pstr> ( str* -- )
13@@ -44,6 +49,7 @@
14 @dir ". $1
15 @dir-nested "src/ $1
16 @dir-nested-bad "src $1
17+@dir-nested-bad2 "./src $1
18
19 @stat-mem "............ $1
20
+3,
-8
1@@ -100,7 +100,7 @@ put_statfile(Uint8 *dest, unsigned int len, const char *filepath, const char *ba
2 static void
3 make_pathfile(char *res, char *path, char *file)
4 {
5- char c;
6+ char c = '/';
7 while(*path) c = *path++, *res = c, res++;
8 if(c != DIRCHAR) *res = DIRCHAR, res++;
9 while(*file) *res = *file++, res++;
10@@ -111,18 +111,13 @@ static int
11 put_fdir(Uint8 *dest, int len, const char *filepath, DIR *dir)
12 {
13 Uint8 *_dest = dest;
14- int in_folder = filepath[0] == '.';
15 struct dirent *de = readdir(dir);
16- for(; de != NULL; de = readdir(dir)) {
17- if(de->d_name[0] == '.' && de->d_name[1] == 0) continue;
18- if(in_folder)
19- dest += put_statfile(dest, len, de->d_name, de->d_name);
20- else {
21+ for(; de != NULL; de = readdir(dir))
22+ if(de->d_name[0] != '.') {
23 static char res[0x2000];
24 make_pathfile(res, (char *)filepath, de->d_name);
25 dest += put_statfile(dest, len, res, de->d_name);
26 }
27- }
28 return dest - _dest;
29 }
30