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