commit 05d398d

Devine Lu Linvega  ·  2025-01-22 22:33:42 +0000 UTC
parent f3eb8e5
Housekeeping
1 files changed,  +49, -59
+49, -59
  1@@ -10,13 +10,10 @@
  2 
  3 #ifdef _WIN32
  4 #include <direct.h>
  5-#define realpath(s, dummy) lrealpath(s)
  6 #define DIR_SEP_CHAR '\\'
  7-#define DIR_SEP_STR "\\"
  8 #define mkdir(file_name) (_mkdir(file_name) == 0)
  9 #else
 10 #define DIR_SEP_CHAR '/'
 11-#define DIR_SEP_STR "/"
 12 #define mkdir(file_name) (mkdir(file_name, 0755) == 0)
 13 #endif
 14 
 15@@ -69,14 +66,10 @@ put_size(Uint8 *dest, Uint16 len, off_t size)
 16 static Uint16
 17 put_stat(Uint8 *dest, Uint16 len, int size, int err, int dir, int capsize)
 18 {
 19-	if(err)
 20-		return put_fill(dest, len, '!');
 21-	else if(dir)
 22-		return put_fill(dest, len, '-');
 23-	else if(capsize && size >= 0x10000)
 24-		return put_fill(dest, len, '?');
 25-	else
 26-		return put_size(dest, len, size);
 27+	if(err) return put_fill(dest, len, '!');
 28+	if(dir) return put_fill(dest, len, '-');
 29+	if(capsize && size >= 0x10000) return put_fill(dest, len, '?');
 30+	return put_size(dest, len, size);
 31 }
 32 
 33 static Uint16
 34@@ -84,28 +77,17 @@ put_statfile(Uint8 *dest, Uint16 len, const char *filepath, const char *basename
 35 {
 36 	int err, dir;
 37 	struct stat st;
 38-	if(len < strlen(basename) + 8)
 39-		return 0;
 40+	if(len < strlen(basename) + 8) return 0;
 41 	err = stat(filepath, &st);
 42 	dir = S_ISDIR(st.st_mode);
 43 	dest += put_stat(dest, 4, st.st_size, err, dir, 1);
 44 	return snprintf((char *)dest, len, dir ? " %s/\n" : " %s\n", basename) + 4;
 45 }
 46 
 47-static void
 48-file_reset(UxnFile *c)
 49-{
 50-	if(c->f != NULL)
 51-		fclose(c->f), c->f = NULL;
 52-	if(c->dir != NULL)
 53-		closedir(c->dir), c->dir = NULL;
 54-	c->state = IDLE;
 55-}
 56-
 57 static Uint16
 58-file_read_dir(UxnFile *c, Uint8 *dest, Uint16 len)
 59+put_fdir(UxnFile *c, Uint8 *dest, Uint16 len)
 60 {
 61-	Uint8 *p = dest;
 62+	Uint8 *_dest = dest;
 63 	static char pathname[0x2000];
 64 	struct dirent *de = readdir(c->dir);
 65 	for(; de != NULL; de = readdir(c->dir)) {
 66@@ -113,7 +95,47 @@ file_read_dir(UxnFile *c, Uint8 *dest, Uint16 len)
 67 		snprintf(pathname, 0x2000, c->filepath[0] == '.' ? "%s/%s" : "%s%s", c->filepath, de->d_name);
 68 		dest += put_statfile(dest, len, pathname, de->d_name);
 69 	}
 70-	return dest - p;
 71+	return dest - _dest;
 72+}
 73+
 74+static int
 75+is_dir_path(char *p)
 76+{
 77+	char c;
 78+	int saw_slash = 0;
 79+	while((c = *p++))
 80+		saw_slash = c == DIR_SEP_CHAR;
 81+	return saw_slash;
 82+}
 83+
 84+static int
 85+dir_exists(char *p)
 86+{
 87+	struct stat st;
 88+	return stat(p, &st) == 0 && S_ISDIR(st.st_mode);
 89+}
 90+
 91+static int
 92+ensure_parent_dirs(char *p)
 93+{
 94+	int ok = 1;
 95+	char c, *s = p;
 96+	for(; ok && (c = *p); p++) {
 97+		if(c == DIR_SEP_CHAR) {
 98+			*p = '\0';
 99+			ok = dir_exists(s) || mkdir(s);
100+			*p = c;
101+		}
102+	}
103+	return ok;
104+}
105+
106+static void
107+file_reset(UxnFile *c)
108+{
109+	if(c->f != NULL) fclose(c->f), c->f = NULL;
110+	if(c->dir != NULL) closedir(c->dir), c->dir = NULL;
111+	c->state = IDLE;
112 }
113 
114 static Uint16
115@@ -151,42 +173,10 @@ file_read(UxnFile *c, Uint16 addr, int len)
116 	if(c->state == FILE_READ)
117 		return fread(dest, 1, len, c->f);
118 	if(c->state == DIR_READ)
119-		return file_read_dir(c, dest, len);
120+		return put_fdir(c, dest, len);
121 	return 0;
122 }
123 
124-static int
125-is_dir_path(char *p)
126-{
127-	char c;
128-	int saw_slash = 0;
129-	while((c = *p++))
130-		saw_slash = c == DIR_SEP_CHAR;
131-	return saw_slash;
132-}
133-
134-int
135-dir_exists(char *p)
136-{
137-	struct stat st;
138-	return stat(p, &st) == 0 && S_ISDIR(st.st_mode);
139-}
140-
141-int
142-ensure_parent_dirs(char *p)
143-{
144-	int ok = 1;
145-	char c, *s = p;
146-	for(; ok && (c = *p); p++) {
147-		if(c == DIR_SEP_CHAR) {
148-			*p = '\0';
149-			ok = dir_exists(s) || mkdir(s);
150-			*p = c;
151-		}
152-	}
153-	return ok;
154-}
155-
156 static Uint16
157 file_write(UxnFile *c, Uint16 addr, Uint16 len, Uint8 flags)
158 {