/src/gnupg/common/logging.h
Line | Count | Source |
1 | | /* logging.h |
2 | | * Copyright (C) 1999, 2000, 2001, 2004, 2006, |
3 | | * 2010 Free Software Foundation, Inc. |
4 | | * |
5 | | * This file is part of GnuPG. |
6 | | * |
7 | | * GnuPG is free software; you can redistribute and/or modify this |
8 | | * part of GnuPG under the terms of either |
9 | | * |
10 | | * - the GNU Lesser General Public License as published by the Free |
11 | | * Software Foundation; either version 3 of the License, or (at |
12 | | * your option) any later version. |
13 | | * |
14 | | * or |
15 | | * |
16 | | * - the GNU General Public License as published by the Free |
17 | | * Software Foundation; either version 2 of the License, or (at |
18 | | * your option) any later version. |
19 | | * |
20 | | * or both in parallel, as here. |
21 | | * |
22 | | * GnuPG is distributed in the hope that it will be useful, but |
23 | | * WITHOUT ANY WARRANTY; without even the implied warranty of |
24 | | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
25 | | * General Public License for more details. |
26 | | * |
27 | | * You should have received a copies of the GNU General Public License |
28 | | * and the GNU Lesser General Public License along with this program; |
29 | | * if not, see <https://www.gnu.org/licenses/>. |
30 | | */ |
31 | | |
32 | | #ifndef GNUPG_COMMON_LOGGING_H |
33 | | #define GNUPG_COMMON_LOGGING_H |
34 | | |
35 | | #include <stdio.h> |
36 | | #include <stdarg.h> |
37 | | #include <gpg-error.h> |
38 | | #include "mischelp.h" |
39 | | #include "w32help.h" |
40 | | |
41 | | /* We use the libgpg-error provided log functions. but we need one |
42 | | * more function: */ |
43 | | #ifdef GPGRT_HAVE_MACRO_FUNCTION |
44 | 0 | # define BUG() bug_at ( __FILE__, __LINE__, __FUNCTION__) |
45 | | static inline void bug_at (const char *file, int line, const char *func) |
46 | | GPGRT_ATTR_NORETURN; |
47 | | static inline void |
48 | | bug_at (const char *file, int line, const char *func) |
49 | 0 | { |
50 | 0 | gpgrt_log (GPGRT_LOGLVL_BUG, "there is a bug at %s:%d:%s\n", |
51 | 0 | file, line, func); |
52 | 0 | abort (); |
53 | 0 | } Unexecuted instantiation: fuzzer_stubs.c:bug_at Unexecuted instantiation: fuzz_import.c:bug_at Unexecuted instantiation: trustdb.c:bug_at Unexecuted instantiation: pkclist.c:bug_at Unexecuted instantiation: trust.c:bug_at Unexecuted instantiation: cpr.c:bug_at Unexecuted instantiation: key-clean.c:bug_at Unexecuted instantiation: tdbio.c:bug_at Unexecuted instantiation: sig-check.c:bug_at Unexecuted instantiation: misc.c:bug_at Unexecuted instantiation: armor.c:bug_at Unexecuted instantiation: call-dirmngr.c:bug_at Unexecuted instantiation: getkey.c:bug_at Unexecuted instantiation: seskey.c:bug_at Unexecuted instantiation: expand-group.c:bug_at Unexecuted instantiation: call-agent.c:bug_at Unexecuted instantiation: call-keyboxd.c:bug_at Unexecuted instantiation: keyid.c:bug_at Unexecuted instantiation: tdbdump.c:bug_at Unexecuted instantiation: server.c:bug_at Unexecuted instantiation: keydb.c:bug_at Unexecuted instantiation: kbnode.c:bug_at Unexecuted instantiation: pkglue.c:bug_at Unexecuted instantiation: import.c:bug_at Unexecuted instantiation: key-check.c:bug_at Unexecuted instantiation: free-packet.c:bug_at Unexecuted instantiation: keylist.c:bug_at Unexecuted instantiation: helptext.c:bug_at Unexecuted instantiation: parse-packet.c:bug_at Unexecuted instantiation: decrypt.c:bug_at Unexecuted instantiation: compress.c:bug_at Unexecuted instantiation: openfile.c:bug_at Unexecuted instantiation: mainproc.c:bug_at Unexecuted instantiation: decrypt-data.c:bug_at Unexecuted instantiation: keyring.c:bug_at Unexecuted instantiation: pubkey-enc.c:bug_at Unexecuted instantiation: keyserver.c:bug_at Unexecuted instantiation: photoid.c:bug_at Unexecuted instantiation: export.c:bug_at Unexecuted instantiation: skclist.c:bug_at Unexecuted instantiation: keyedit.c:bug_at Unexecuted instantiation: objcache.c:bug_at Unexecuted instantiation: encrypt.c:bug_at Unexecuted instantiation: passphrase.c:bug_at Unexecuted instantiation: verify.c:bug_at Unexecuted instantiation: sign.c:bug_at Unexecuted instantiation: build-packet.c:bug_at Unexecuted instantiation: progress.c:bug_at Unexecuted instantiation: plaintext.c:bug_at Unexecuted instantiation: cipher-cfb.c:bug_at Unexecuted instantiation: cipher-aead.c:bug_at Unexecuted instantiation: ecdh.c:bug_at Unexecuted instantiation: keygen.c:bug_at Unexecuted instantiation: mdfilter.c:bug_at Unexecuted instantiation: textfilter.c:bug_at Unexecuted instantiation: revoke.c:bug_at Unexecuted instantiation: keybox-util.c:bug_at Unexecuted instantiation: keybox-init.c:bug_at Unexecuted instantiation: keybox-blob.c:bug_at Unexecuted instantiation: keybox-file.c:bug_at Unexecuted instantiation: keybox-search.c:bug_at Unexecuted instantiation: keybox-update.c:bug_at Unexecuted instantiation: keybox-openpgp.c:bug_at Unexecuted instantiation: kbx-client-util.c:bug_at Unexecuted instantiation: i18n.c:bug_at Unexecuted instantiation: mapstrings.c:bug_at Unexecuted instantiation: stringhelp.c:bug_at Unexecuted instantiation: strlist.c:bug_at Unexecuted instantiation: utf8conv.c:bug_at Unexecuted instantiation: dotlock.c:bug_at Unexecuted instantiation: mischelp.c:bug_at Unexecuted instantiation: status.c:bug_at Unexecuted instantiation: init.c:bug_at Unexecuted instantiation: sexputil.c:bug_at Unexecuted instantiation: sysutils.c:bug_at Unexecuted instantiation: homedir.c:bug_at Unexecuted instantiation: gettime.c:bug_at Unexecuted instantiation: yesno.c:bug_at Unexecuted instantiation: zb32.c:bug_at Unexecuted instantiation: convert.c:bug_at Unexecuted instantiation: percent.c:bug_at Unexecuted instantiation: mbox-util.c:bug_at Unexecuted instantiation: miscellaneous.c:bug_at Unexecuted instantiation: xasprintf.c:bug_at Unexecuted instantiation: membuf.c:bug_at Unexecuted instantiation: iobuf.c:bug_at Unexecuted instantiation: ttyio.c:bug_at Unexecuted instantiation: asshelp.c:bug_at Unexecuted instantiation: signal.c:bug_at Unexecuted instantiation: session-env.c:bug_at Unexecuted instantiation: userids.c:bug_at Unexecuted instantiation: openpgp-oid.c:bug_at Unexecuted instantiation: openpgp-s2k.c:bug_at Unexecuted instantiation: helpfile.c:bug_at Unexecuted instantiation: server-help.c:bug_at Unexecuted instantiation: recsel.c:bug_at Unexecuted instantiation: comopt.c:bug_at Unexecuted instantiation: compliance.c:bug_at Unexecuted instantiation: pkscreening.c:bug_at Unexecuted instantiation: kem.c:bug_at Unexecuted instantiation: exechelp-posix.c:bug_at Unexecuted instantiation: tlv.c:bug_at |
54 | | #else |
55 | | # define BUG() bug_at ( __FILE__, __LINE__) |
56 | | static inline void bug_at (const char *file, int line) |
57 | | GPGRT_ATTR_NORETURN; |
58 | | static inline void |
59 | | bug_at (const char *file, int line) |
60 | | { |
61 | | gpgrt_log (GPGRT_LOGLVL_BUG, "there is a bug at %s:%d\n", file, line); |
62 | | abort (); |
63 | | } |
64 | | #endif /*!GPGRT_HAVE_MACRO_FUNCTION*/ |
65 | | |
66 | | |
67 | | |
68 | | /* Some handy assertion macros which don't abort. */ |
69 | | |
70 | | #define return_if_fail(expr) do { \ |
71 | | if (!(expr)) { \ |
72 | | log_debug ("%s:%d: assertion '%s' failed\n", \ |
73 | | __FILE__, __LINE__, #expr ); \ |
74 | | return; \ |
75 | | } } while (0) |
76 | | #define return_null_if_fail(expr) do { \ |
77 | | if (!(expr)) { \ |
78 | | log_debug ("%s:%d: assertion '%s' failed\n", \ |
79 | | __FILE__, __LINE__, #expr ); \ |
80 | | return NULL; \ |
81 | | } } while (0) |
82 | 0 | #define return_val_if_fail(expr,val) do { \ |
83 | 0 | if (!(expr)) { \ |
84 | 0 | log_debug ("%s:%d: assertion '%s' failed\n", \ |
85 | 0 | __FILE__, __LINE__, #expr ); \ |
86 | 0 | return (val); \ |
87 | 0 | } } while (0) |
88 | 0 | #define never_reached() do { \ |
89 | 0 | log_debug ("%s:%d: oops - should never get here\n", \ |
90 | 0 | __FILE__, __LINE__ ); \ |
91 | 0 | } while (0) |
92 | | |
93 | | |
94 | | #endif /*GNUPG_COMMON_LOGGING_H*/ |