mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
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.
This commit is contained in:
parent
2a79d81211
commit
3863755f6d
4 changed files with 43 additions and 30 deletions
|
@ -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
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
Loading…
Reference in a new issue