diff options
author | Werner Koch <[email protected]> | 2012-02-06 19:50:47 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2012-02-06 19:50:47 +0000 |
commit | eb0faef81dae2cba1f62056fdc4dc2a7d58ac86a (patch) | |
tree | 7ada65b8c11f45aeb6beae3fce3959d4513c5ac3 /common/init.c | |
parent | Also let GENKEY and PKDECRYPT send the INQUIRE_MAXLEN status message. (diff) | |
download | gnupg-eb0faef81dae2cba1f62056fdc4dc2a7d58ac86a.tar.gz gnupg-eb0faef81dae2cba1f62056fdc4dc2a7d58ac86a.zip |
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.
Diffstat (limited to '')
-rw-r--r-- | common/init.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/common/init.c b/common/init.c index f551416c5..475eaefda 100644 --- a/common/init.c +++ b/common/init.c @@ -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); |