1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 #ifndef BASE_UTIL_H
35 #define BASE_UTIL_H
36
37 #include "../daemon/netsite.h"
38 #include <ucx/string.h>
39 #include "pool.h"
40
41 #ifdef XP_UNIX
42 #include <pwd.h>
43 #endif
44
45 #ifndef NOINTNSAPI
46 #define INTNSAPI
47 #endif
48
49
50
51
52
53
54
55
56
57 #define DEF_CTIMEBUF 26
58 #define DEF_ERRBUF 256
59 #define DEF_PWBUF 1024
60
61 #ifndef BASE_BUFFER_H
62
63 #endif
64
65
66
67
68 #define UTIL_ITOA_SIZE 12
69
70
71
72
73 #define UTIL_I64TOA_SIZE 21
74
75
76
77 #ifdef INTNSAPI
78
79 #ifdef __cplusplus
80 extern "C" {
81 #endif
82
83 size_t util_base64decode(
char *bufcoded,
size_t codedbytes,
char *bufout);
84 char* util_base64encode(
char *in,
size_t len);
85
86 NSAPI_PUBLIC
87 int INTutil_init_PRNetAddr(PRNetAddr * naddr,
char * ipstr,
int iplen,
int type);
88
89 NSAPI_PUBLIC
90 int INTutil_getline(filebuffer *buf,
int lineno,
int maxlen,
char *l);
91
92 NSAPI_PUBLIC char **INTutil_env_create(
char **env,
int n,
int *pos);
93
94 NSAPI_PUBLIC char *INTutil_env_str(
const char *name,
const char *value);
95
96 NSAPI_PUBLIC void INTutil_env_replace(
char **env,
const char *name,
const char *value);
97
98 NSAPI_PUBLIC void INTutil_env_free(
char **env);
99
100 NSAPI_PUBLIC char **INTutil_env_copy(
char **src,
char **dst);
101
102 NSAPI_PUBLIC char *INTutil_env_find(
char **env,
const char *name);
103
104 NSAPI_PUBLIC char **util_argv_parse(
const char *cmdline);
105
106 NSAPI_PUBLIC char *INTutil_hostname(
void);
107
108 NSAPI_PUBLIC int INTutil_chdir2path(
char *path);
109
110 NSAPI_PUBLIC int INTutil_chdir(
const char *path);
111
112 NSAPI_PUBLIC char *INTutil_getcwd(
void);
113
114 NSAPI_PUBLIC int INTutil_is_mozilla(
char *ua,
char *major,
char *minor);
115
116 NSAPI_PUBLIC int INTutil_is_url(
const char *url);
117
118 NSAPI_PUBLIC int INTutil_mstr2num(
const char *s);
119
120 NSAPI_PUBLIC int INTutil_later_than(
const struct tm *lms,
const char *ims);
121
122 NSAPI_PUBLIC int INTutil_time_equal(
const struct tm *lms,
const char *ims);
123
124 NSAPI_PUBLIC int INTutil_str_time_equal(
const char *t1,
const char *t2);
125
126 NSAPI_PUBLIC int INTutil_uri_is_evil(
const char *t);
127
128 NSAPI_PUBLIC int INTutil_uri_is_evil_internal(
const char *t,
int,
int);
129
130 NSAPI_PUBLIC void INTutil_uri_parse(
char *uri);
131
132 #ifdef XP_WIN32
133 NSAPI_PUBLIC int INTutil_uri_unescape_and_normalize(
pool_handle_t *pool,
char *s,
char *unnormalized);
134 #endif
135
136 NSAPI_PUBLIC void INTutil_uri_normalize_slashes(
char *s);
137
138 NSAPI_PUBLIC void INTutil_uri_unescape (
char *s);
139
140 NSAPI_PUBLIC int INTutil_uri_unescape_strict (
char *s);
141
142 NSAPI_PUBLIC int INTutil_uri_unescape_plus (
const char *src,
char *trg,
int len);
143
144 NSAPI_PUBLIC char *INTutil_uri_escape(
char *d,
const char *s);
145
146 NSAPI_PUBLIC char *INTutil_uri_strip_params(
char *uri);
147
148 NSAPI_PUBLIC char* util_canonicalize_uri(
pool_handle_t *pool,
const char *uri,
int len,
int *pcanonlen);
149
150 NSAPI_PUBLIC char* util_canonicalize_redirect(
pool_handle_t *pool,
const char *baseUri,
const char *newUri);
151
152 NSAPI_PUBLIC char *INTutil_url_escape(
char *d,
const char *s);
153
154 NSAPI_PUBLIC char *INTutil_sh_escape(
char *s);
155
156 NSAPI_PUBLIC int INTutil_mime_separator(
char *sep);
157
158 NSAPI_PUBLIC int INTutil_itoa(
int i,
char *a);
159
160 NSAPI_PUBLIC int INTutil_i64toa(
int64_t i,
char *a);
161
162
163 NSAPI_PUBLIC
164 int INTutil_vsprintf(
char *s,
register const char *fmt, va_list args);
165
166 NSAPI_PUBLIC int INTutil_sprintf(
char *s,
const char *fmt, ...);
167
168 NSAPI_PUBLIC int INTutil_vsnprintf(
char *s,
int n,
register const char *fmt,
169 va_list args);
170
171 NSAPI_PUBLIC int INTutil_snprintf(
char *s,
int n,
const char *fmt, ...);
172
173 NSAPI_PUBLIC int util_strlftime(
char *dst,
size_t dstsize,
const char *format,
const struct tm *t);
174
175 NSAPI_PUBLIC int INTutil_strftime(
char *s,
const char *format,
const struct tm *t);
176
177 NSAPI_PUBLIC char *INTutil_strtok(
char *s1,
const char *s2,
char **lasts);
178
179 NSAPI_PUBLIC struct tm *INTutil_localtime(
const time_t *clock,
struct tm *res);
180
181 NSAPI_PUBLIC char *INTutil_ctime(
const time_t *clock,
char *buf,
int buflen);
182
183 NSAPI_PUBLIC char *INTutil_strerror(
int errnum,
char *msg,
int buflen);
184
185 NSAPI_PUBLIC struct tm *INTutil_gmtime(
const time_t *clock,
struct tm *res);
186
187 NSAPI_PUBLIC char *INTutil_asctime(
const struct tm *tm,
char *buf,
int buflen);
188
189 NSAPI_PUBLIC char *INTutil_cookie_find(
char *cookie,
const char *name);
190
191 NSAPI_PUBLIC char *INTutil_cookie_next(
char *cookie,
char **name,
char **value);
192
193 NSAPI_PUBLIC char *INTutil_cookie_next_av_pair(
char *cookie,
char **name,
char **value);
194
195 NSAPI_PUBLIC void INTutil_random(
void *buf,
size_t sz);
196
197 NSAPI_PUBLIC PRBool INTutil_format_http_version(
const char *v,
int *protv_num,
char *buffer,
int size);
198
199 NSAPI_PUBLIC int INTutil_getboolean(
const char *v,
int def);
200 int util_getboolean_s(
sstr_t s,
int def);
201
202
203 NSAPI_PUBLIC int util_strtoint(
char *str,
int64_t *value);
204
205
206
207
208 #ifdef NEED_STRCASECMP
209 NSAPI_PUBLIC int INTutil_strcasecmp(
const char *one,
const char *two);
210 #endif
211
212 #ifdef NEED_STRNCASECMP
213 NSAPI_PUBLIC int INTutil_strncasecmp(
const char *one,
const char *two,
int n);
214 #endif
215
216 NSAPI_PUBLIC char *INTutil_strcasestr(
char *str,
const char *substr);
217
218 NSAPI_PUBLIC size_t util_strlcpy(
char *dst,
const char *src,
size_t dstsize);
219
220 NSAPI_PUBLIC size_t util_strlcat(
char *dst,
const char *src,
size_t dstsize);
221
222 NSAPI_PUBLIC char *INTutil_uuencode(
const char *src,
int len);
223
224 NSAPI_PUBLIC char *INTutil_uudecode(
const char *src);
225
226 NSAPI_PUBLIC char *util_strlower(
char *s);
227
228 NSAPI_PUBLIC char *util_decrement_string(
char *s);
229
230 NSAPI_PUBLIC int64_t util_atoi64(
const char *a);
231
232 NSAPI_PUBLIC char *util_html_escape(
const char *s);
233
234 NSAPI_PUBLIC int util_qtoi(
const char *q,
const char **p);
235
236
237 NSAPI_PUBLIC
238 sstr_t util_path_append(
pool_handle_t *pool,
char *path,
char *child);
239 NSAPI_PUBLIC
240 sstr_t util_path_remove_last(
sstr_t path);
241 NSAPI_PUBLIC
242 void util_add_ppath(
sstr_t root,
sstr_t path, pblock *vars);
243
244
245 UcxAllocator util_pool_allocator(
pool_handle_t *pool);
246
247 int util_isdate(
char *str);
248
249
250
251
252
253 #ifdef XP_UNIX
254
255 NSAPI_PUBLIC int INTutil_can_exec(
struct stat *finfo,
uid_t uid,
gid_t gid);
256
257 NSAPI_PUBLIC
258 struct passwd *INTutil_getpwnam(
const char *name,
struct passwd *result,
259 char *buffer,
int buflen);
260
261 NSAPI_PUBLIC
262 struct passwd *INTutil_getpwuid(
uid_t uid,
struct passwd *result,
263 char *buffer,
int buflen);
264
265 NSAPI_PUBLIC pid_t INTutil_waitpid(
pid_t pid,
int *statptr,
int options);
266
267 #endif
268
269
270
271
272
273 #ifdef XP_WIN32
274
275 NSAPI_PUBLIC
276 VOID INTutil_delete_directory(
char *FileName,
BOOL delete_directory);
277
278 #endif
279
280
281
282 #ifdef __cplusplus
283 }
284 #endif
285
286 #ifdef __cplusplus
287
288 NSAPI_PUBLIC char *util_host_port_suffix(
char *h);
289
290 NSAPI_PUBLIC const char *util_host_port_suffix(
const char *h);
291
292 #endif
293
294 #define util_init_PRNetAddr INTutil_init_PRNetAddr
295 #define util_getline INTutil_getline
296 #define util_env_create INTutil_env_create
297 #define util_env_str INTutil_env_str
298 #define util_env_replace INTutil_env_replace
299 #define util_env_free INTutil_env_free
300 #define util_env_copy INTutil_env_copy
301 #define util_env_find INTutil_env_find
302 #define util_hostname INTutil_hostname
303 #define util_chdir2path INTutil_chdir2path
304 #define util_chdir INTutil_chdir
305 #define util_getcwd INTutil_getcwd
306 #define util_is_mozilla INTutil_is_mozilla
307 #define util_is_url INTutil_is_url
308 #define util_mstr2num INTutil_mstr2num
309 #define util_later_than INTutil_later_than
310 #define util_time_equal INTutil_time_equal
311 #define util_str_time_equal INTutil_str_time_equal
312 #define util_uri_is_evil INTutil_uri_is_evil
313 #define util_uri_is_evil_internal INTutil_uri_is_evil_internal
314 #define util_uri_parse INTutil_uri_parse
315 #ifdef XP_WIN32
316 #define util_uri_unescape_and_normalize INTutil_uri_unescape_and_normalize
317 #endif
318 #define util_uri_normalize_slashes INTutil_uri_normalize_slashes
319 #define util_uri_unescape INTutil_uri_unescape
320 #define util_uri_unescape_strict INTutil_uri_unescape_strict
321 #define util_uri_unescape_plus INTutil_uri_unescape_plus
322
323 #define util_uri_escape INTutil_uri_escape
324 #define util_uri_strip_params INTutil_uri_strip_params
325 #define util_url_escape INTutil_url_escape
326 #define util_sh_escape INTutil_sh_escape
327 #define util_mime_separator INTutil_mime_separator
328 #define util_itoa INTutil_itoa
329 #define util_i64toa INTutil_i64toa
330 #define util_vsprintf INTutil_vsprintf
331 #define util_sprintf INTutil_sprintf
332 #define util_vsnprintf INTutil_vsnprintf
333 #define util_snprintf INTutil_snprintf
334 #define util_strftime INTutil_strftime
335 #define util_strcasecmp INTutil_strcasecmp
336 #define util_strncasecmp INTutil_strncasecmp
337 #define util_strcasestr INTutil_strcasestr
338 #define util_strtok INTutil_strtok
339 #define util_localtime INTutil_localtime
340 #define util_ctime INTutil_ctime
341 #define util_strerror INTutil_strerror
342 #define util_gmtime INTutil_gmtime
343 #define util_asctime INTutil_asctime
344 #define util_uuencode INTutil_uuencode
345 #define util_uudecode INTutil_uudecode
346
347 #ifdef XP_UNIX
348 #define util_can_exec INTutil_can_exec
349 #define util_getpwnam INTutil_getpwnam
350 #define util_getpwuid INTutil_getpwuid
351 #define util_waitpid INTutil_waitpid
352 #endif
353
354 #ifdef XP_WIN32
355 #define util_delete_directory INTutil_delete_directory
356 #endif
357
358 #ifdef NEED_STRCASECMP
359 #define util_strcasecmp INTutil_strcasecmp
360 #define strcasecmp INTutil_strcasecmp
361 #endif
362
363 #ifdef NEED_STRINGS_H
364 #include <strings.h>
365 #endif
366
367 #ifdef NEED_STRNCASECMP
368 #define util_strncasecmp INTutil_strncasecmp
369 #define strncasecmp INTutil_strncasecmp
370 #endif
371
372 #define util_cookie_find INTutil_cookie_find
373 #define util_cookie_next INTutil_cookie_next
374 #define util_cookie_next_av_pair INTutil_cookie_next_av_pair
375
376 #define util_random INTutil_random
377 #define util_format_http_version INTutil_format_http_version
378 #define util_getboolean INTutil_getboolean
379 #define util_getinterval INTutil_getinterval
380
381 #ifdef XP_WIN32
382 void set_fullpathname(PRBool b);
383 #endif
384 #endif
385
386 #endif
387
388
389