summaryrefslogtreecommitdiff
path: root/db-4.8.30/build_vxworks/test_micro/b_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'db-4.8.30/build_vxworks/test_micro/b_util.c')
-rw-r--r--db-4.8.30/build_vxworks/test_micro/b_util.c157
1 files changed, 157 insertions, 0 deletions
diff --git a/db-4.8.30/build_vxworks/test_micro/b_util.c b/db-4.8.30/build_vxworks/test_micro/b_util.c
new file mode 100644
index 0000000..d93ed54
--- /dev/null
+++ b/db-4.8.30/build_vxworks/test_micro/b_util.c
@@ -0,0 +1,157 @@
+/*
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2005-2009 Oracle. All rights reserved.
+ *
+ * $Id$
+ */
+
+#include "bench.h"
+
+static int b_util_testdir_remove __P((char *));
+
+int
+b_util_have_hash()
+{
+#if defined(HAVE_HASH) ||\
+ DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 2
+ return (0);
+#else
+ fprintf(stderr,
+ "library build did not include support for the Hash access method\n");
+ return (1);
+#endif
+}
+
+int
+b_util_have_queue()
+{
+#if defined(HAVE_QUEUE) ||\
+ DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 2
+ return (0);
+#else
+ fprintf(stderr,
+ "library build did not include support for the Queue access method\n");
+ return (1);
+#endif
+}
+
+/*
+ * b_util_dir_setup --
+ * Create the test directory.
+ */
+int
+b_util_dir_setup()
+{
+ int ret;
+
+#if DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 3
+ if ((ret = __os_mkdir(NULL, TESTDIR, 0755)) != 0) {
+#else
+ if ((ret = mkdir(TESTDIR, 0755)) != 0) {
+#endif
+ fprintf(stderr,
+ "%s: %s: %s\n", progname, TESTDIR, db_strerror(ret));
+ return (1);
+ }
+ return (0);
+}
+
+#if DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 4
+#define OS_EXISTS(a, b, c) __os_exists(a, b, c)
+#else
+#define OS_EXISTS(a, b, c) __os_exists(b, c)
+#endif
+
+/*
+ * b_util_dir_teardown
+ * Clean up the test directory.
+ */
+int
+b_util_dir_teardown()
+{
+ int ret;
+
+ if (OS_EXISTS(NULL, TESTFILE, NULL) == 0 &&
+ (ret = b_util_unlink(TESTFILE)) != 0) {
+ fprintf(stderr,
+ "%s: %s: %s\n", progname, TESTFILE, db_strerror(ret));
+ return (1);
+ }
+ return (b_util_testdir_remove(TESTDIR) ? 1 : 0);
+}
+
+/*
+ * testdir_remove --
+ * Remove a directory and all its contents, the "dir" must contain no
+ * subdirectories, because testdir_remove will not recursively delete
+ * all subdirectories.
+ */
+static int
+b_util_testdir_remove(dir)
+ char *dir;
+{
+ int cnt, i, isdir, ret;
+ char buf[1024], **names;
+
+ ret = 0;
+
+ /* If the directory doesn't exist, we're done. */
+ if (OS_EXISTS(NULL, dir, &isdir) != 0)
+ return (0);
+
+ /* Get a list of the directory contents. */
+#if DB_VERSION_MAJOR > 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR > 6
+ if ((ret = __os_dirlist(NULL, dir, 0, &names, &cnt)) != 0)
+ return (ret);
+#else
+ if ((ret = __os_dirlist(NULL, dir, &names, &cnt)) != 0)
+ return (ret);
+#endif
+ /* Go through the file name list, remove each file in the list */
+ for (i = 0; i < cnt; ++i) {
+ (void)snprintf(buf, sizeof(buf),
+ "%s%c%s", dir, PATH_SEPARATOR[0], names[i]);
+ if ((ret = OS_EXISTS(NULL, buf, &isdir)) != 0)
+ goto file_err;
+ if (!isdir && (ret = b_util_unlink(buf)) != 0) {
+file_err: fprintf(stderr, "%s: %s: %s\n",
+ progname, buf, db_strerror(ret));
+ break;
+ }
+ }
+
+ __os_dirfree(NULL, names, cnt);
+
+ /*
+ * If we removed the contents of the directory, remove the directory
+ * itself.
+ */
+ if (i == cnt && (ret = rmdir(dir)) != 0)
+ fprintf(stderr,
+ "%s: %s: %s\n", progname, dir, db_strerror(errno));
+ return (ret);
+}
+
+void
+b_util_abort()
+{
+#if DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 6
+ abort();
+#elif DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR == 6
+ __os_abort();
+#else
+ __os_abort(NULL);
+#endif
+}
+
+int
+b_util_unlink(path)
+ char *path;
+{
+#if DB_VERSION_MAJOR < 4 || DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR < 7
+ return (__os_unlink(NULL, path));
+#else
+ return (__os_unlink(NULL, path, 0));
+#endif
+}