X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=notmuch-config.c;h=e5d42a0cbfd505ed9f1ba5b6984251a7324a3061;hp=01bb185990bb31f2965ab0a0aab7f967ea5c4232;hb=d93e9cee13ef22c5dbba44f33357fd969b8ef88f;hpb=792bea5aff135107fd970f51f3ef8c65f68194de diff --git a/notmuch-config.c b/notmuch-config.c index 01bb1859..e5d42a0c 100644 --- a/notmuch-config.c +++ b/notmuch-config.c @@ -13,7 +13,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/ . + * along with this program. If not, see https://www.gnu.org/licenses/ . * * Author: Carl Worth */ @@ -27,7 +27,7 @@ static const char toplevel_config_comment[] = " .notmuch-config - Configuration file for the notmuch mail system\n" "\n" - " For more information about notmuch, see http://notmuchmail.org"; + " For more information about notmuch, see https://notmuchmail.org"; static const char database_config_comment[] = " Database configuration\n" @@ -751,6 +751,28 @@ _item_split (char *item, char **group, char **key) } #define BUILT_WITH_PREFIX "built_with." +#define QUERY_PREFIX "query." + +static int +_print_db_config(notmuch_config_t *config, const char *name) +{ + notmuch_database_t *notmuch; + char *val; + + if (notmuch_database_open (notmuch_config_get_database_path (config), + NOTMUCH_DATABASE_MODE_READ_ONLY, ¬much)) + return EXIT_FAILURE; + + /* XXX Handle UUID mismatch? */ + + if (print_status_database ("notmuch config", notmuch, + notmuch_database_get_config (notmuch, name, &val))) + return EXIT_FAILURE; + + puts (val); + + return EXIT_SUCCESS; +} static int notmuch_config_command_get (notmuch_config_t *config, char *item) @@ -778,6 +800,8 @@ notmuch_config_command_get (notmuch_config_t *config, char *item) } else if (STRNCMP_LITERAL (item, BUILT_WITH_PREFIX) == 0) { printf ("%s\n", notmuch_built_with (item + strlen (BUILT_WITH_PREFIX)) ? "true" : "false"); + } else if (STRNCMP_LITERAL (item, QUERY_PREFIX) == 0) { + return _print_db_config (config, item); } else { char **value; size_t i, length; @@ -804,6 +828,39 @@ notmuch_config_command_get (notmuch_config_t *config, char *item) return 0; } +static int +_set_db_config(notmuch_config_t *config, const char *key, int argc, char **argv) +{ + notmuch_database_t *notmuch; + const char *val = ""; + + if (argc > 1) { + /* XXX handle lists? */ + fprintf (stderr, "notmuch config set: at most one value expected for %s\n", key); + return EXIT_FAILURE; + } + + if (argc > 0) { + val = argv[0]; + } + + if (notmuch_database_open (notmuch_config_get_database_path (config), + NOTMUCH_DATABASE_MODE_READ_WRITE, ¬much)) + return EXIT_FAILURE; + + /* XXX Handle UUID mismatch? */ + + if (print_status_database ("notmuch config", notmuch, + notmuch_database_set_config (notmuch, key, val))) + return EXIT_FAILURE; + + if (print_status_database ("notmuch config", notmuch, + notmuch_database_close (notmuch))) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} + static int notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char *argv[]) { @@ -814,6 +871,10 @@ notmuch_config_command_set (notmuch_config_t *config, char *item, int argc, char return 1; } + if (STRNCMP_LITERAL (item, QUERY_PREFIX) == 0) { + return _set_db_config (config, item, argc, argv); + } + if (_item_split (item, &group, &key)) return 1; @@ -850,6 +911,34 @@ _notmuch_config_list_built_with () printf("%sfield_processor=%s\n", BUILT_WITH_PREFIX, notmuch_built_with ("field_processor") ? "true" : "false"); + printf("%sretry_lock=%s\n", + BUILT_WITH_PREFIX, + notmuch_built_with ("retry_lock") ? "true" : "false"); +} + +static int +_list_db_config (notmuch_config_t *config) +{ + notmuch_database_t *notmuch; + notmuch_config_list_t *list; + + if (notmuch_database_open (notmuch_config_get_database_path (config), + NOTMUCH_DATABASE_MODE_READ_ONLY, ¬much)) + return EXIT_FAILURE; + + /* XXX Handle UUID mismatch? */ + + + if (print_status_database ("notmuch config", notmuch, + notmuch_database_get_config_list (notmuch, "", &list))) + return EXIT_FAILURE; + + for (; notmuch_config_list_valid (list); notmuch_config_list_move_to_next (list)) { + printf("%s=%s\n", notmuch_config_list_key (list), notmuch_config_list_value(list)); + } + notmuch_config_list_destroy (list); + + return EXIT_SUCCESS; } static int @@ -888,7 +977,7 @@ notmuch_config_command_list (notmuch_config_t *config) g_strfreev (groups); _notmuch_config_list_built_with (); - return 0; + return _list_db_config (config); } int