summaryrefslogtreecommitdiff
path: root/db-4.8.30/test_micro/source/b_uname.c
diff options
context:
space:
mode:
authorJesse Morgan <jesse@jesterpm.net>2016-12-17 21:28:53 -0800
committerJesse Morgan <jesse@jesterpm.net>2016-12-17 21:28:53 -0800
commit54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 (patch)
tree18147b92b969d25ffbe61935fb63035cac820dd0 /db-4.8.30/test_micro/source/b_uname.c
Berkeley DB 4.8 with rust build script for linux.
Diffstat (limited to 'db-4.8.30/test_micro/source/b_uname.c')
-rw-r--r--db-4.8.30/test_micro/source/b_uname.c147
1 files changed, 147 insertions, 0 deletions
diff --git a/db-4.8.30/test_micro/source/b_uname.c b/db-4.8.30/test_micro/source/b_uname.c
new file mode 100644
index 0000000..fab0e7c
--- /dev/null
+++ b/db-4.8.30/test_micro/source/b_uname.c
@@ -0,0 +1,147 @@
+/*
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2005-2009 Oracle. All rights reserved.
+ *
+ * $Id$
+ */
+
+#include "bench.h"
+
+#define UNAMEFILE "NODENAME"
+
+static int write_info __P((FILE *));
+
+int
+b_uname()
+{
+ FILE *fp;
+ int ret;
+
+ if ((fp = fopen(UNAMEFILE, "w")) == NULL)
+ goto file_err;
+
+ ret = write_info(fp);
+
+ if (fclose(fp) != 0) {
+file_err: fprintf(stderr,
+ "%s: %s: %s\n", progname, UNAMEFILE, strerror(errno));
+ return (1);
+ }
+
+ return (ret);
+}
+
+#ifdef DB_WIN32
+static int
+write_info(fp)
+ FILE *fp;
+{
+ OSVERSIONINFO osver;
+ SYSTEM_INFO sysinfo;
+ char *p;
+
+#ifdef DB_WINCE
+ p = "WinCE";
+#else
+ {
+ DWORD len;
+ char buf[1024];
+
+ len = sizeof(buf) - 1;
+ GetComputerName(buf, &len);
+ p = buf;
+ }
+#endif
+ fprintf(fp, "<p>%s, ", p);
+
+ GetSystemInfo(&sysinfo);
+ switch (sysinfo.wProcessorArchitecture) {
+ case PROCESSOR_ARCHITECTURE_ALPHA:
+ p = "alpha";
+ break;
+ case PROCESSOR_ARCHITECTURE_INTEL:
+ p = "x86";
+ break;
+ case PROCESSOR_ARCHITECTURE_MIPS:
+ p = "mips";
+ break;
+ case PROCESSOR_ARCHITECTURE_PPC:
+ p = "ppc";
+ break;
+ default:
+ p = "unknown";
+ break;
+ }
+ fprintf(fp, "%s<br>\n", p);
+ memset(&osver, 0, sizeof(osver));
+ osver.dwOSVersionInfoSize = sizeof(osver);
+ GetVersionEx(&osver);
+ switch (osver.dwPlatformId) {
+ case VER_PLATFORM_WIN32_NT: /* NT, Windows 2000 or Windows XP */
+ if (osver.dwMajorVersion == 4)
+ p = "Windows NT4x";
+ else if (osver.dwMajorVersion <= 3)
+ p = "Windows NT3x";
+ else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion < 1)
+ p = "Windows 2000";
+ else if (osver.dwMajorVersion >= 5)
+ p = "Windows XP";
+ else
+ p = "unknown";
+ break;
+ case VER_PLATFORM_WIN32_WINDOWS: /* Win95, Win98 or WinME */
+ if ((osver.dwMajorVersion > 4) ||
+ ((osver.dwMajorVersion == 4) && (osver.dwMinorVersion > 0))) {
+ if (osver.dwMinorVersion >= 90)
+ p = "Windows ME";
+ else
+ p = "Windows 98";
+ } else
+ p = "Windows 95";
+ break;
+ case VER_PLATFORM_WIN32s: /* Windows 3.x */
+ p = "Windows";
+ break;
+ default:
+ p = "unknown";
+ break;
+ }
+ fprintf(fp,
+ "%s, %ld.%02ld", p, osver.dwMajorVersion, osver.dwMinorVersion);
+ return (0);
+}
+
+#elif defined(HAVE_VXWORKS)
+static int
+write_info(fp)
+ FILE *fp;
+{
+ fprintf(fp, "<p>VxWorks");
+ return (0);
+}
+
+#else /* POSIX */
+#include <sys/utsname.h>
+
+static int
+write_info(fp)
+ FILE *fp;
+{
+ struct utsname name;
+
+ if (uname(&name) == 0)
+ fprintf(fp, "<p>%s, %s<br>\n%s, %s, %s</p>\n", name.nodename,
+ name.machine, name.sysname, name.release, name.version);
+ else {
+ /*
+ * We've seen random failures on some systems, complain and
+ * skip the call if it fails.
+ */
+ fprintf(stderr, "%s: uname: %s\n", progname, strerror(errno));
+
+ fprintf(fp, "<p>POSIX");
+ }
+ return (0);
+}
+#endif