From 3863755f6d9f3e7666c1484822384c036a4426c3 Mon Sep 17 00:00:00 2001 From: Jani Nikula Date: Tue, 25 Mar 2014 19:48:57 +0200 Subject: [PATCH] cli: abstract dump file open from the dump command Also expose the dump function to the rest of notmuch. No functional changes, except for slight improvement in error handling. --- dump-restore-private.h | 13 ------------ notmuch-client.h | 11 ++++++++++ notmuch-dump.c | 47 ++++++++++++++++++++++++++++-------------- notmuch-restore.c | 2 +- 4 files changed, 43 insertions(+), 30 deletions(-) delete mode 100644 dump-restore-private.h diff --git a/dump-restore-private.h b/dump-restore-private.h deleted file mode 100644 index 896a0043..00000000 --- a/dump-restore-private.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef DUMP_RESTORE_PRIVATE_H -#define DUMP_RESTORE_PRIVATE_H - -#include "hex-escape.h" -#include "command-line-arguments.h" - -typedef enum dump_formats { - DUMP_FORMAT_AUTO, - DUMP_FORMAT_BATCH_TAG, - DUMP_FORMAT_SUP -} dump_format_t; - -#endif diff --git a/notmuch-client.h b/notmuch-client.h index 278b498a..d1106482 100644 --- a/notmuch-client.h +++ b/notmuch-client.h @@ -441,5 +441,16 @@ mime_node_child (mime_node_t *parent, int child); mime_node_t * mime_node_seek_dfs (mime_node_t *node, int n); +typedef enum dump_formats { + DUMP_FORMAT_AUTO, + DUMP_FORMAT_BATCH_TAG, + DUMP_FORMAT_SUP +} dump_format_t; + +int +notmuch_database_dump (notmuch_database_t *notmuch, + const char *output_file_name, + const char *query_str, dump_format_t output_format); + #include "command-line-arguments.h" #endif diff --git a/notmuch-dump.c b/notmuch-dump.c index 179e2e97..21702d79 100644 --- a/notmuch-dump.c +++ b/notmuch-dump.c @@ -19,7 +19,7 @@ */ #include "notmuch-client.h" -#include "dump-restore-private.h" +#include "hex-escape.h" #include "string-util.h" static int @@ -115,11 +115,38 @@ database_dump_file (notmuch_database_t *notmuch, FILE *output, return EXIT_SUCCESS; } +/* Dump database into output_file_name if it's non-NULL, stdout + * otherwise. + */ +int +notmuch_database_dump (notmuch_database_t *notmuch, + const char *output_file_name, + const char *query_str, dump_format_t output_format) +{ + FILE *output = stdout; + int ret; + + if (output_file_name) { + output = fopen (output_file_name, "w"); + if (output == NULL) { + fprintf (stderr, "Error opening %s for writing: %s\n", + output_file_name, strerror (errno)); + return EXIT_FAILURE; + } + } + + ret = database_dump_file (notmuch, output, query_str, output_format); + + if (output != stdout) + fclose (output); + + return ret; +} + int notmuch_dump_command (notmuch_config_t *config, int argc, char *argv[]) { notmuch_database_t *notmuch; - FILE *output = stdout; const char *query_str = NULL; int ret; @@ -145,16 +172,6 @@ notmuch_dump_command (notmuch_config_t *config, int argc, char *argv[]) if (opt_index < 0) return EXIT_FAILURE; - if (output_file_name) { - output = fopen (output_file_name, "w"); - if (output == NULL) { - fprintf (stderr, "Error opening %s for writing: %s\n", - output_file_name, strerror (errno)); - return EXIT_FAILURE; - } - } - - if (opt_index < argc) { query_str = query_string_from_args (notmuch, argc - opt_index, argv + opt_index); if (query_str == NULL) { @@ -163,10 +180,8 @@ notmuch_dump_command (notmuch_config_t *config, int argc, char *argv[]) } } - ret = database_dump_file (notmuch, output, query_str, output_format); - - if (output != stdout) - fclose (output); + ret = notmuch_database_dump (notmuch, output_file_name, query_str, + output_format); notmuch_database_destroy (notmuch); diff --git a/notmuch-restore.c b/notmuch-restore.c index f23ab983..c54d5132 100644 --- a/notmuch-restore.c +++ b/notmuch-restore.c @@ -19,7 +19,7 @@ */ #include "notmuch-client.h" -#include "dump-restore-private.h" +#include "hex-escape.h" #include "tag-util.h" #include "string-util.h" -- 2.26.2