commit 86f9fa3
Devine Lu Linvega
·
2025-01-22 23:55:00 +0000 UTC
parent 56d3388
(file.c) Removing reliance on snprintf
1 files changed,
+16,
-3
+16,
-3
1@@ -1,10 +1,10 @@
2 #define _XOPEN_SOURCE 500
3 #include <stdio.h>
4+#include <stdlib.h>
5 #include <dirent.h>
6 #include <errno.h>
7 #include <limits.h>
8 #include <string.h>
9-#include <stdlib.h>
10 #include <sys/stat.h>
11 #include <unistd.h>
12
13@@ -50,7 +50,7 @@ put_fill(Uint8 *dest, int len, char c)
14 {
15 int i;
16 for(i = 0; i < len; i++)
17- *(dest++) = c;
18+ *dest = c, dest++;
19 return len;
20 }
21
22@@ -63,6 +63,15 @@ put_size(Uint8 *dest, int len, off_t size)
23 return len;
24 }
25
26+static int
27+put_text(Uint8 *dest, const char *text)
28+{
29+ Uint8 *anchor = dest;
30+ while(*text)
31+ *dest = *text++, dest++;
32+ return dest - anchor;
33+}
34+
35 static int
36 put_stat(Uint8 *dest, int len, int size, int err, int dir, int capsize)
37 {
38@@ -77,11 +86,15 @@ put_statfile(Uint8 *dest, unsigned int len, const char *filepath, const char *ba
39 {
40 int err, dir;
41 struct stat st;
42+ Uint8 *anchor = dest;
43 if(len < strlen(basename) + 8) return 0;
44 err = stat(filepath, &st);
45 dir = S_ISDIR(st.st_mode);
46 dest += put_stat(dest, 4, st.st_size, err, dir, 1);
47- return snprintf((char *)dest, len, dir ? " %s/\n" : " %s\n", basename) + 4;
48+ dest += put_text(dest, " ");
49+ dest += put_text(dest, basename);
50+ dest += put_text(dest, dir ? "/\n" : "\n");
51+ return dest - anchor;
52 }
53
54 static int