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 {