removing duplication of --help logic

This commit is contained in:
Christian Grothoff 2016-04-07 22:52:23 +02:00
parent d986269dae
commit e00370d4f5
9 changed files with 10 additions and 142 deletions

View File

@ -135,14 +135,13 @@ main (int argc,
{'a', "auditor-key", "FILE",
"file containing the private key of the auditor", 1,
&GNUNET_GETOPT_set_filename, &auditor_key_file},
TALER_GETOPT_OPTION_HELP ("Private key of the auditor to use for signing"),
GNUNET_GETOPT_OPTION_HELP ("Private key of the auditor to use for signing"),
{'m', "exchange-key", "KEY",
"public key of the exchange (Crockford base32 encoded)", 1,
&GNUNET_GETOPT_set_filename, &exchange_public_key},
{'u', "auditor-url", "URL",
"URL of the auditor (informative link for the user)", 1,
&GNUNET_GETOPT_set_string, &auditor_url},
TALER_GETOPT_OPTION_HELP ("Private key of the auditor to use for signing"),
{'r', "exchange-request", "FILE",
"set of keys the exchange requested the auditor to sign", 1,
&GNUNET_GETOPT_set_string, &exchange_request_file},

View File

@ -880,7 +880,7 @@ main (int argc,
{'d', "exchange-dir", "DIR",
"exchange directory with keys to update", 1,
&GNUNET_GETOPT_set_filename, &exchange_directory},
TALER_GETOPT_OPTION_HELP ("Setup signing and denomination keys for a Taler exchange"),
GNUNET_GETOPT_OPTION_HELP ("Setup signing and denomination keys for a Taler exchange"),
{'m', "master-key", "FILE",
"master key file (private key)", 1,
&GNUNET_GETOPT_set_filename, &masterkeyfile},

View File

@ -69,7 +69,7 @@ main (int argc, char *const *argv)
{'D', "details", "JSON",
"details about the bank transaction which justify why we add this amount", 1,
&GNUNET_GETOPT_set_string, &details},
TALER_GETOPT_OPTION_HELP ("Deposit funds into a Taler reserve"),
GNUNET_GETOPT_OPTION_HELP ("Deposit funds into a Taler reserve"),
{'R', "reserve", "KEY",
"reserve (public key) to modify", 1,
&GNUNET_GETOPT_set_string, &reserve_pub_str},

View File

@ -72,7 +72,7 @@ main (int argc,
{'o', "output", "FILE",
"where to write the result", 1,
&GNUNET_GETOPT_set_filename, &output_filename},
TALER_GETOPT_OPTION_HELP ("Setup /wire response"),
GNUNET_GETOPT_OPTION_HELP ("Setup /wire response"),
GNUNET_GETOPT_OPTION_VERSION (VERSION "-" VCS_VERSION),
GNUNET_GETOPT_OPTION_END
};

View File

@ -993,11 +993,10 @@ main (int argc,
{'f', "format", "WIREFORMAT",
"wireformat to use, overrides WIREFORMAT option in [exchange] section", 1,
&GNUNET_GETOPT_set_filename, &exchange_wireformat},
TALER_GETOPT_OPTION_HELP ("background process that aggregates and executes wire transfers to merchants"),
GNUNET_GETOPT_OPTION_HELP ("background process that aggregates and executes wire transfers to merchants"),
{'t', "test", NULL,
"run in test mode with temporary tables", 0,
&GNUNET_GETOPT_set_one, &test_mode},
TALER_GETOPT_OPTION_HELP ("background process that aggregates and executes wire transfers to merchants"),
GNUNET_GETOPT_OPTION_VERSION (VERSION "-" VCS_VERSION),
GNUNET_GETOPT_OPTION_END
};

View File

@ -630,7 +630,7 @@ main (int argc,
"run in test-mode using FILENAME as the HTTP request to process", 1,
&GNUNET_GETOPT_set_filename, &input_filename},
#endif
TALER_GETOPT_OPTION_HELP ("HTTP server providing a RESTful API to access a Taler exchange"),
GNUNET_GETOPT_OPTION_HELP ("HTTP server providing a RESTful API to access a Taler exchange"),
GNUNET_GETOPT_OPTION_VERSION (VERSION "-" VCS_VERSION),
GNUNET_GETOPT_OPTION_END
};

View File

@ -121,28 +121,4 @@ TALER_config_get_denom (struct GNUNET_CONFIGURATION_Handle *cfg,
struct TALER_Amount *denom);
/**
* Print out details on command line options (implements --help).
*
* @param ctx command line processing context
* @param scls additional closure (points to about text)
* @param option name of the option
* @param value not used (NULL)
* @return #GNUNET_NO (do not continue, not an error)
*/
int
TALER_GETOPT_format_help_ (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
void *scls,
const char *option,
const char *value);
/**
* Macro defining the option to print the command line
* help text (-h option).
*
* @param about string with brief description of the application
*/
#define TALER_GETOPT_OPTION_HELP(about) \
{ 'h', "help", (const char *) NULL, gettext_noop("print this help"), 0, &TALER_GETOPT_format_help_, (void *) about }
#endif

View File

@ -35,12 +35,14 @@ static const struct GNUNET_OS_ProjectData taler_pd = {
.libname = "libtalerutil",
.project_dirname = "taler",
.binary_name = "taler-exchange-httpd",
.env_varname = "TALER_PREFIX"
.env_varname = "TALER_PREFIX",
.bug_email = "taler@gnu.org",
.homepage = "http://www.gnu.org/s/taler/",
};
/**
* Return default project data used by gnunet-gtk.
* Return default project data used by Taler.
*/
const struct GNUNET_OS_ProjectData *
TALER_project_data_default (void)

View File

@ -116,112 +116,4 @@ TALER_config_load (const char *base_dir)
}
/**
* At what offset does the help text start?
*/
#define BORDER 29
/**
* Print out details on command line options (implements --help).
*
* @param ctx command line processing context
* @param scls additional closure (points to about text)
* @param option name of the option
* @param value not used (NULL)
* @return #GNUNET_NO (do not continue, not an error)
*/
int
TALER_GETOPT_format_help_ (struct GNUNET_GETOPT_CommandLineProcessorContext *ctx,
void *scls,
const char *option,
const char *value)
{
const char *about = scls;
size_t slen;
unsigned int i;
int j;
size_t ml;
size_t p;
char *scp;
const char *trans;
const struct GNUNET_GETOPT_CommandLineOption *opt;
if (NULL != about)
{
printf ("%s\n%s\n",
ctx->binaryOptions,
gettext (about));
printf (_("Arguments mandatory for long options are also mandatory for short options.\n"));
}
opt = ctx->allOptions;
for (i=0;NULL != opt[i].description;i++)
{
if (opt[i].shortName == '\0')
printf (" ");
else
printf (" -%c, ", opt[i].shortName);
printf ("--%s", opt[i].name);
slen = 8 + strlen (opt[i].name);
if (opt[i].argumentHelp != NULL)
{
printf ("=%s", opt[i].argumentHelp);
slen += 1 + strlen (opt[i].argumentHelp);
}
if (slen > BORDER)
{
printf ("\n%*s", BORDER, "");
slen = BORDER;
}
if (slen < BORDER)
{
printf ("%*s", (int) (BORDER - slen), "");
slen = BORDER;
}
if (0 < strlen (opt[i].description))
trans = gettext (opt[i].description);
else
trans = "";
ml = strlen (trans);
p = 0;
OUTER:
while (ml - p > 78 - slen)
{
for (j = p + 78 - slen; j > p; j--)
{
if (isspace ((unsigned char) trans[j]))
{
scp = GNUNET_malloc (j - p + 1);
memcpy (scp, &trans[p], j - p);
scp[j - p] = '\0';
printf ("%s\n%*s", scp, BORDER + 2, "");
GNUNET_free (scp);
p = j + 1;
slen = BORDER + 2;
goto OUTER;
}
}
/* could not find space to break line */
scp = GNUNET_malloc (78 - slen + 1);
memcpy (scp, &trans[p], 78 - slen);
scp[78 - slen] = '\0';
printf ("%s\n%*s", scp, BORDER + 2, "");
GNUNET_free (scp);
slen = BORDER + 2;
p = p + 78 - slen;
}
/* print rest */
if (p < ml)
printf ("%s\n", &trans[p]);
if (strlen (trans) == 0)
printf ("\n");
}
printf ("Report bugs to taler@gnu.org.\n"
"Taler home page: http://www.gnu.org/software/taler/\n"
"General help using GNU software: http://www.gnu.org/gethelp/\n");
return GNUNET_NO;
}
/* end of util.c */