diff options
-rw-r--r-- | notmuch-client.h | 5 | ||||
-rw-r--r-- | notmuch-config.c | 57 | ||||
-rw-r--r-- | notmuch.1 | 28 | ||||
-rw-r--r-- | notmuch.c | 14 |
4 files changed, 101 insertions, 3 deletions
diff --git a/notmuch-client.h b/notmuch-client.h index 20be43b..d530578 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -113,6 +113,9 @@ notmuch_search_tags_command (void *ctx, int argc, char *argv[]); int notmuch_part_command (void *ctx, int argc, char *argv[]); +int +notmuch_config_command (void *ctx, int argc, char *argv[]); + const char * notmuch_time_relative_date (const void *ctx, time_t then); @@ -174,7 +177,7 @@ void notmuch_config_set_user_primary_email (notmuch_config_t *config, const char *primary_email); -char ** +const char ** notmuch_config_get_user_other_email (notmuch_config_t *config, size_t *length); diff --git a/notmuch-config.c b/notmuch-config.c index cf30603..2e81d1c 100644 --- a/notmuch-config.c +++ b/notmuch-config.c @@ -68,7 +68,7 @@ struct _notmuch_config { char *database_path; char *user_name; char *user_primary_email; - char **user_other_email; + const char **user_other_email; size_t user_other_email_length; const char **new_tags; size_t new_tags_length; @@ -474,7 +474,7 @@ notmuch_config_set_user_primary_email (notmuch_config_t *config, config->user_primary_email = NULL; } -char ** +const char ** notmuch_config_get_user_other_email (notmuch_config_t *config, size_t *length) { @@ -562,3 +562,56 @@ notmuch_config_set_new_tags (notmuch_config_t *config, config->new_tags = NULL; } +int +notmuch_config_command (void *ctx, int argc, char *argv[]) +{ + notmuch_config_t *config; + const char *item; + + if (argc != 2) { + fprintf (stderr, "Error: notmuch config requires two arguments.\n"); + return 1; + } + + if (strcmp (argv[0], "get")) { + fprintf (stderr, "Unrecognized argument for notmuch config: %s\n", + argv[0]); + return 1; + } + + config = notmuch_config_open (ctx, NULL, NULL); + if (config == NULL) + return 1; + + item = argv[1]; + + if (strcmp(item, "database.path") == 0) { + printf ("%s\n", notmuch_config_get_database_path (config)); + } else if (strcmp(item, "user.name") == 0) { + printf ("%s\n", notmuch_config_get_user_name (config)); + } else if (strcmp(item, "user.primary_email") == 0) { + printf ("%s\n", notmuch_config_get_user_primary_email (config)); + } else if (strcmp(item, "user.other_email") == 0) { + const char **other_email; + size_t i, length; + + other_email = notmuch_config_get_user_other_email (config, &length); + for (i = 0; i < length; i++) + printf ("%s\n", other_email[i]); + } else if (strcmp(item, "new.tags") == 0) { + const char **tags; + size_t i, length; + + tags = notmuch_config_get_new_tags (config, &length); + for (i = 0; i < length; i++) + printf ("%s\n", tags[i]); + } else { + fprintf (stderr, "Unknown configuration item: %s\n", + argv[1]); + return 1; + } + + notmuch_config_close (config); + + return 0; +} @@ -404,6 +404,34 @@ See the section below for details of the supported syntax for <search-terms>. .RE +The +.B config +command can be used to get settings from the notmuch configuration +file. + +.RS 4 +.TP 4 +.BR "config get " <section> . <item> + +Get settings from the notmuch configuration file. + +The value of the specified configuration item is printed to stdout. If +the item has multiple values, each value is separated by a newline +character. + +Available configuration items include at least + + database.path + + user.name + + user.primary_email + + user.other_email + + new.tags +.RE + .SH SEARCH SYNTAX Several notmuch commands accept a common syntax for search terms. @@ -321,6 +321,20 @@ command_t commands[] = { "\tby the \"--format=json\" option of \"notmuch show\". If the\n" "\tmessage specified by the search terms does not include a\n" "\tpart with the specified \"id\" there will be no output." }, + { "config", notmuch_config_command, + "get <section>.<item>", + "Get settings from the notmuch configuration file.", + "\tThe value of the specified configuration item is printed\n" + "\tto stdout. If the item has multiple values, each value\n" + "\tis separated by a newline character.\n" + "\n" + "\tAvailable configuration items include at least" + "\n" + "\t\tdatabase.path\n" + "\t\tuser.name\n" + "\t\tuser.primary_email\n" + "\t\tuser.other_email\n" + "\t\tnew.tags\n" }, { "help", notmuch_help_command, "[<command>]", "This message, or more detailed help for the named command.", |