mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-23 01:44:52 +01:00
cli: abstract subcommand finding into a new function
Clean up code.
This commit is contained in:
parent
ed5150d2df
commit
c1d1954469
1 changed files with 38 additions and 36 deletions
52
notmuch.c
52
notmuch.c
|
@ -70,6 +70,18 @@ static command_t commands[] = {
|
||||||
"This message, or more detailed help for the named command." }
|
"This message, or more detailed help for the named command." }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static command_t *
|
||||||
|
find_command (const char *name)
|
||||||
|
{
|
||||||
|
size_t i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE (commands); i++)
|
||||||
|
if (strcmp (name, commands[i].name) == 0)
|
||||||
|
return &commands[i];
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
int notmuch_format_version;
|
int notmuch_format_version;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -139,7 +151,6 @@ static int
|
||||||
notmuch_help_command (void *ctx, int argc, char *argv[])
|
notmuch_help_command (void *ctx, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
command_t *command;
|
command_t *command;
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
argc--; argv++; /* Ignore "help" */
|
argc--; argv++; /* Ignore "help" */
|
||||||
|
|
||||||
|
@ -158,14 +169,11 @@ notmuch_help_command (void *ctx, int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE (commands); i++) {
|
command = find_command (argv[0]);
|
||||||
command = &commands[i];
|
if (command) {
|
||||||
|
|
||||||
if (strcmp (argv[0], command->name) == 0) {
|
|
||||||
char *page = talloc_asprintf (ctx, "notmuch-%s", command->name);
|
char *page = talloc_asprintf (ctx, "notmuch-%s", command->name);
|
||||||
exec_man (page);
|
exec_man (page);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (strcmp (argv[0], "search-terms") == 0) {
|
if (strcmp (argv[0], "search-terms") == 0) {
|
||||||
exec_man ("notmuch-search-terms");
|
exec_man ("notmuch-search-terms");
|
||||||
|
@ -247,10 +255,11 @@ int
|
||||||
main (int argc, char *argv[])
|
main (int argc, char *argv[])
|
||||||
{
|
{
|
||||||
void *local;
|
void *local;
|
||||||
|
char *talloc_report;
|
||||||
command_t *command;
|
command_t *command;
|
||||||
unsigned int i;
|
|
||||||
notmuch_bool_t print_help=FALSE, print_version=FALSE;
|
notmuch_bool_t print_help=FALSE, print_version=FALSE;
|
||||||
int opt_index;
|
int opt_index;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
notmuch_opt_desc_t options[] = {
|
notmuch_opt_desc_t options[] = {
|
||||||
{ NOTMUCH_OPT_BOOLEAN, &print_help, "help", 'h', 0 },
|
{ NOTMUCH_OPT_BOOLEAN, &print_help, "help", 'h', 0 },
|
||||||
|
@ -285,21 +294,21 @@ main (int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE (commands); i++) {
|
command = find_command (argv[opt_index]);
|
||||||
command = &commands[i];
|
if (!command) {
|
||||||
|
fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",
|
||||||
if (strcmp (argv[opt_index], command->name) == 0) {
|
argv[opt_index]);
|
||||||
int ret;
|
return 1;
|
||||||
char *talloc_report;
|
}
|
||||||
|
|
||||||
ret = (command->function)(local, argc - opt_index, argv + opt_index);
|
ret = (command->function)(local, argc - opt_index, argv + opt_index);
|
||||||
|
|
||||||
talloc_report = getenv ("NOTMUCH_TALLOC_REPORT");
|
talloc_report = getenv ("NOTMUCH_TALLOC_REPORT");
|
||||||
|
|
||||||
/* this relies on the previous call to
|
|
||||||
* talloc_enable_null_tracking */
|
|
||||||
|
|
||||||
if (talloc_report && strcmp (talloc_report, "") != 0) {
|
if (talloc_report && strcmp (talloc_report, "") != 0) {
|
||||||
|
/* this relies on the previous call to
|
||||||
|
* talloc_enable_null_tracking
|
||||||
|
*/
|
||||||
|
|
||||||
FILE *report = fopen (talloc_report, "w");
|
FILE *report = fopen (talloc_report, "w");
|
||||||
if (report) {
|
if (report) {
|
||||||
talloc_report_full (NULL, report);
|
talloc_report_full (NULL, report);
|
||||||
|
@ -310,14 +319,7 @@ main (int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fprintf (stderr, "Error: Unknown command '%s' (see \"notmuch help\")\n",
|
|
||||||
argv[1]);
|
|
||||||
|
|
||||||
talloc_free (local);
|
talloc_free (local);
|
||||||
|
|
||||||
return 1;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue