• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt/router/db-4.8.30/build_vxworks/test_micro/
1/*
2 * See the file LICENSE for redistribution information.
3 *
4 * Copyright (c) 2005-2009 Oracle.  All rights reserved.
5 *
6 * $Id$
7 */
8
9#include "bench.h"
10
11#define	UNAMEFILE	"NODENAME"
12
13static int b_uname_write_info __P((FILE *));
14
15int
16b_uname()
17{
18	FILE *fp;
19	int ret;
20
21	if ((fp = fopen(UNAMEFILE, "w")) == NULL)
22		goto file_err;
23
24	ret = b_uname_write_info(fp);
25
26	if (fclose(fp) != 0) {
27file_err:	fprintf(stderr,
28		    "%s: %s: %s\n", progname, UNAMEFILE, strerror(errno));
29		return (1);
30	}
31
32	return (ret);
33}
34
35#ifdef DB_WIN32
36static int
37b_uname_write_info(fp)
38	FILE *fp;
39{
40	OSVERSIONINFO osver;
41	SYSTEM_INFO sysinfo;
42	char *p;
43
44#ifdef DB_WINCE
45	p = "WinCE";
46#else
47	{
48	DWORD len;
49	char buf[1024];
50
51	len = sizeof(buf) - 1;
52	GetComputerName(buf, &len);
53	p = buf;
54	}
55#endif
56	fprintf(fp, "<p>%s, ", p);
57
58	GetSystemInfo(&sysinfo);
59	switch (sysinfo.wProcessorArchitecture) {
60	case PROCESSOR_ARCHITECTURE_ALPHA:
61		p = "alpha";
62		break;
63	case PROCESSOR_ARCHITECTURE_INTEL:
64		p = "x86";
65		break;
66	case PROCESSOR_ARCHITECTURE_MIPS:
67		p = "mips";
68		break;
69	case PROCESSOR_ARCHITECTURE_PPC:
70		p = "ppc";
71		break;
72	default:
73		p = "unknown";
74		break;
75	}
76	fprintf(fp, "%s<br>\n", p);
77	memset(&osver, 0, sizeof(osver));
78	osver.dwOSVersionInfoSize = sizeof(osver);
79	GetVersionEx(&osver);
80	switch (osver.dwPlatformId) {
81	case VER_PLATFORM_WIN32_NT:	/* NT, Windows 2000 or Windows XP */
82		if (osver.dwMajorVersion == 4)
83			p = "Windows NT4x";
84		else if (osver.dwMajorVersion <= 3)
85			p = "Windows NT3x";
86		else if (osver.dwMajorVersion == 5 && osver.dwMinorVersion < 1)
87			p = "Windows 2000";
88		else if (osver.dwMajorVersion >= 5)
89			p = "Windows XP";
90		else
91			p = "unknown";
92		break;
93	case VER_PLATFORM_WIN32_WINDOWS:	/* Win95, Win98 or WinME */
94		if ((osver.dwMajorVersion > 4) ||
95		  ((osver.dwMajorVersion == 4) && (osver.dwMinorVersion > 0))) {
96			if (osver.dwMinorVersion >= 90)
97				p = "Windows ME";
98			else
99				p = "Windows 98";
100		} else
101			p = "Windows 95";
102		break;
103	case VER_PLATFORM_WIN32s:		/* Windows 3.x */
104		p = "Windows";
105		break;
106	default:
107		p = "unknown";
108		break;
109	}
110	fprintf(fp,
111	    "%s, %ld.%02ld", p, osver.dwMajorVersion, osver.dwMinorVersion);
112	return (0);
113}
114
115#elif defined(HAVE_VXWORKS)
116static int
117b_uname_write_info(fp)
118	FILE *fp;
119{
120	fprintf(fp, "<p>VxWorks");
121	return (0);
122}
123
124#else /* POSIX */
125#include <sys/utsname.h>
126
127static int
128b_uname_write_info(fp)
129	FILE *fp;
130{
131	struct utsname name;
132
133	if (uname(&name) == 0)
134		fprintf(fp, "<p>%s, %s<br>\n%s, %s, %s</p>\n", name.nodename,
135		    name.machine, name.sysname, name.release, name.version);
136	else {
137		/*
138		 * We've seen random failures on some systems, complain and
139		 * skip the call if it fails.
140		 */
141		fprintf(stderr, "%s: uname: %s\n", progname, strerror(errno));
142
143		fprintf(fp, "<p>POSIX");
144	}
145	return (0);
146}
147#endif
148