commit 56d3388

Devine Lu Linvega  ·  2025-01-22 23:41:33 +0000 UTC
parent c7ad87c
(file.c) Remove indirection
1 files changed,  +6, -7
+6, -7
 1@@ -85,16 +85,15 @@ put_statfile(Uint8 *dest, unsigned int len, const char *filepath, const char *ba
 2 }
 3 
 4 static int
 5-put_fdir(int id, Uint8 *dest, int len)
 6+put_fdir(Uint8 *dest, int len, const char *filepath, DIR *dir)
 7 {
 8-	UxnFile *uf = &uxn_file[id];
 9 	Uint8 *_dest = dest;
10 	static char pathname[0x2000];
11-	int in_folder = uf->filepath[0] == '.';
12-	struct dirent *de = readdir(uf->dir);
13-	for(; de != NULL; de = readdir(uf->dir)) {
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-		snprintf(pathname, 0x2000, in_folder ? "%s/%s" : "%s%s", uf->filepath, de->d_name);
19+		snprintf(pathname, 0x2000, in_folder ? "%s/%s" : "%s%s", filepath, de->d_name);
20 		dest += put_statfile(dest, len, pathname, de->d_name);
21 	}
22 	return dest - _dest;
23@@ -164,7 +163,7 @@ file_read(int id, Uint16 addr, int len)
24 	if(uf->state == FILE_READ)
25 		return fread(dest, 1, len, uf->f);
26 	if(uf->state == DIR_READ)
27-		return put_fdir(id, dest, len);
28+		return put_fdir(dest, len, uf->filepath, uf->dir);
29 	return 0;
30 }
31