#include "bench.h"
#define UNAMEFILE "NODENAME"
static int b_uname_write_info __P((FILE *));
int
b_uname()
{
FILE *fp;
int ret;
if ((fp = fopen(UNAMEFILE, "w")) == NULL)
goto file_err;
ret = b_uname_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
b_uname_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:
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:
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:
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
b_uname_write_info(fp)
FILE *fp;
{
fprintf(fp, "<p>VxWorks");
return (0);
}
#else
#include <sys/utsname.h>
static int
b_uname_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 {
fprintf(stderr, "%s: uname: %s\n", progname, strerror(errno));
fprintf(fp, "<p>POSIX");
}
return (0);
}
#endif