From 54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sat, 17 Dec 2016 21:28:53 -0800 Subject: Berkeley DB 4.8 with rust build script for linux. --- db-4.8.30/build_vxworks/test_micro/b_util.c | 157 ++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 db-4.8.30/build_vxworks/test_micro/b_util.c (limited to 'db-4.8.30/build_vxworks/test_micro/b_util.c') 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 +} -- cgit v1.2.3