cli: search: Convert ctx. to ctx->

In the next commit, notmuch_search_command will be refactored to
several smaller functions. In order to simplify the next commit to
verbatim move of several lines to new functions with search_context_t*
argument, we convert all references to this structure to pointer
dereferences. To do so we rename the context variable and use the
original name ctx as the pointer to the renamed structure.
This commit is contained in:
Michal Sojka 2014-11-05 01:25:52 +01:00 committed by David Bremner
parent 33f9109fd3
commit 5e16b94a23

View file

@ -474,7 +474,7 @@ do_search_tags (const search_context_t *ctx)
int int
notmuch_search_command (notmuch_config_t *config, int argc, char *argv[]) notmuch_search_command (notmuch_config_t *config, int argc, char *argv[])
{ {
search_context_t ctx = { search_context_t search_context = {
.format_sel = NOTMUCH_FORMAT_TEXT, .format_sel = NOTMUCH_FORMAT_TEXT,
.exclude = NOTMUCH_EXCLUDE_TRUE, .exclude = NOTMUCH_EXCLUDE_TRUE,
.sort = NOTMUCH_SORT_NEWEST_FIRST, .sort = NOTMUCH_SORT_NEWEST_FIRST,
@ -483,23 +483,24 @@ notmuch_search_command (notmuch_config_t *config, int argc, char *argv[])
.limit = -1, /* unlimited */ .limit = -1, /* unlimited */
.dupe = -1, .dupe = -1,
}; };
search_context_t *ctx = &search_context;
char *query_str; char *query_str;
int opt_index, ret; int opt_index, ret;
unsigned int i; unsigned int i;
notmuch_opt_desc_t options[] = { notmuch_opt_desc_t options[] = {
{ NOTMUCH_OPT_KEYWORD, &ctx.sort, "sort", 's', { NOTMUCH_OPT_KEYWORD, &ctx->sort, "sort", 's',
(notmuch_keyword_t []){ { "oldest-first", NOTMUCH_SORT_OLDEST_FIRST }, (notmuch_keyword_t []){ { "oldest-first", NOTMUCH_SORT_OLDEST_FIRST },
{ "newest-first", NOTMUCH_SORT_NEWEST_FIRST }, { "newest-first", NOTMUCH_SORT_NEWEST_FIRST },
{ 0, 0 } } }, { 0, 0 } } },
{ NOTMUCH_OPT_KEYWORD, &ctx.format_sel, "format", 'f', { NOTMUCH_OPT_KEYWORD, &ctx->format_sel, "format", 'f',
(notmuch_keyword_t []){ { "json", NOTMUCH_FORMAT_JSON }, (notmuch_keyword_t []){ { "json", NOTMUCH_FORMAT_JSON },
{ "sexp", NOTMUCH_FORMAT_SEXP }, { "sexp", NOTMUCH_FORMAT_SEXP },
{ "text", NOTMUCH_FORMAT_TEXT }, { "text", NOTMUCH_FORMAT_TEXT },
{ "text0", NOTMUCH_FORMAT_TEXT0 }, { "text0", NOTMUCH_FORMAT_TEXT0 },
{ 0, 0 } } }, { 0, 0 } } },
{ NOTMUCH_OPT_INT, &notmuch_format_version, "format-version", 0, 0 }, { NOTMUCH_OPT_INT, &notmuch_format_version, "format-version", 0, 0 },
{ NOTMUCH_OPT_KEYWORD_FLAGS, &ctx.output, "output", 'o', { NOTMUCH_OPT_KEYWORD_FLAGS, &ctx->output, "output", 'o',
(notmuch_keyword_t []){ { "summary", OUTPUT_SUMMARY }, (notmuch_keyword_t []){ { "summary", OUTPUT_SUMMARY },
{ "threads", OUTPUT_THREADS }, { "threads", OUTPUT_THREADS },
{ "messages", OUTPUT_MESSAGES }, { "messages", OUTPUT_MESSAGES },
@ -508,15 +509,15 @@ notmuch_search_command (notmuch_config_t *config, int argc, char *argv[])
{ "files", OUTPUT_FILES }, { "files", OUTPUT_FILES },
{ "tags", OUTPUT_TAGS }, { "tags", OUTPUT_TAGS },
{ 0, 0 } } }, { 0, 0 } } },
{ NOTMUCH_OPT_KEYWORD, &ctx.exclude, "exclude", 'x', { NOTMUCH_OPT_KEYWORD, &ctx->exclude, "exclude", 'x',
(notmuch_keyword_t []){ { "true", NOTMUCH_EXCLUDE_TRUE }, (notmuch_keyword_t []){ { "true", NOTMUCH_EXCLUDE_TRUE },
{ "false", NOTMUCH_EXCLUDE_FALSE }, { "false", NOTMUCH_EXCLUDE_FALSE },
{ "flag", NOTMUCH_EXCLUDE_FLAG }, { "flag", NOTMUCH_EXCLUDE_FLAG },
{ "all", NOTMUCH_EXCLUDE_ALL }, { "all", NOTMUCH_EXCLUDE_ALL },
{ 0, 0 } } }, { 0, 0 } } },
{ NOTMUCH_OPT_INT, &ctx.offset, "offset", 'O', 0 }, { NOTMUCH_OPT_INT, &ctx->offset, "offset", 'O', 0 },
{ NOTMUCH_OPT_INT, &ctx.limit, "limit", 'L', 0 }, { NOTMUCH_OPT_INT, &ctx->limit, "limit", 'L', 0 },
{ NOTMUCH_OPT_INT, &ctx.dupe, "duplicate", 'D', 0 }, { NOTMUCH_OPT_INT, &ctx->dupe, "duplicate", 'D', 0 },
{ 0, 0, 0, 0, 0 } { 0, 0, 0, 0, 0 }
}; };
@ -524,31 +525,31 @@ notmuch_search_command (notmuch_config_t *config, int argc, char *argv[])
if (opt_index < 0) if (opt_index < 0)
return EXIT_FAILURE; return EXIT_FAILURE;
if (! ctx.output) if (! ctx->output)
ctx.output = OUTPUT_SUMMARY; ctx->output = OUTPUT_SUMMARY;
if (ctx.output != OUTPUT_FILES && ctx.output != OUTPUT_MESSAGES && if (ctx->output != OUTPUT_FILES && ctx->output != OUTPUT_MESSAGES &&
ctx.dupe != -1) { ctx->dupe != -1) {
fprintf (stderr, "Error: --duplicate=N is only supported with --output=files and --output=messages.\n"); fprintf (stderr, "Error: --duplicate=N is only supported with --output=files and --output=messages.\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
switch (ctx.format_sel) { switch (ctx->format_sel) {
case NOTMUCH_FORMAT_TEXT: case NOTMUCH_FORMAT_TEXT:
ctx.format = sprinter_text_create (config, stdout); ctx->format = sprinter_text_create (config, stdout);
break; break;
case NOTMUCH_FORMAT_TEXT0: case NOTMUCH_FORMAT_TEXT0:
if (ctx.output == OUTPUT_SUMMARY) { if (ctx->output == OUTPUT_SUMMARY) {
fprintf (stderr, "Error: --format=text0 is not compatible with --output=summary.\n"); fprintf (stderr, "Error: --format=text0 is not compatible with --output=summary.\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ctx.format = sprinter_text0_create (config, stdout); ctx->format = sprinter_text0_create (config, stdout);
break; break;
case NOTMUCH_FORMAT_JSON: case NOTMUCH_FORMAT_JSON:
ctx.format = sprinter_json_create (config, stdout); ctx->format = sprinter_json_create (config, stdout);
break; break;
case NOTMUCH_FORMAT_SEXP: case NOTMUCH_FORMAT_SEXP:
ctx.format = sprinter_sexp_create (config, stdout); ctx->format = sprinter_sexp_create (config, stdout);
break; break;
default: default:
/* this should never happen */ /* this should never happen */
@ -558,10 +559,10 @@ notmuch_search_command (notmuch_config_t *config, int argc, char *argv[])
notmuch_exit_if_unsupported_format (); notmuch_exit_if_unsupported_format ();
if (notmuch_database_open (notmuch_config_get_database_path (config), if (notmuch_database_open (notmuch_config_get_database_path (config),
NOTMUCH_DATABASE_MODE_READ_ONLY, &ctx.notmuch)) NOTMUCH_DATABASE_MODE_READ_ONLY, &ctx->notmuch))
return EXIT_FAILURE; return EXIT_FAILURE;
query_str = query_string_from_args (ctx.notmuch, argc-opt_index, argv+opt_index); query_str = query_string_from_args (ctx->notmuch, argc-opt_index, argv+opt_index);
if (query_str == NULL) { if (query_str == NULL) {
fprintf (stderr, "Out of memory.\n"); fprintf (stderr, "Out of memory.\n");
return EXIT_FAILURE; return EXIT_FAILURE;
@ -571,51 +572,51 @@ notmuch_search_command (notmuch_config_t *config, int argc, char *argv[])
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ctx.query = notmuch_query_create (ctx.notmuch, query_str); ctx->query = notmuch_query_create (ctx->notmuch, query_str);
if (ctx.query == NULL) { if (ctx->query == NULL) {
fprintf (stderr, "Out of memory\n"); fprintf (stderr, "Out of memory\n");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
notmuch_query_set_sort (ctx.query, ctx.sort); notmuch_query_set_sort (ctx->query, ctx->sort);
if (ctx.exclude == NOTMUCH_EXCLUDE_FLAG && ctx.output != OUTPUT_SUMMARY) { if (ctx->exclude == NOTMUCH_EXCLUDE_FLAG && ctx->output != OUTPUT_SUMMARY) {
/* If we are not doing summary output there is nowhere to /* If we are not doing summary output there is nowhere to
* print the excluded flag so fall back on including the * print the excluded flag so fall back on including the
* excluded messages. */ * excluded messages. */
fprintf (stderr, "Warning: this output format cannot flag excluded messages.\n"); fprintf (stderr, "Warning: this output format cannot flag excluded messages.\n");
ctx.exclude = NOTMUCH_EXCLUDE_FALSE; ctx->exclude = NOTMUCH_EXCLUDE_FALSE;
} }
if (ctx.exclude != NOTMUCH_EXCLUDE_FALSE) { if (ctx->exclude != NOTMUCH_EXCLUDE_FALSE) {
const char **search_exclude_tags; const char **search_exclude_tags;
size_t search_exclude_tags_length; size_t search_exclude_tags_length;
search_exclude_tags = notmuch_config_get_search_exclude_tags search_exclude_tags = notmuch_config_get_search_exclude_tags
(config, &search_exclude_tags_length); (config, &search_exclude_tags_length);
for (i = 0; i < search_exclude_tags_length; i++) for (i = 0; i < search_exclude_tags_length; i++)
notmuch_query_add_tag_exclude (ctx.query, search_exclude_tags[i]); notmuch_query_add_tag_exclude (ctx->query, search_exclude_tags[i]);
notmuch_query_set_omit_excluded (ctx.query, ctx.exclude); notmuch_query_set_omit_excluded (ctx->query, ctx->exclude);
} }
if (ctx.output == OUTPUT_SUMMARY || if (ctx->output == OUTPUT_SUMMARY ||
ctx.output == OUTPUT_THREADS) ctx->output == OUTPUT_THREADS)
ret = do_search_threads (&ctx); ret = do_search_threads (ctx);
else if (ctx.output == OUTPUT_MESSAGES || else if (ctx->output == OUTPUT_MESSAGES ||
ctx.output == OUTPUT_FILES || ctx->output == OUTPUT_FILES ||
(ctx.output & OUTPUT_ADDRESS_FLAGS && !(ctx.output & ~OUTPUT_ADDRESS_FLAGS))) (ctx->output & OUTPUT_ADDRESS_FLAGS && !(ctx->output & ~OUTPUT_ADDRESS_FLAGS)))
ret = do_search_messages (&ctx); ret = do_search_messages (ctx);
else if (ctx.output == OUTPUT_TAGS) else if (ctx->output == OUTPUT_TAGS)
ret = do_search_tags (&ctx); ret = do_search_tags (ctx);
else { else {
fprintf (stderr, "Error: the combination of outputs is not supported.\n"); fprintf (stderr, "Error: the combination of outputs is not supported.\n");
ret = 1; ret = 1;
} }
notmuch_query_destroy (ctx.query); notmuch_query_destroy (ctx->query);
notmuch_database_destroy (ctx.notmuch); notmuch_database_destroy (ctx->notmuch);
talloc_free (ctx.format); talloc_free (ctx->format);
return ret ? EXIT_FAILURE : EXIT_SUCCESS; return ret ? EXIT_FAILURE : EXIT_SUCCESS;
} }