Coverage Report

Created: 2026-01-09 06:48

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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*/