Mercurial > molko
annotate libmlk-core/mlk/core/err.c @ 634:3930234ab1f5
examples: add basic gamepad
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 29 Aug 2023 13:34:10 +0200 |
parents | 4349b591c3ac |
children |
rev | line source |
---|---|
419 | 1 /* |
2 * err.h -- error routines | |
3 * | |
445
773a082f0b91
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
437
diff
changeset
|
4 * Copyright (c) 2020-2023 David Demelier <markand@malikania.fr> |
419 | 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 | |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
19 #include <assert.h> |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
20 #include <stdio.h> |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
21 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
22 #include <mlk/util/util.h> |
419 | 23 |
586 | 24 #include "core_p.h" |
419 | 25 #include "err.h" |
26 | |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
27 #define ERR_MAX 128 |
586 | 28 #define DEFAULT_ERR _("no error") |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
29 |
586 | 30 static MLK_THREAD_LOCAL char err[ERR_MAX]; |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
31 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
32 int |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
33 mlk_errf(const char *fmt, ...) |
419 | 34 { |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
35 assert(fmt); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
36 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
37 va_list ap; |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
38 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
39 va_start(ap, fmt); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
40 mlk_errva(fmt, ap); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
41 va_end(ap); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
42 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
43 return -1; |
419 | 44 } |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
45 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
46 int |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
47 mlk_errva(const char *fmt, va_list ap) |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
48 { |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
49 assert(fmt); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
50 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
51 int ret; |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
52 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
53 /* Don't keep an empty string... */ |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
54 ret = vsnprintf(err, sizeof (err), fmt, ap); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
55 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
56 if (ret < 0) |
586 | 57 mlk_util_strlcpy(err, _("unknown error"), sizeof (err)); |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
58 else if (ret == 0) |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
59 mlk_util_strlcpy(err, DEFAULT_ERR, sizeof (err)); |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
60 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
61 return -1; |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
62 } |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
63 |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
64 const char * |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
65 mlk_err(void) |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
66 { |
586 | 67 if (!err[0]) |
68 mlk_util_strlcpy(err, DEFAULT_ERR, sizeof (err)); | |
69 | |
547
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
70 return err; |
c7664b679a95
misc: remove error codes for now
David Demelier <markand@malikania.fr>
parents:
445
diff
changeset
|
71 } |