From 20842c642ae37dfea14e6438fd463c8dac6c5cc4 Mon Sep 17 00:00:00 2001 From: Evan Miller Date: Tue, 12 Jan 2021 14:08:25 -0500 Subject: [PATCH] mdb-schema: Exit with code 1 if the requested table is not found --- include/mdbtools.h | 2 +- src/libmdb/backend.c | 5 ++++- src/util/mdb-schema.c | 9 +++++++-- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/include/mdbtools.h b/include/mdbtools.h index 6999cfc..70f088b 100644 --- a/include/mdbtools.h +++ b/include/mdbtools.h @@ -559,7 +559,7 @@ void mdb_register_backend(MdbHandle *mdb, char *backend_name, guint32 capabiliti const char *table_comment_statement, const char *per_table_comment_statement, gchar* (*quote_schema_name)(const gchar*, const gchar*)); int mdb_set_default_backend(MdbHandle *mdb, const char *backend_name); -void mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options); +int mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options); void mdb_print_col(FILE *outfile, gchar *col_val, int quote_text, int col_type, int bin_len, char *quote_char, char *escape_char, int flags); /* sargs.c */ diff --git a/src/libmdb/backend.c b/src/libmdb/backend.c index dae0ab6..8a3cf04 100644 --- a/src/libmdb/backend.c +++ b/src/libmdb/backend.c @@ -947,13 +947,14 @@ generate_table_schema(FILE *outfile, MdbCatalogEntry *entry, char *dbnamespace, } -void +int mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace, guint32 export_options) { unsigned int i; char *the_relation; MdbCatalogEntry *entry; const char *charset; + int success = (tabname == NULL); /* clear unsupported options */ export_options &= mdb->default_backend->capabilities; @@ -981,6 +982,7 @@ mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace if ((tabname && !strcmp(entry->object_name, tabname)) || (!tabname && mdb_is_user_table(entry))) { generate_table_schema(outfile, entry, dbnamespace, export_options); + success = 1; } } } @@ -1000,6 +1002,7 @@ mdb_print_schema(MdbHandle *mdb, FILE *outfile, char *tabname, char *dbnamespace } while ((the_relation=mdb_get_relationships(mdb, dbnamespace, tabname)) != NULL); } } + return success; } #define MDB_BINEXPORT_MASK 0x0F diff --git a/src/util/mdb-schema.c b/src/util/mdb-schema.c index c62c2e3..db332ce 100644 --- a/src/util/mdb-schema.c +++ b/src/util/mdb-schema.c @@ -33,6 +33,7 @@ main (int argc, char **argv) int opt_comments = MDB_SHEXP_DEFAULT & MDB_SHEXP_COMMENTS; int opt_indexes = MDB_SHEXP_DEFAULT & MDB_SHEXP_INDEXES; int opt_relations = MDB_SHEXP_DEFAULT & MDB_SHEXP_RELATIONS; + int success = 0; GOptionEntry entries[] = { { "table", 'T', 0, G_OPTION_ARG_STRING, &tabname, "Only create schema for named table", "table"}, @@ -107,13 +108,17 @@ main (int argc, char **argv) export_options |= MDB_SHEXP_INDEXES; if (opt_relations) export_options |= MDB_SHEXP_RELATIONS; - mdb_print_schema(mdb, stdout, tabname, namespace, export_options); + + success = mdb_print_schema(mdb, stdout, tabname, namespace, export_options); + if (tabname && !success) { + fprintf(stderr, "Error: No table named \"%s\" found in the database\n", tabname); + } mdb_close (mdb); g_option_context_free(opt_context); g_free(namespace); g_free(tabname); - return 0; + return !success; }