Make the tag operation parser accessible outside notmuch-tag.c so it can be reused by the upcoming insert command. --- notmuch-client.h | 9 +++++++++ notmuch-tag.c | 17 ++++++----------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/notmuch-client.h b/notmuch-client.h index ae9344b..a7c3df2 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -65,6 +65,11 @@ typedef GMimeCipherContext notmuch_crypto_context_t; #define STRINGIFY(s) STRINGIFY_(s) #define STRINGIFY_(s) #s +typedef struct { + const char *tag; + notmuch_bool_t remove; +} notmuch_tag_operation_t; + typedef struct mime_node mime_node_t; struct sprinter; struct notmuch_show_params; @@ -159,6 +164,10 @@ notmuch_cat_command (void *ctx, int argc, char *argv[]); int notmuch_config_command (void *ctx, int argc, char *argv[]); +int +parse_tag_operations (int i, int argc, char *argv[], + notmuch_tag_operation_t *tag_ops, int *tag_ops_count); + const char * notmuch_time_relative_date (const void *ctx, time_t then); diff --git a/notmuch-tag.c b/notmuch-tag.c index 35a76db..831a0e4 100644 --- a/notmuch-tag.c +++ b/notmuch-tag.c @@ -54,14 +54,9 @@ _escape_tag (char *buf, const char *tag) return buf; } -typedef struct { - const char *tag; - notmuch_bool_t remove; -} tag_operation_t; - static char * _optimize_tag_query (void *ctx, const char *orig_query_string, - const tag_operation_t *tag_ops) + const notmuch_tag_operation_t *tag_ops) { /* This is subtler than it looks. Xapian ignores the '-' operator * at the beginning both queries and parenthesized groups and, @@ -116,7 +111,7 @@ _optimize_tag_query (void *ctx, const char *orig_query_string, * element. */ static int tag_query (void *ctx, notmuch_database_t *notmuch, const char *query_string, - tag_operation_t *tag_ops, notmuch_bool_t synchronize_flags) + notmuch_tag_operation_t *tag_ops, notmuch_bool_t synchronize_flags) { notmuch_query_t *query; notmuch_messages_t *messages; @@ -170,9 +165,9 @@ tag_query (void *ctx, notmuch_database_t *notmuch, const char *query_string, /* Parse +tag and -tag operations between argv[i] and argv[argc-1]. * The array tag_ops must be at least argc - i elements long. * Returns the index into argv where parsing stopped, or -1 on error. */ -static int +int parse_tag_operations (int i, int argc, char *argv[], - tag_operation_t *tag_ops, int *tag_ops_count) + notmuch_tag_operation_t *tag_ops, int *tag_ops_count) { *tag_ops_count = 0; @@ -207,7 +202,7 @@ parse_tag_operations (int i, int argc, char *argv[], int notmuch_tag_command (void *ctx, int argc, char *argv[]) { - tag_operation_t *tag_ops; + notmuch_tag_operation_t *tag_ops; int tag_ops_count; char *query_string; notmuch_config_t *config; @@ -228,7 +223,7 @@ notmuch_tag_command (void *ctx, int argc, char *argv[]) /* Array of tagging operations (add or remove), terminated with an * empty element. */ - tag_ops = talloc_array (ctx, tag_operation_t, argc + 1); + tag_ops = talloc_array (ctx, notmuch_tag_operation_t, argc + 1); if (tag_ops == NULL) { fprintf (stderr, "Out of memory.\n"); return 1; -- 1.7.12.1