summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKeith Bostic <keith.bostic@mongodb.com>2017-02-21 07:08:11 -0500
committerGitHub <noreply@github.com>2017-02-21 07:08:11 -0500
commit1aaf7b2d54886e4d323f05dfa6e08d86d614ee1c (patch)
tree2f6401468e917b9d2b47dcbf032966bf0c5a107d /test
parente7b2a53c33271598c9041eec8363c95ff37daa58 (diff)
downloadmongo-1aaf7b2d54886e4d323f05dfa6e08d86d614ee1c.tar.gz
WT-3191 lint (#3310)
* WT-3191 lint Remove WT_UNUSED(session), session is used in the function. * Check returns from WT_CURSOR.get_value(). * Lots of the csuite test programs have "normal" output now, change the testutil_die() function to include a "FAILED" message so it's possible to figure it out. Make the program name a global so we can print it out on error, add a standard testutil_set_progname function to set the program name and call it from everywhere. * Lint is deeply saddened by mixing-and-matching enums and ints, use a switch statement instead of arithmetic operations. * Avoid enum arithmetic with minimal casting. This change only uses the enum for one switch.
Diffstat (limited to 'test')
-rw-r--r--test/bloom/test_bloom.c13
-rw-r--r--test/checkpoint/test_checkpoint.c17
-rw-r--r--test/checkpoint/test_checkpoint.h1
-rw-r--r--test/csuite/wt3184_dup_index_collator/main.c4
-rw-r--r--test/cursor_order/cursor_order.c6
-rw-r--r--test/fops/t.c12
-rw-r--r--test/format/config.c12
-rw-r--r--test/format/format.h2
-rw-r--r--test/format/ops.c4
-rw-r--r--test/format/t.c15
-rw-r--r--test/format/wts.c2
-rw-r--r--test/huge/huge.c7
-rw-r--r--test/manydbs/manydbs.c7
-rw-r--r--test/readonly/readonly.c7
-rw-r--r--test/recovery/random-abort.c7
-rw-r--r--test/recovery/truncated-log.c6
-rw-r--r--test/salvage/salvage.c7
-rw-r--r--test/thread/t.c6
-rw-r--r--test/utility/misc.c17
-rw-r--r--test/utility/parse_opts.c5
-rw-r--r--test/utility/test_util.h5
21 files changed, 61 insertions, 101 deletions
diff --git a/test/bloom/test_bloom.c b/test/bloom/test_bloom.c
index 67249ff887e..bef509e01d8 100644
--- a/test/bloom/test_bloom.c
+++ b/test/bloom/test_bloom.c
@@ -29,8 +29,6 @@
#include "test_util.h"
static struct {
- char *progname; /* Program name */
-
WT_CONNECTION *wt_conn; /* WT_CONNECTION handle */
WT_SESSION *wt_session; /* WT_SESSION handle */
@@ -61,10 +59,7 @@ main(int argc, char *argv[])
{
int ch;
- if ((g.progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- g.progname = argv[0];
- else
- ++g.progname;
+ (void)testutil_set_progname(argv);
/* Set default configuration values. */
g.c_cache = 10;
@@ -75,7 +70,7 @@ main(int argc, char *argv[])
g.c_srand = 3233456;
/* Set values from the command line. */
- while ((ch = __wt_getopt(g.progname, argc, argv, "c:f:k:o:s:")) != EOF)
+ while ((ch = __wt_getopt(progname, argc, argv, "c:f:k:o:s:")) != EOF)
switch (ch) {
case 'c': /* Cache size */
g.c_cache = (u_int)atoi(__wt_optarg);
@@ -128,7 +123,7 @@ setup(void)
*/
snprintf(config, sizeof(config),
"create,error_prefix=\"%s\",cache_size=%" PRIu32 "MB,%s",
- g.progname, g.c_cache, g.config_open == NULL ? "" : g.config_open);
+ progname, g.c_cache, g.config_open == NULL ? "" : g.config_open);
testutil_check(wiredtiger_open(NULL, NULL, config, &conn));
@@ -246,7 +241,7 @@ populate_entries(void)
void
usage(void)
{
- fprintf(stderr, "usage: %s [-cfkos]\n", g.progname);
+ fprintf(stderr, "usage: %s [-cfkos]\n", progname);
fprintf(stderr, "%s",
"\t-c cache size\n"
"\t-f number of bits per item\n"
diff --git a/test/checkpoint/test_checkpoint.c b/test/checkpoint/test_checkpoint.c
index 4998019ad8e..c7132b433d2 100644
--- a/test/checkpoint/test_checkpoint.c
+++ b/test/checkpoint/test_checkpoint.c
@@ -50,10 +50,7 @@ main(int argc, char *argv[])
char *working_dir;
const char *config_open;
- if ((g.progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- g.progname = argv[0];
- else
- ++g.progname;
+ (void)testutil_set_progname(argv);
config_open = NULL;
ret = 0;
@@ -68,7 +65,7 @@ main(int argc, char *argv[])
runs = 1;
while ((ch = __wt_getopt(
- g.progname, argc, argv, "c:C:h:k:l:n:r:t:T:W:")) != EOF)
+ progname, argc, argv, "c:C:h:k:l:n:r:t:T:W:")) != EOF)
switch (ch) {
case 'c':
g.checkpoint_name = __wt_optarg;
@@ -132,7 +129,7 @@ main(int argc, char *argv[])
testutil_work_dir_from_path(g.home, 512, working_dir);
- printf("%s: process %" PRIu64 "\n", g.progname, (uint64_t)getpid());
+ printf("%s: process %" PRIu64 "\n", progname, (uint64_t)getpid());
for (cnt = 1; (runs == 0 || cnt <= runs) && g.status == 0; ++cnt) {
printf(" %d: %d workers, %d tables\n",
cnt, g.nworkers, g.ntables);
@@ -204,7 +201,7 @@ wt_connect(const char *config_open)
snprintf(config, sizeof(config),
"create,statistics=(fast),error_prefix=\"%s\",cache_size=1GB%s%s",
- g.progname,
+ progname,
config_open == NULL ? "" : ",",
config_open == NULL ? "" : config_open);
@@ -297,10 +294,10 @@ log_print_err(const char *m, int e, int fatal)
g.running = 0;
g.status = e;
}
- fprintf(stderr, "%s: %s: %s\n", g.progname, m, wiredtiger_strerror(e));
+ fprintf(stderr, "%s: %s: %s\n", progname, m, wiredtiger_strerror(e));
if (g.logfp != NULL)
fprintf(g.logfp, "%s: %s: %s\n",
- g.progname, m, wiredtiger_strerror(e));
+ progname, m, wiredtiger_strerror(e));
return (e);
}
@@ -333,7 +330,7 @@ usage(void)
"usage: %s "
"[-S] [-C wiredtiger-config] [-k keys] [-l log]\n\t"
"[-n ops] [-c checkpoint] [-r runs] [-t f|r|v] [-W workers]\n",
- g.progname);
+ progname);
fprintf(stderr, "%s",
"\t-C specify wiredtiger_open configuration arguments\n"
"\t-c checkpoint name to used named checkpoints\n"
diff --git a/test/checkpoint/test_checkpoint.h b/test/checkpoint/test_checkpoint.h
index 0d0d02447d5..347bd2c6e89 100644
--- a/test/checkpoint/test_checkpoint.h
+++ b/test/checkpoint/test_checkpoint.h
@@ -58,7 +58,6 @@ typedef struct {
u_int nkeys; /* Keys to load */
u_int nops; /* Operations per thread */
FILE *logfp; /* Message log file. */
- char *progname; /* Program name */
int nworkers; /* Number workers configured */
int ntables; /* Number tables configured */
int ntables_created; /* Number tables opened */
diff --git a/test/csuite/wt3184_dup_index_collator/main.c b/test/csuite/wt3184_dup_index_collator/main.c
index bcefd2f1a3b..c969e7a1d7e 100644
--- a/test/csuite/wt3184_dup_index_collator/main.c
+++ b/test/csuite/wt3184_dup_index_collator/main.c
@@ -157,9 +157,9 @@ main(int argc, char *argv[])
printf("duplicating cursor\n");
testutil_check(session->open_cursor(session, NULL, cursor, NULL,
&cursor1));
- cursor->get_value(cursor, &got);
+ testutil_check(cursor->get_value(cursor, &got));
testutil_assert(item_to_int(&got) == 17);
- cursor1->get_value(cursor1, &got);
+ testutil_check(cursor1->get_value(cursor1, &got));
testutil_assert(item_to_int(&got) == 17);
testutil_check(session->close(session, NULL));
diff --git a/test/cursor_order/cursor_order.c b/test/cursor_order/cursor_order.c
index 85b8c68e545..62777f552bf 100644
--- a/test/cursor_order/cursor_order.c
+++ b/test/cursor_order/cursor_order.c
@@ -29,7 +29,6 @@
#include "cursor_order.h"
static char home[512]; /* Program working dir */
-static char *progname; /* Program name */
static FILE *logfp; /* Log file */
static int handle_error(WT_EVENT_HANDLER *, WT_SESSION *, int, const char *);
@@ -51,10 +50,7 @@ main(int argc, char *argv[])
int ch, cnt, runs;
char *config_open, *working_dir;
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
cfg = &_cfg;
config_open = NULL;
diff --git a/test/fops/t.c b/test/fops/t.c
index 7b4a7cf8fca..651d22c8deb 100644
--- a/test/fops/t.c
+++ b/test/fops/t.c
@@ -34,7 +34,6 @@ u_int nops; /* Operations */
const char *uri; /* Object */
const char *config; /* Object config */
-static char *progname; /* Program name */
static FILE *logfp; /* Log file */
static char home[512];
@@ -71,22 +70,15 @@ main(int argc, char *argv[])
int ch, cnt, ret, runs;
char *config_open, *working_dir;
- working_dir = NULL;
-
- /* Remove directories */
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
if ((ret = pthread_rwlock_init(&single, NULL)) != 0)
testutil_die(ret, "pthread_rwlock_init: single");
- config_open = NULL;
nops = 1000;
nthreads = 10;
runs = 1;
-
+ config_open = working_dir = NULL;
while ((ch = __wt_getopt(progname, argc, argv, "C:h:l:n:r:t:")) != EOF)
switch (ch) {
case 'C': /* wiredtiger_open config */
diff --git a/test/format/config.c b/test/format/config.c
index 50430fe073e..958ad6b7a99 100644
--- a/test/format/config.c
+++ b/test/format/config.c
@@ -104,7 +104,7 @@ config_setup(void)
if (DATASOURCE("lsm") && g.type != ROW) {
fprintf(stderr,
"%s: lsm data_source is only compatible with row file_type\n",
- g.progname);
+ progname);
exit(EXIT_FAILURE);
}
@@ -681,7 +681,7 @@ config_single(const char *s, int perm)
if ((ep = strchr(s, '=')) == NULL) {
fprintf(stderr,
- "%s: %s: illegal configuration value\n", g.progname, s);
+ "%s: %s: illegal configuration value\n", progname, s);
exit(EXIT_FAILURE);
}
@@ -751,20 +751,20 @@ config_single(const char *s, int perm)
v = strtol(ep, &p, 10);
if (*p != '\0') {
fprintf(stderr, "%s: %s: illegal numeric value\n",
- g.progname, s);
+ progname, s);
exit(EXIT_FAILURE);
}
}
if (F_ISSET(cp, C_BOOL)) {
if (v != 0 && v != 1) {
fprintf(stderr, "%s: %s: value of boolean not 0 or 1\n",
- g.progname, s);
+ progname, s);
exit(EXIT_FAILURE);
}
} else if (v < cp->min || v > cp->maxset) {
fprintf(stderr, "%s: %s: value outside min/max values of %"
PRIu32 "-%" PRIu32 "\n",
- g.progname, s, cp->min, cp->maxset);
+ progname, s, cp->min, cp->maxset);
exit(EXIT_FAILURE);
}
*cp->v = (uint32_t)v;
@@ -883,7 +883,7 @@ config_find(const char *s, size_t len)
return (cp);
fprintf(stderr,
- "%s: %s: unknown configuration keyword\n", g.progname, s);
+ "%s: %s: unknown configuration keyword\n", progname, s);
config_error();
exit(EXIT_FAILURE);
}
diff --git a/test/format/format.h b/test/format/format.h
index 6bb44410acc..41cc48c4278 100644
--- a/test/format/format.h
+++ b/test/format/format.h
@@ -79,8 +79,6 @@
#define FORMAT_OPERATION_REPS 3 /* 3 thread operations sets */
typedef struct {
- char *progname; /* Program name */
-
char *home; /* Home directory */
char *home_backup; /* Hot-backup directory */
char *home_backup_init; /* Initialize backup command */
diff --git a/test/format/ops.c b/test/format/ops.c
index 940318c87a9..1013d1da30b 100644
--- a/test/format/ops.c
+++ b/test/format/ops.c
@@ -1448,7 +1448,7 @@ notfound_chk(const char *f, int wt_ret, int bdb_notfound, uint64_t keyno)
return (1);
if (bdb_notfound) {
- fprintf(stderr, "%s: %s:", g.progname, f);
+ fprintf(stderr, "%s: %s:", progname, f);
if (keyno != 0)
fprintf(stderr, " row %" PRIu64 ":", keyno);
fprintf(stderr,
@@ -1456,7 +1456,7 @@ notfound_chk(const char *f, int wt_ret, int bdb_notfound, uint64_t keyno)
testutil_die(0, NULL);
}
if (wt_ret == WT_NOTFOUND) {
- fprintf(stderr, "%s: %s:", g.progname, f);
+ fprintf(stderr, "%s: %s:", progname, f);
if (keyno != 0)
fprintf(stderr, " row %" PRIu64 ":", keyno);
fprintf(stderr,
diff --git a/test/format/t.c b/test/format/t.c
index 7701595776c..c6686ae8b91 100644
--- a/test/format/t.c
+++ b/test/format/t.c
@@ -49,14 +49,7 @@ main(int argc, char *argv[])
config = NULL;
-#ifdef _WIN32
- g.progname = "t_format.exe";
-#else
- if ((g.progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- g.progname = argv[0];
- else
- ++g.progname;
-#endif
+ (void)testutil_set_progname(argv);
#if 0
/* Configure the GNU malloc for debugging. */
@@ -74,7 +67,7 @@ main(int argc, char *argv[])
home = NULL;
onerun = 0;
while ((ch = __wt_getopt(
- g.progname, argc, argv, "1C:c:H:h:Llqrt:")) != EOF)
+ progname, argc, argv, "1C:c:H:h:Llqrt:")) != EOF)
switch (ch) {
case '1': /* One run */
onerun = 1;
@@ -179,7 +172,7 @@ main(int argc, char *argv[])
testutil_check(pthread_rwlock_init(&g.checkpoint_lock, NULL));
testutil_check(pthread_rwlock_init(&g.death_lock, NULL));
- printf("%s: process %" PRIdMAX "\n", g.progname, (intmax_t)getpid());
+ printf("%s: process %" PRIdMAX "\n", progname, (intmax_t)getpid());
while (++g.run_cnt <= g.c_runs || g.c_runs == 0 ) {
startup(); /* Start a run */
@@ -344,7 +337,7 @@ usage(void)
"usage: %s [-1Llqr] [-C wiredtiger-config]\n "
"[-c config-file] [-H mount] [-h home] "
"[name=value ...]\n",
- g.progname);
+ progname);
fprintf(stderr, "%s",
"\t-1 run once\n"
"\t-C specify wiredtiger_open configuration arguments\n"
diff --git a/test/format/wts.c b/test/format/wts.c
index da234ce53c7..a87aa5b9f88 100644
--- a/test/format/wts.c
+++ b/test/format/wts.c
@@ -144,7 +144,7 @@ wts_open(const char *home, bool set_api, WT_CONNECTION **connp)
"cache_size=%" PRIu32 "MB,"
"checkpoint_sync=false,"
"error_prefix=\"%s\"",
- g.c_cache, g.progname);
+ g.c_cache, progname);
/* In-memory configuration. */
if (g.c_in_memory != 0)
diff --git a/test/huge/huge.c b/test/huge/huge.c
index 17e2db353d5..2b0d5f498e3 100644
--- a/test/huge/huge.c
+++ b/test/huge/huge.c
@@ -29,7 +29,6 @@
#include "test_util.h"
static char home[512]; /* Program working dir */
-static const char *progname; /* Program name */
static uint8_t *big; /* Big key/value buffer */
#define GIGABYTE (1073741824)
@@ -167,14 +166,10 @@ main(int argc, char *argv[])
int ch, small;
char *working_dir;
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
small = 0;
working_dir = NULL;
-
while ((ch = __wt_getopt(progname, argc, argv, "h:s")) != EOF)
switch (ch) {
case 'h':
diff --git a/test/manydbs/manydbs.c b/test/manydbs/manydbs.c
index 7e986d47af3..345c470ba90 100644
--- a/test/manydbs/manydbs.c
+++ b/test/manydbs/manydbs.c
@@ -32,7 +32,6 @@
#define HOME_BASE "WT_TEST"
static char home[HOME_SIZE]; /* Base home directory */
static char hometmp[HOME_SIZE]; /* Each conn home directory */
-static const char *progname; /* Program name */
static const char * const uri = "table:main";
#define WTOPEN_CFG_COMMON \
@@ -129,10 +128,8 @@ main(int argc, char *argv[])
const char *working_dir, *wt_cfg;
char cmd[128];
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
+
dbs = MAX_DBS;
working_dir = HOME_BASE;
idle = false;
diff --git a/test/readonly/readonly.c b/test/readonly/readonly.c
index a4b79f5859f..746aecbf6c5 100644
--- a/test/readonly/readonly.c
+++ b/test/readonly/readonly.c
@@ -39,7 +39,6 @@ static char home_rd[HOME_SIZE + sizeof(HOME_RD_SUFFIX)];
#define HOME_RD2_SUFFIX ".RDNOLOCK" /* Read-only dir no lock file */
static char home_rd2[HOME_SIZE + sizeof(HOME_RD2_SUFFIX)];
-static const char *progname; /* Program name */
static const char *saved_argv0; /* Program command */
static const char * const uri = "table:main";
@@ -172,10 +171,8 @@ main(int argc, char *argv[])
char cmd[512];
uint8_t buf[MAX_VAL];
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
+
/*
* Needed unaltered for system command later.
*/
diff --git a/test/recovery/random-abort.c b/test/recovery/random-abort.c
index 660ef0cca67..1d6599ce1b3 100644
--- a/test/recovery/random-abort.c
+++ b/test/recovery/random-abort.c
@@ -32,7 +32,7 @@
#include <signal.h>
static char home[1024]; /* Program working dir */
-static const char *progname; /* Program name */
+
/*
* These two names for the URI and file system must be maintained in tandem.
*/
@@ -229,10 +229,7 @@ main(int argc, char *argv[])
const char *working_dir;
char fname[64], kname[64], statname[1024];
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
inmem = false;
nth = MIN_TH;
diff --git a/test/recovery/truncated-log.c b/test/recovery/truncated-log.c
index 6a142b8e710..1f0a0f7a7bd 100644
--- a/test/recovery/truncated-log.c
+++ b/test/recovery/truncated-log.c
@@ -36,7 +36,6 @@
#endif
static char home[1024]; /* Program working dir */
-static const char *progname; /* Program name */
static const char * const uri = "table:main";
#define RECORDS_FILE "records"
@@ -271,10 +270,7 @@ main(int argc, char *argv[])
pid_t pid;
const char *working_dir;
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
working_dir = "WT_TEST.truncated-log";
while ((ch = __wt_getopt(progname, argc, argv, "h:")) != EOF)
diff --git a/test/salvage/salvage.c b/test/salvage/salvage.c
index b8553bbd72d..942f7faba03 100644
--- a/test/salvage/salvage.c
+++ b/test/salvage/salvage.c
@@ -54,8 +54,6 @@ void run(int);
void t(int, u_int, int);
int usage(void);
-static const char *progname; /* Program name */
-
static FILE *res_fp; /* Results file */
static u_int page_type; /* File types */
static int value_unique; /* Values are unique */
@@ -70,10 +68,7 @@ main(int argc, char *argv[])
u_int ptype;
int ch, r;
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
r = 0;
ptype = 0;
diff --git a/test/thread/t.c b/test/thread/t.c
index baadbf2adb9..9dfd02bdad2 100644
--- a/test/thread/t.c
+++ b/test/thread/t.c
@@ -37,7 +37,6 @@ int multiple_files; /* File per thread */
int session_per_op; /* New session per operation */
static char home[512]; /* Program working dir */
-static char *progname; /* Program name */
static FILE *logfp; /* Log file */
static int handle_error(WT_EVENT_HANDLER *, WT_SESSION *, int, const char *);
@@ -59,10 +58,7 @@ main(int argc, char *argv[])
int ch, cnt, runs;
char *config_open, *working_dir;
- if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- progname = argv[0];
- else
- ++progname;
+ (void)testutil_set_progname(argv);
config_open = NULL;
working_dir = NULL;
diff --git a/test/utility/misc.c b/test/utility/misc.c
index 1ba08ddd77f..8aee9d16f66 100644
--- a/test/utility/misc.c
+++ b/test/utility/misc.c
@@ -28,6 +28,7 @@
#include "test_util.h"
void (*custom_die)(void) = NULL;
+const char *progname = "program name not set";
/*
* die --
@@ -42,7 +43,9 @@ testutil_die(int e, const char *fmt, ...)
if (custom_die != NULL)
(*custom_die)();
+ fprintf(stderr, "%s: FAILED", progname);
if (fmt != NULL) {
+ fprintf(stderr, ": ");
va_start(ap, fmt);
vfprintf(stderr, fmt, ap);
va_end(ap);
@@ -55,6 +58,20 @@ testutil_die(int e, const char *fmt, ...)
}
/*
+ * testutil_set_progname --
+ * Set the global program name for error handling.
+ */
+const char *
+testutil_set_progname(char * const *argv)
+{
+ if ((progname = strrchr(argv[0], DIR_DELIM)) == NULL)
+ progname = argv[0];
+ else
+ ++progname;
+ return (progname);
+}
+
+/*
* testutil_work_dir_from_path --
* Takes a buffer, its size and the intended work directory.
* Creates the full intended work directory in buffer.
diff --git a/test/utility/parse_opts.c b/test/utility/parse_opts.c
index 74a1c021d5d..af9256b199a 100644
--- a/test/utility/parse_opts.c
+++ b/test/utility/parse_opts.c
@@ -43,10 +43,7 @@ testutil_parse_opts(int argc, char * const *argv, TEST_OPTS *opts)
opts->running = true;
opts->verbose = false;
- if ((opts->progname = strrchr(argv[0], DIR_DELIM)) == NULL)
- opts->progname = argv[0];
- else
- ++opts->progname;
+ opts->progname = testutil_set_progname(argv);
while ((ch = __wt_getopt(opts->progname,
argc, argv, "A:h:n:o:pR:T:t:vW:")) != EOF)
diff --git a/test/utility/test_util.h b/test/utility/test_util.h
index 489bbe18d87..34829d06f6b 100644
--- a/test/utility/test_util.h
+++ b/test/utility/test_util.h
@@ -48,7 +48,7 @@
/* Generic option parsing structure shared by all test cases. */
typedef struct {
char *home;
- char *progname;
+ const char *progname;
enum { TABLE_COL=1, /* Fixed-length column store */
TABLE_FIX=2, /* Variable-length column store */
TABLE_ROW=3 /* Row-store */
@@ -192,3 +192,6 @@ void testutil_work_dir_from_path(char *, size_t, const char *);
void *thread_append(void *);
void *thread_insert_append(void *);
void *thread_prev(void *);
+
+extern const char *progname;
+const char *testutil_set_progname(char * const *);