aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--notmuch-client.h5
-rw-r--r--notmuch-config.c57
-rw-r--r--notmuch.128
-rw-r--r--notmuch.c14
4 files changed, 101 insertions, 3 deletions
diff --git a/notmuch-client.h b/notmuch-client.h
index 20be43b9..d530578a 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 cf306039..2e81d1c2 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;
+}
diff --git a/notmuch.1 b/notmuch.1
index 3ec9c55c..41f7c7e4 100644
--- a/notmuch.1
+++ b/notmuch.1
@@ -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.
diff --git a/notmuch.c b/notmuch.c
index f6b8c139..f9acfa36 100644
--- a/notmuch.c
+++ b/notmuch.c
@@ -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.",