In addition to notmuch_config_get_new_tags() I started to think how to add notmuch_config_get_database_exclude() (for excluding directories; needed by me and many others) to copy and modify from notmuch_config_get_new_tags() would cause lots of duplicate code so I started to look how to generalise. Not so simple so I started to look "bigger picture" and this leads to suggestion: new c file called 'notmuch-talloc.c', with the following initial content: --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-- # include <add required includes...> static void notmuch_talloc_g_string_list_destructor (void * ptr) { g_strfreev ( (gchar **)ptr ); } /* tallocify wrapper for g_key_file_get_string_list */ gchar ** void notmuch_talloc_g_key_file_get_string_list (const void * ctx, GFile *key_file, const gchar *group_name, const gchar *key, gsize *length, GError **error) { gchar ** tags = g_key_file_get_string_list (key_file, group_name, key, length, error); if (tags) { talloc_reference(ctx, tags); talloc_set_destructor(tags, notmuch_talloc_g_string_list_destructor); } return tags; } --8<----8<----8<----8<----8<----8<----8<----8<----8<----8<----8<-- Provided that the above is proven correct, this would simplify notmuch_config_get_new_tags() as: const char ** notmuch_config_get_new_tags (notmuch_config_t *config, size_t *length) { if (config->new_tags == NULL) { config->new_tags = notmuch_talloc_g_key_file_get_string_list( config, config->key_file, "new", "tags", &config->tags_length, NULL); } } return config->new_tags; } Thus adding notmuch_config_get_database_exclude() avoids the CopyPasteProgramming threshold. new code to the notmuch-talloc.c (and interface declarations to notmuch-talloc.h) would be added on demand, per need basis. Note that this code is unproven code. For obvious reason i'm currently hesitant to investigate further -- all of us have priorities -- but if this idea gets good response I'm willing to do the proper patches; for now, for my own use, I just hardcode excluded directories to notmuch-new.c :D tomi