annotate util.c @ 3:215c0c3b3609

misc: use JSON everywhere (scictl/sciwebd)
author David Demelier <markand@malikania.fr>
date Mon, 14 Jun 2021 22:08:24 +0200
parents 5fa3d2f479b2
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * util.c -- miscellaneous utilities
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2021 David Demelier <markand@malikania.fr>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
19 #include <sys/stat.h>
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #include <assert.h>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 #include <err.h>
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
22 #include <fcntl.h>
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #include <libgen.h>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #include <limits.h>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 #include <stdarg.h>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 #include <stdio.h>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 #include <stdlib.h>
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 #include <string.h>
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
29 #include <unistd.h>
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 #include "util.h"
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
32
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 void *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 util_malloc(size_t size)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
35 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 void *ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
37
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 if (!(ret = malloc(size)))
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 err(1, "malloc");
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
40
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 void *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 util_calloc(size_t n, size_t size)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 void *ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 if (!(ret = calloc(n, size)))
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 err(1, "calloc");
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 void *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 util_realloc(void *ptr, size_t size)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 void *ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
59
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
60 if (!(ret = realloc(ptr, size)) && size)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 err(1, "realloc");
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
62
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
65
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 void *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 util_memdup(const void *ptr, size_t size)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 void *ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 if (!(ret = malloc(size)))
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 err(1, "malloc");
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
73
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 return memcpy(ret, ptr, size);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
76
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 char *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 util_strdup(const char *src)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 char *ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
81
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 if (!(ret = strdup(src)))
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 err(1, "strdup");
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
84
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
87
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 char *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 util_strndup(const char *src, size_t n)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 assert(src);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
92
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 char *ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
94
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 if (!(ret = strndup(src, n)))
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 err(1, "strndup");
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
97
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
100
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 char *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 util_basename(const char *str)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 static char ret[PATH_MAX];
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 char tmp[PATH_MAX];
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
106
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 strlcpy(tmp, str, sizeof (tmp));
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 strlcpy(ret, basename(tmp), sizeof (ret));
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
109
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
112
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 char *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 util_dirname(const char *str)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 static char ret[PATH_MAX];
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 char tmp[PATH_MAX];
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
118
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 strlcpy(tmp, str, sizeof (tmp));
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 strlcpy(ret, dirname(tmp), sizeof (ret));
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
121
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 return ret;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
124
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
125 FILE *
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
126 util_fmemopen(void *buf, size_t size, const char *mode)
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 {
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
128 FILE *fp;
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
129
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
130 if (!(fp = fmemopen(buf, size, mode)))
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
131 err(1, "fmemopen");
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
132
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
133 return fp;
0
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 }
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
135
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 char *
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 util_printf(char *buf, size_t bufsz, const char *fmt, ...)
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 {
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 assert(buf);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 assert(bufsz);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 assert(fmt);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
142
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 va_list ap;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
144
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 va_start(ap, fmt);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 vsnprintf(buf, bufsz, fmt, ap);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 va_end(ap);
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
148
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 return buf;
f1de39079243 misc: initial import
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 }
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
151
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
152 char *
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
153 util_read(const char *path)
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
154 {
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
155 int fd;
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
156 struct stat st;
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
157 char *ret;
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
158
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
159 if ((fd = open(path, O_RDONLY)) < 0)
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
160 return NULL;
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
161 if (fstat(fd, &st) < 0)
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
162 return close(fd), NULL;
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
163
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
164 ret = util_calloc(1, st.st_size + 1);
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
165
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
166 if (read(fd, ret, st.st_size) != st.st_size) {
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
167 free(ret);
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
168 ret = NULL;
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
169 }
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
170
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
171 close(fd);
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
172
3
215c0c3b3609 misc: use JSON everywhere (scictl/sciwebd)
David Demelier <markand@malikania.fr>
parents: 2
diff changeset
173 return ret;
1
5afdb14df924 sci: add support for storing results
David Demelier <markand@malikania.fr>
parents: 0
diff changeset
174 }
2
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
175
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
176 const char *
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
177 util_path(const char *filename)
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
178 {
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
179 assert(filename);
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
180
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
181 /* Build path to the template file. */
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
182 static char path[PATH_MAX];
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
183
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
184 //snprintf(path, sizeof (path), "%s/%s", config.themedir, filename);
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
185
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
186 return path;
5fa3d2f479b2 sci: initial upload support
David Demelier <markand@malikania.fr>
parents: 1
diff changeset
187 }