Mercurial > paster
annotate util.c @ 26:6a45977c82b4 0.1.0
misc: update before 0.1.0
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 07 Feb 2020 13:44:04 +0100 |
parents | f455893bf0b0 |
children | 07b6887d3557 |
rev | line source |
---|---|
0 | 1 /* |
2 * util.c -- various utilities | |
3 * | |
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <assert.h> | |
20 #include <errno.h> | |
21 #include <stdarg.h> | |
1
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
22 #include <stdio.h> |
0 | 23 #include <stdlib.h> |
24 #include <stdnoreturn.h> | |
25 #include <string.h> | |
5
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
26 #include <time.h> |
0 | 27 |
28 #include "util.h" | |
29 | |
30 noreturn void | |
31 die(const char *fmt, ...) | |
32 { | |
33 va_list ap; | |
34 | |
35 va_start(ap, fmt); | |
36 vfprintf(stderr, fmt, ap); | |
37 va_end(ap); | |
38 | |
39 exit(1); | |
40 } | |
41 | |
42 char * | |
43 estrdup(const char *str) | |
44 { | |
45 assert(str); | |
46 | |
47 char *ret; | |
48 size_t length = strlen(str); | |
49 | |
50 if (!(ret = calloc(1, length + 1))) | |
51 die(strerror(errno)); | |
52 | |
53 return strcpy(ret, str); | |
54 } | |
1
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
55 |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
56 const char * |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
57 bprintf(const char *fmt, ...) |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
58 { |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
59 static char buf[BUFSIZ]; |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
60 va_list ap; |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
61 |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
62 va_start(ap, fmt); |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
63 vsnprintf(buf, sizeof (buf), fmt, ap); |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
64 va_end(ap); |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
65 |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
66 return buf; |
836a698946f8
pasterd: add basic routes
David Demelier <markand@malikania.fr>
parents:
0
diff
changeset
|
67 } |
5
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
68 |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
69 const char * |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
70 bstrftime(const char *fmt, const struct tm *tm) |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
71 { |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
72 static char buf[BUFSIZ]; |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
73 |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
74 strftime(buf, sizeof (buf), fmt, tm); |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
75 |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
76 return buf; |
f455893bf0b0
pasterd: show dates in /
David Demelier <markand@malikania.fr>
parents:
1
diff
changeset
|
77 } |