summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2014-02-26 16:50:59 +0100
committerWerner Koch <wk@gnupg.org>2014-02-26 16:50:59 +0100
commit0f38c87f427a155ab5684e18e3b73956f81edfab (patch)
tree6c605074bf5c815c8549962b81be2337ec9cde2b
parentcommon: New function map_static_macro_string. (diff)
downloadgnupg2-0f38c87f427a155ab5684e18e3b73956f81edfab.tar.xz
gnupg2-0f38c87f427a155ab5684e18e3b73956f81edfab.zip
common: Replace all macros in strusage() returned strings.
* common/argparse.c (writechar): Remove. (writestrings): Simplify. (strusage): Use map_static_macro_string.
-rw-r--r--common/argparse.c76
1 files changed, 5 insertions, 71 deletions
diff --git a/common/argparse.c b/common/argparse.c
index c9930eaa5..fb3dbb68b 100644
--- a/common/argparse.c
+++ b/common/argparse.c
@@ -185,19 +185,6 @@ argparse_register_outfnc (int (*fnc)(int, const char *))
}
-static void
-writechar (int is_error, int c)
-{
- char tmp[2];
-
- tmp[0] = c;
- tmp[1] = 0;
- if (custom_outfnc)
- custom_outfnc (is_error? 2:1, tmp);
- else
- fputs (tmp, is_error? stderr : stdout);
-}
-
/* Write STRING and all following const char * arguments either to
stdout or, if IS_ERROR is set, to stderr. The list of strings must
be terminated by a NULL. */
@@ -214,64 +201,11 @@ writestrings (int is_error, const char *string, ...)
va_start (arg_ptr, string);
do
{
- const char *s2, *s3;
-
- /* Check whether to substitute a macro. */
- if (s && (s2 = strchr (s, '@')) && s2[1] >= 'A' && s2[1] <= 'Z'
- && (s3 = (strchr (s2+1, '@'))))
- {
- /* Might be. */
- static struct {
- const char *name;
- const char *value;
- } macros[] = {
-# ifdef PACKAGE_BUGREPORT
- { "EMAIL", PACKAGE_BUGREPORT },
-# else
- { "EMAIL", "bug@example.org" },
-# endif
- { "GNUPG", GNUPG_NAME },
- { "GPG", GPG_NAME },
- { "GPGSM", GPGSM_NAME },
- { "GPG_AGENT", GPG_AGENT_NAME },
- { "SCDAEMON", SCDAEMON_NAME },
- { "DIRMNGR", DIRMNGR_NAME },
- { "G13", G13_NAME },
- { "GPGCONF", GPGCONF_NAME },
- { "GPGTAR", GPGTAR_NAME }
- };
- int idx;
-
- s2++;
- for (idx=0; idx < DIM (macros); idx++)
- if (strlen (macros[idx].name) == (s3 - s2)
- && !memcmp (macros[idx].name, s2, (s3 - s2)))
- break;
- s2--;
- if (idx < DIM (macros)) /* Found. Print and substitute. */
- {
- for (; s < s2; s++, count++)
- writechar (is_error, *s);
- count += writestrings (is_error, macros[idx].value, NULL);
- s3++;
- }
- else /* Not found. Print macro as is. */
- {
- for (; s < s3; s++, count++)
- writechar (is_error, *s);
- }
- /* Now recurse so that remaining macros are also
- substituted. */
- count += writestrings (is_error, s3, NULL);
- }
+ if (custom_outfnc)
+ custom_outfnc (is_error? 2:1, s);
else
- {
- if (custom_outfnc)
- custom_outfnc (is_error? 2:1, s);
- else
- fputs (s, is_error? stderr : stdout);
- count += strlen (s);
- }
+ fputs (s, is_error? stderr : stdout);
+ count += strlen (s);
}
while ((s = va_arg (arg_ptr, const char *)));
va_end (arg_ptr);
@@ -1381,7 +1315,7 @@ strusage( int level )
const char *p = strusage_handler? strusage_handler(level) : NULL;
if ( p )
- return p;
+ return map_static_macro_string (p);
switch ( level )
{