summaryrefslogtreecommitdiff
path: root/src/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'src/utilities')
-rw-r--r--src/utilities/util.h2
-rw-r--r--src/utilities/util_alter.c9
-rw-r--r--src/utilities/util_compact.c14
-rw-r--r--src/utilities/util_create.c12
-rw-r--r--src/utilities/util_drop.c10
-rw-r--r--src/utilities/util_dump.c26
-rw-r--r--src/utilities/util_list.c21
-rw-r--r--src/utilities/util_load.c2
-rw-r--r--src/utilities/util_load_json.c2
-rw-r--r--src/utilities/util_loadtext.c13
-rw-r--r--src/utilities/util_main.c4
-rw-r--r--src/utilities/util_printlog.c14
-rw-r--r--src/utilities/util_read.c19
-rw-r--r--src/utilities/util_rebalance.c30
-rw-r--r--src/utilities/util_rename.c15
-rw-r--r--src/utilities/util_salvage.c30
-rw-r--r--src/utilities/util_stat.c6
-rw-r--r--src/utilities/util_truncate.c11
-rw-r--r--src/utilities/util_upgrade.c30
-rw-r--r--src/utilities/util_verify.c34
-rw-r--r--src/utilities/util_write.c20
21 files changed, 155 insertions, 169 deletions
diff --git a/src/utilities/util.h b/src/utilities/util.h
index cf12d7d4aa6..93a96d44219 100644
--- a/src/utilities/util.h
+++ b/src/utilities/util.h
@@ -40,7 +40,6 @@ int util_flush(WT_SESSION *, const char *);
int util_list(WT_SESSION *, int, char *[]);
int util_load(WT_SESSION *, int, char *[]);
int util_loadtext(WT_SESSION *, int, char *[]);
-char *util_name(WT_SESSION *, const char *, const char *);
int util_printlog(WT_SESSION *, int, char *[]);
int util_read(WT_SESSION *, int, char *[]);
int util_read_line(WT_SESSION *, ULINE *, bool, bool *);
@@ -51,5 +50,6 @@ int util_stat(WT_SESSION *, int, char *[]);
int util_str2recno(WT_SESSION *, const char *p, uint64_t *recnop);
int util_truncate(WT_SESSION *, int, char *[]);
int util_upgrade(WT_SESSION *, int, char *[]);
+char *util_uri(WT_SESSION *, const char *, const char *);
int util_verify(WT_SESSION *, int, char *[]);
int util_write(WT_SESSION *, int, char *[]);
diff --git a/src/utilities/util_alter.c b/src/utilities/util_alter.c
index d228c15cd48..ef01a1ed826 100644
--- a/src/utilities/util_alter.c
+++ b/src/utilities/util_alter.c
@@ -34,9 +34,12 @@ util_alter(WT_SESSION *session, int argc, char *argv[])
for (configp = argv;
configp != NULL && *configp != NULL; configp += 2)
if ((ret = session->alter(
- session, configp[0], configp[1])) != 0)
- break;
- return (ret);
+ session, configp[0], configp[1])) != 0) {
+ (void)util_err(session, ret,
+ "session.alter: %s, %s", configp[0], configp[1]);
+ return (1);
+ }
+ return (0);
}
static int
diff --git a/src/utilities/util_compact.c b/src/utilities/util_compact.c
index c114eb207fa..e469b4dce6e 100644
--- a/src/utilities/util_compact.c
+++ b/src/utilities/util_compact.c
@@ -30,21 +30,13 @@ util_compact(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the table name. */
if (argc != 1)
return (usage());
- if ((uri = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- if ((ret = session->compact(session, uri, NULL)) != 0) {
- fprintf(stderr, "%s: compact(%s): %s\n",
- progname, uri, session->strerror(session, ret));
- goto err;
- }
-
- if (0) {
-err: ret = 1;
- }
+ if ((ret = session->compact(session, uri, NULL)) != 0)
+ (void)util_err(session, ret, "session.compact: %s", uri);
free(uri);
-
return (ret);
}
diff --git a/src/utilities/util_create.c b/src/utilities/util_create.c
index 4e609736f2d..7c22a67792b 100644
--- a/src/utilities/util_create.c
+++ b/src/utilities/util_create.c
@@ -15,9 +15,9 @@ util_create(WT_SESSION *session, int argc, char *argv[])
{
WT_DECL_RET;
int ch;
- const char *config, *uri;
+ char *config, *uri;
- config = NULL;
+ config = uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "c:")) != EOF)
switch (ch) {
case 'c': /* command-line configuration */
@@ -35,12 +35,14 @@ util_create(WT_SESSION *session, int argc, char *argv[])
if (argc != 1)
return (usage());
- if ((uri = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
if ((ret = session->create(session, uri, config)) != 0)
- return (util_err(session, ret, "%s: session.create", uri));
- return (0);
+ (void)util_err(session, ret, "session.create: %s", uri);
+
+ free(uri);
+ return (ret);
}
static int
diff --git a/src/utilities/util_drop.c b/src/utilities/util_drop.c
index ba41445dfb6..456005d445d 100644
--- a/src/utilities/util_drop.c
+++ b/src/utilities/util_drop.c
@@ -15,8 +15,9 @@ util_drop(WT_SESSION *session, int argc, char *argv[])
{
WT_DECL_RET;
int ch;
- char *name;
+ char *uri;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "")) != EOF)
switch (ch) {
case '?':
@@ -30,12 +31,13 @@ util_drop(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the uri. */
if (argc != 1)
return (usage());
- if ((name = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- ret = session->drop(session, name, "force");
+ if ((ret = session->drop(session, uri, "force")) != 0)
+ (void)util_err(session, ret, "session.drop: %s", uri);
- free(name);
+ free(uri);
return (ret);
}
diff --git a/src/utilities/util_dump.c b/src/utilities/util_dump.c
index 3f8b4a49dfe..cded40a8b45 100644
--- a/src/utilities/util_dump.c
+++ b/src/utilities/util_dump.c
@@ -37,10 +37,10 @@ util_dump(WT_SESSION *session, int argc, char *argv[])
size_t len;
int ch, i;
bool hex, json, reverse;
- char *checkpoint, *config, *name, *p, *simplename;
+ char *checkpoint, *config, *p, *simpleuri, *uri;
hex = json = reverse = false;
- checkpoint = config = name = simplename = NULL;
+ checkpoint = config = simpleuri = uri = NULL;
cursor = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "c:f:jrx")) != EOF)
switch (ch) {
@@ -89,11 +89,11 @@ util_dump(WT_SESSION *session, int argc, char *argv[])
if (json && i > 0)
if (dump_json_separator(session) != 0)
goto err;
- free(name);
- free(simplename);
- name = simplename = NULL;
+ free(uri);
+ free(simpleuri);
+ uri = simpleuri = NULL;
- if ((name = util_name(session, argv[i], "table")) == NULL)
+ if ((uri = util_uri(session, argv[i], "table")) == NULL)
goto err;
len =
@@ -113,19 +113,19 @@ util_dump(WT_SESSION *session, int argc, char *argv[])
(void)strcat(config, json ? "dump=json" :
(hex ? "dump=hex" : "dump=print"));
if ((ret = session->open_cursor(
- session, name, NULL, config, &cursor)) != 0) {
+ session, uri, NULL, config, &cursor)) != 0) {
fprintf(stderr, "%s: cursor open(%s) failed: %s\n",
- progname, name, session->strerror(session, ret));
+ progname, uri, session->strerror(session, ret));
goto err;
}
- if ((simplename = strdup(name)) == NULL) {
+ if ((simpleuri = strdup(uri)) == NULL) {
(void)util_err(session, errno, NULL);
goto err;
}
- if ((p = strchr(simplename, '(')) != NULL)
+ if ((p = strchr(simpleuri, '(')) != NULL)
*p = '\0';
- if (dump_config(session, simplename, cursor, hex, json) != 0)
+ if (dump_config(session, simpleuri, cursor, hex, json) != 0)
goto err;
if (dump_record(cursor, reverse, json) != 0)
@@ -148,8 +148,8 @@ err: ret = 1;
}
free(config);
- free(name);
- free(simplename);
+ free(uri);
+ free(simpleuri);
if (cursor != NULL && (ret = cursor->close(cursor)) != 0) {
(void)util_err(session, ret, NULL);
ret = 1;
diff --git a/src/utilities/util_list.c b/src/utilities/util_list.c
index e91dbfce05b..f19ba4d1f97 100644
--- a/src/utilities/util_list.c
+++ b/src/utilities/util_list.c
@@ -19,10 +19,10 @@ util_list(WT_SESSION *session, int argc, char *argv[])
WT_DECL_RET;
int ch;
bool cflag, vflag;
- char *name;
+ char *uri;
cflag = vflag = false;
- name = NULL;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "cv")) != EOF)
switch (ch) {
case 'c':
@@ -42,17 +42,16 @@ util_list(WT_SESSION *session, int argc, char *argv[])
case 0:
break;
case 1:
- if ((name = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
break;
default:
return (usage());
}
- ret = list_print(session, name, cflag, vflag);
-
- free(name);
+ ret = list_print(session, uri, cflag, vflag);
+ free(uri);
return (ret);
}
@@ -99,7 +98,7 @@ list_get_allocsize(WT_SESSION *session, const char *key, size_t *allocsize)
* List the high-level objects in the database.
*/
static int
-list_print(WT_SESSION *session, const char *name, bool cflag, bool vflag)
+list_print(WT_SESSION *session, const char *uri, bool cflag, bool vflag)
{
WT_CURSOR *cursor;
WT_DECL_RET;
@@ -120,7 +119,7 @@ list_print(WT_SESSION *session, const char *name, bool cflag, bool vflag)
ret, "%s: WT_SESSION.open_cursor", WT_METADATA_URI));
}
- found = name == NULL;
+ found = uri == NULL;
while ((ret = cursor->next(cursor)) == 0) {
/* Get the key. */
if ((ret = cursor->get_key(cursor, &key)) != 0)
@@ -129,8 +128,8 @@ list_print(WT_SESSION *session, const char *name, bool cflag, bool vflag)
/*
* If a name is specified, only show objects that match.
*/
- if (name != NULL) {
- if (!WT_PREFIX_MATCH(key, name))
+ if (uri != NULL) {
+ if (!WT_PREFIX_MATCH(key, uri))
continue;
found = true;
}
@@ -161,7 +160,7 @@ list_print(WT_SESSION *session, const char *name, bool cflag, bool vflag)
if (ret != WT_NOTFOUND)
return (util_cerr(cursor, "next", ret));
if (!found) {
- fprintf(stderr, "%s: %s: not found\n", progname, name);
+ fprintf(stderr, "%s: %s: not found\n", progname, uri);
return (1);
}
diff --git a/src/utilities/util_load.c b/src/utilities/util_load.c
index ac18df80851..ca77643eb49 100644
--- a/src/utilities/util_load.c
+++ b/src/utilities/util_load.c
@@ -126,7 +126,7 @@ load_dump(WT_SESSION *session)
append ? ",append" : "", no_overwrite ? ",overwrite=false" : "");
if ((ret = session->open_cursor(
session, uri, NULL, config, &cursor)) != 0) {
- ret = util_err(session, ret, "%s: session.open", uri);
+ ret = util_err(session, ret, "%s: session.open_cursor", uri);
goto err;
}
diff --git a/src/utilities/util_load_json.c b/src/utilities/util_load_json.c
index 020a4ed9ba9..1189d49a483 100644
--- a/src/utilities/util_load_json.c
+++ b/src/utilities/util_load_json.c
@@ -242,7 +242,7 @@ json_data(WT_SESSION *session,
LF_ISSET(LOAD_JSON_NO_OVERWRITE) ? ",overwrite=false" : "");
if ((ret = session->open_cursor(
session, uri, NULL, config, &cursor)) != 0) {
- ret = util_err(session, ret, "%s: session.open", uri);
+ ret = util_err(session, ret, "%s: session.open_cursor", uri);
goto err;
}
keyformat = cursor->key_format;
diff --git a/src/utilities/util_loadtext.c b/src/utilities/util_loadtext.c
index f9c5b6e9a1f..7602d43f8c9 100644
--- a/src/utilities/util_loadtext.c
+++ b/src/utilities/util_loadtext.c
@@ -15,9 +15,11 @@ static int usage(void);
int
util_loadtext(WT_SESSION *session, int argc, char *argv[])
{
+ WT_DECL_RET;
int ch;
- const char *uri;
+ char *uri;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "f:")) != EOF)
switch (ch) {
case 'f': /* input file */
@@ -35,10 +37,13 @@ util_loadtext(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the uri. */
if (argc != 1)
return (usage());
- if ((uri = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- return (text(session, uri));
+ ret = text(session, uri);
+
+ free(uri);
+ return (ret);
}
/*
@@ -61,7 +66,7 @@ text(WT_SESSION *session, const char *uri)
*/
if ((ret = session->open_cursor(
session, uri, NULL, "append,overwrite", &cursor)) != 0)
- return (util_err(session, ret, "%s: session.open", uri));
+ return (util_err(session, ret, "%s: session.open_cursor", uri));
/*
* We're about to load strings, make sure the formats match.
diff --git a/src/utilities/util_main.c b/src/utilities/util_main.c
index 001a66d6d9e..7157f0d90fe 100644
--- a/src/utilities/util_main.c
+++ b/src/utilities/util_main.c
@@ -285,11 +285,11 @@ usage(void)
}
/*
- * util_name --
+ * util_uri --
* Build a name.
*/
char *
-util_name(WT_SESSION *session, const char *s, const char *type)
+util_uri(WT_SESSION *session, const char *s, const char *type)
{
size_t len;
char *name;
diff --git a/src/utilities/util_printlog.c b/src/utilities/util_printlog.c
index e7fa2134934..5f3ed43905b 100644
--- a/src/utilities/util_printlog.c
+++ b/src/utilities/util_printlog.c
@@ -14,8 +14,8 @@ int
util_printlog(WT_SESSION *session, int argc, char *argv[])
{
WT_DECL_RET;
- int ch;
uint32_t flags;
+ int ch;
flags = 0;
while ((ch = __wt_getopt(progname, argc, argv, "f:x")) != EOF)
@@ -41,17 +41,9 @@ util_printlog(WT_SESSION *session, int argc, char *argv[])
if (argc != 0)
return (usage());
- ret = __wt_txn_printlog(session, flags);
-
- if (ret != 0) {
- fprintf(stderr, "%s: printlog failed: %s\n",
- progname, session->strerror(session, ret));
- goto err;
- }
+ if ((ret = __wt_txn_printlog(session, flags)) != 0)
+ (void)util_err(session, ret, "printlog");
- if (0) {
-err: ret = 1;
- }
return (ret);
}
diff --git a/src/utilities/util_read.c b/src/utilities/util_read.c
index 2e766377aa9..393949b6a1c 100644
--- a/src/utilities/util_read.c
+++ b/src/utilities/util_read.c
@@ -18,8 +18,9 @@ util_read(WT_SESSION *session, int argc, char *argv[])
uint64_t recno;
int ch;
bool rkey, rval;
- const char *uri, *value;
+ char *uri, *value;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "")) != EOF)
switch (ch) {
case '?':
@@ -32,13 +33,19 @@ util_read(WT_SESSION *session, int argc, char *argv[])
/* The remaining arguments are a uri followed by a list of keys. */
if (argc < 2)
return (usage());
- if ((uri = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- /* Open the object. */
- if ((ret = session->open_cursor(
- session, uri, NULL, NULL, &cursor)) != 0)
- return (util_err(session, ret, "%s: session.open", uri));
+ /*
+ * Open the object; free allocated memory immediately to simplify
+ * future error handling.
+ */
+ if ((ret =
+ session->open_cursor(session, uri, NULL, NULL, &cursor)) != 0)
+ (void)util_err(session, ret, "%s: session.open_cursor", uri);
+ free(uri);
+ if (ret != 0)
+ return (ret);
/*
* A simple search only makes sense if the key format is a string or a
diff --git a/src/utilities/util_rebalance.c b/src/utilities/util_rebalance.c
index 45f161487e5..c188ea17d22 100644
--- a/src/utilities/util_rebalance.c
+++ b/src/utilities/util_rebalance.c
@@ -15,9 +15,9 @@ util_rebalance(WT_SESSION *session, int argc, char *argv[])
{
WT_DECL_RET;
int ch;
- char *name;
+ char *uri;
- name = NULL;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "")) != EOF)
switch (ch) {
case '?':
@@ -30,25 +30,21 @@ util_rebalance(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the table name. */
if (argc != 1)
return (usage());
- if ((name = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- if ((ret = session->rebalance(session, name, NULL)) != 0) {
- fprintf(stderr, "%s: rebalance(%s): %s\n",
- progname, name, session->strerror(session, ret));
- goto err;
+ if ((ret = session->rebalance(session, uri, NULL)) != 0)
+ (void)util_err(session, ret, "session.rebalance: %s", uri);
+ else {
+ /*
+ * Verbose configures a progress counter, move to the next
+ * line.
+ */
+ if (verbose)
+ printf("\n");
}
- /* Verbose configures a progress counter, move to the next line. */
- if (verbose)
- printf("\n");
-
- if (0) {
-err: ret = 1;
- }
-
- free(name);
-
+ free(uri);
return (ret);
}
diff --git a/src/utilities/util_rename.c b/src/utilities/util_rename.c
index aee299c6e63..bb2d40cd103 100644
--- a/src/utilities/util_rename.c
+++ b/src/utilities/util_rename.c
@@ -30,22 +30,15 @@ util_rename(WT_SESSION *session, int argc, char *argv[])
/* The remaining arguments are the object uri and new name. */
if (argc != 2)
return (usage());
- if ((uri = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
newuri = argv[1];
- if ((ret = session->rename(session, uri, newuri, NULL)) != 0) {
- fprintf(stderr, "%s: rename %s to %s: %s\n",
- progname, uri, newuri, session->strerror(session, ret));
- goto err;
- }
-
- if (0) {
-err: ret = 1;
- }
+ if ((ret = session->rename(session, uri, newuri, NULL)) != 0)
+ (void)util_err(
+ session, ret, "session.rename: %s, %s", uri, newuri);
free(uri);
-
return (ret);
}
diff --git a/src/utilities/util_salvage.c b/src/utilities/util_salvage.c
index 679d1074457..6cc2278b846 100644
--- a/src/utilities/util_salvage.c
+++ b/src/utilities/util_salvage.c
@@ -16,10 +16,10 @@ util_salvage(WT_SESSION *session, int argc, char *argv[])
WT_DECL_RET;
int ch;
const char *force;
- char *name;
+ char *uri;
force = NULL;
- name = NULL;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "F")) != EOF)
switch (ch) {
case 'F':
@@ -35,25 +35,21 @@ util_salvage(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the file name. */
if (argc != 1)
return (usage());
- if ((name = util_name(session, *argv, "file")) == NULL)
+ if ((uri = util_uri(session, *argv, "file")) == NULL)
return (1);
- if ((ret = session->salvage(session, name, force)) != 0) {
- fprintf(stderr, "%s: salvage(%s): %s\n",
- progname, name, session->strerror(session, ret));
- goto err;
+ if ((ret = session->salvage(session, uri, force)) != 0)
+ (void)util_err(session, ret, "session.salvage: %s", uri);
+ else {
+ /*
+ * Verbose configures a progress counter, move to the next
+ * line.
+ */
+ if (verbose)
+ printf("\n");
}
- /* Verbose configures a progress counter, move to the next line. */
- if (verbose)
- printf("\n");
-
- if (0) {
-err: ret = 1;
- }
-
- free(name);
-
+ free(uri);
return (ret);
}
diff --git a/src/utilities/util_stat.c b/src/utilities/util_stat.c
index 4376f559ceb..1b75d9ea8bf 100644
--- a/src/utilities/util_stat.c
+++ b/src/utilities/util_stat.c
@@ -55,7 +55,7 @@ util_stat(WT_SESSION *session, int argc, char *argv[])
objname = (char *)"";
break;
case 1:
- if ((objname = util_name(session, *argv, "table")) == NULL)
+ if ((objname = util_uri(session, *argv, "table")) == NULL)
return (1);
objname_free = true;
break;
@@ -82,8 +82,8 @@ util_stat(WT_SESSION *session, int argc, char *argv[])
(ret = cursor->next(cursor)) == 0 &&
(ret = cursor->get_value(cursor, &desc, &pval, NULL)) == 0)
if (printf("%s=%s\n", desc, pval) < 0) {
- ret = errno;
- break;
+ (void)util_err(session, errno, "printf");
+ goto err;
}
if (ret == WT_NOTFOUND)
ret = 0;
diff --git a/src/utilities/util_truncate.c b/src/utilities/util_truncate.c
index 9325c0d7e84..35de02345c8 100644
--- a/src/utilities/util_truncate.c
+++ b/src/utilities/util_truncate.c
@@ -15,8 +15,9 @@ util_truncate(WT_SESSION *session, int argc, char *argv[])
{
WT_DECL_RET;
int ch;
- char *name;
+ char *uri;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "")) != EOF)
switch (ch) {
case '?':
@@ -30,13 +31,13 @@ util_truncate(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the uri. */
if (argc != 1)
return (usage());
- if ((name = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- if ((ret = session->truncate(session, name, NULL, NULL, NULL)) != 0)
- return (util_err(session, ret, "%s: session.truncate", name));
+ if ((ret = session->truncate(session, uri, NULL, NULL, NULL)) != 0)
+ (void)util_err(session, ret, "session.truncate: %s", uri);
- free(name);
+ free(uri);
return (ret);
}
diff --git a/src/utilities/util_upgrade.c b/src/utilities/util_upgrade.c
index 63b23f28c16..f89bd46e133 100644
--- a/src/utilities/util_upgrade.c
+++ b/src/utilities/util_upgrade.c
@@ -15,9 +15,9 @@ util_upgrade(WT_SESSION *session, int argc, char *argv[])
{
WT_DECL_RET;
int ch;
- char *name;
+ char *uri;
- name = NULL;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "")) != EOF)
switch (ch) {
case '?':
@@ -30,25 +30,21 @@ util_upgrade(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the table name. */
if (argc != 1)
return (usage());
- if ((name = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- if ((ret = session->upgrade(session, name, NULL)) != 0) {
- fprintf(stderr, "%s: upgrade(%s): %s\n",
- progname, name, session->strerror(session, ret));
- goto err;
+ if ((ret = session->upgrade(session, uri, NULL)) != 0)
+ (void)util_err(session, ret, "session.upgrade: %s", uri);
+ else {
+ /*
+ * Verbose configures a progress counter, move to the next
+ * line.
+ */
+ if (verbose)
+ printf("\n");
}
- /* Verbose configures a progress counter, move to the next line. */
- if (verbose)
- printf("\n");
-
- if (0) {
-err: ret = 1;
- }
-
- free(name);
-
+ free(uri);
return (ret);
}
diff --git a/src/utilities/util_verify.c b/src/utilities/util_verify.c
index 82bdd780cd3..d0587fcfc8c 100644
--- a/src/utilities/util_verify.c
+++ b/src/utilities/util_verify.c
@@ -17,10 +17,10 @@ util_verify(WT_SESSION *session, int argc, char *argv[])
size_t size;
int ch;
bool dump_address, dump_blocks, dump_layout, dump_pages;
- char *config, *dump_offsets, *name;
+ char *config, *dump_offsets, *uri;
dump_address = dump_blocks = dump_layout = dump_pages = false;
- config = dump_offsets = name = NULL;
+ config = dump_offsets = uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "d:")) != EOF)
switch (ch) {
case 'd':
@@ -55,7 +55,7 @@ util_verify(WT_SESSION *session, int argc, char *argv[])
/* The remaining argument is the table name. */
if (argc != 1)
return (usage());
- if ((name = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
/* Build the configuration string as necessary. */
@@ -69,7 +69,7 @@ util_verify(WT_SESSION *session, int argc, char *argv[])
strlen("dump_offsets[],") +
(dump_offsets == NULL ? 0 : strlen(dump_offsets)) + 20;
if ((config = malloc(size)) == NULL) {
- (void)util_err(session, errno, NULL);
+ ret = util_err(session, errno, NULL);
goto err;
}
snprintf(config, size,
@@ -82,23 +82,19 @@ util_verify(WT_SESSION *session, int argc, char *argv[])
dump_offsets != NULL ? "]," : "",
dump_pages ? "dump_pages," : "");
}
- if ((ret = session->verify(session, name, config)) != 0) {
- fprintf(stderr, "%s: verify(%s): %s\n",
- progname, name, session->strerror(session, ret));
- goto err;
+ if ((ret = session->verify(session, uri, config)) != 0)
+ (void)util_err(session, ret, "session.verify: %s", uri);
+ else {
+ /*
+ * Verbose configures a progress counter, move to the next
+ * line.
+ */
+ if (verbose)
+ printf("\n");
}
- /* Verbose configures a progress counter, move to the next line. */
- if (verbose)
- printf("\n");
-
- if (0) {
-err: ret = 1;
- }
-
- free(config);
- free(name);
-
+err: free(config);
+ free(uri);
return (ret);
}
diff --git a/src/utilities/util_write.c b/src/utilities/util_write.c
index 7d9bce02b36..b931fad064d 100644
--- a/src/utilities/util_write.c
+++ b/src/utilities/util_write.c
@@ -18,10 +18,10 @@ util_write(WT_SESSION *session, int argc, char *argv[])
uint64_t recno;
int ch;
bool append, overwrite, rkey;
- const char *uri;
- char config[100];
+ char *uri, config[100];
append = overwrite = false;
+ uri = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "ao")) != EOF)
switch (ch) {
case 'a':
@@ -47,15 +47,21 @@ util_write(WT_SESSION *session, int argc, char *argv[])
} else
if (argc < 3 || ((argc - 1) % 2 != 0))
return (usage());
- if ((uri = util_name(session, *argv, "table")) == NULL)
+ if ((uri = util_uri(session, *argv, "table")) == NULL)
return (1);
- /* Open the object. */
+ /*
+ * Open the object; free allocated memory immediately to simplify
+ * future error handling.
+ */
(void)snprintf(config, sizeof(config), "%s,%s",
append ? "append=true" : "", overwrite ? "overwrite=true" : "");
- if ((ret = session->open_cursor(
- session, uri, NULL, config, &cursor)) != 0)
- return (util_err(session, ret, "%s: session.open", uri));
+ if ((ret =
+ session->open_cursor(session, uri, NULL, config, &cursor)) != 0)
+ (void)util_err(session, ret, "%s: session.open_cursor", uri);
+ free(uri);
+ if (ret != 0)
+ return (ret);
/*
* A simple search only makes sense if the key format is a string or a