mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
common: Add a global variable to for the default error source.
For the shared code parts it is cumbersome to pass an error sourse variable to each function. Its value is always a constant for a given binary and thus a global variable makes things a lot easier than the former macro stuff. * common/init.c (default_errsource): New global var. (init_common_subsystems): Rename to _init_common_subsystems. Set DEFAULT_ERRSOURCE. * common/init.h: Assert value of GPG_ERR_SOURCE_DEFAULT. (init_common_subsystems): New macro. * common/util.h (default_errsource): Add declaration. * kbx/keybox-defs.h: Add some GPG_ERR_SOURCE_DEFAULT trickery.
This commit is contained in:
parent
ecda65498a
commit
eb0faef81d
20 changed files with 80 additions and 33 deletions
|
@ -37,6 +37,12 @@
|
|||
#include "util.h"
|
||||
|
||||
|
||||
/* The default error source of the application. This is different
|
||||
from GPG_ERR_SOURCE_DEFAULT in that it does not depend on the
|
||||
source file and thus is usable in code shared by applications. */
|
||||
gpg_err_source_t default_errsource;
|
||||
|
||||
|
||||
#ifdef HAVE_W32CE_SYSTEM
|
||||
static void parse_std_file_handles (int *argcp, char ***argvp);
|
||||
static void
|
||||
|
@ -74,10 +80,16 @@ writestring_via_estream (int mode, const char *string)
|
|||
required for logging is ready. ARGCP and ARGVP are the addresses
|
||||
of the parameters given to main. This function may modify them.
|
||||
|
||||
This function should be called only via the macro
|
||||
init_common_subsystems.
|
||||
|
||||
CAUTION: This might be called while running suid(root). */
|
||||
void
|
||||
init_common_subsystems (int *argcp, char ***argvp)
|
||||
_init_common_subsystems (gpg_err_source_t errsource, int *argcp, char ***argvp)
|
||||
{
|
||||
/* Store the error source in a gloabl variable. */
|
||||
default_errsource = errsource;
|
||||
|
||||
/* Try to auto set the character set. */
|
||||
set_native_charset (NULL);
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* init.h - Definitions for init fucntions.
|
||||
* Copyright (C) 2007 Free Software Foundation, Inc.
|
||||
* Copyright (C) 2007, 2012 Free Software Foundation, Inc.
|
||||
*
|
||||
* This file is part of GnuPG.
|
||||
*
|
||||
|
@ -20,7 +20,15 @@
|
|||
#ifndef GNUPG_COMMON_INIT_H
|
||||
#define GNUPG_COMMON_INIT_H
|
||||
|
||||
void init_common_subsystems (int *argcp, char ***argvp);
|
||||
#ifndef GPG_ERR_SOURCE_DEFAULT
|
||||
# error GPG_ERR_SOURCE_DEFAULT is not defined
|
||||
#elseif GPG_ERR_SOURCE_DEFAULT == GPG_ERR_SOURCE_UNKNOWN
|
||||
# error GPG_ERR_SOURCE_DEFAULT has default value
|
||||
#endif
|
||||
|
||||
void _init_common_subsystems (gpg_err_source_t errsource,
|
||||
int *argcp, char ***argvp);
|
||||
#define init_common_subsystems(a,b) \
|
||||
_init_common_subsystems (GPG_ERR_SOURCE_DEFAULT, (a), (b))
|
||||
|
||||
#endif /*GNUPG_COMMON_INIT_H*/
|
||||
|
|
|
@ -63,7 +63,6 @@
|
|||
#include "../common/utf8conv.h"
|
||||
#include "../common/dynload.h"
|
||||
|
||||
#include "init.h"
|
||||
#include "gettime.h"
|
||||
|
||||
/* Redefine asprintf by our estream version which uses our own memory
|
||||
|
@ -113,6 +112,12 @@ typedef char **rl_completion_func_t (const char *, int, int);
|
|||
#define xmalloc_clear(a) gcry_xcalloc (1, (a))
|
||||
#define xmalloc_secure_clear(a) gcry_xcalloc_secure (1, (a))
|
||||
|
||||
/* The default error source of the application. This is different
|
||||
from GPG_ERR_SOURCE_DEFAULT in that it does not depend on the
|
||||
source file and thus is usable in code shared by applications.
|
||||
Defined by init.c. */
|
||||
extern gpg_err_source_t default_errsource;
|
||||
|
||||
/* Convenience function to return a gpg-error code for memory
|
||||
allocation failures. This function makes sure that an error will
|
||||
be returned even if accidently ERRNO is not set. */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue