|
@@ -922,6 +922,7 @@ get_uname(void)
|
|
|
int i;
|
|
|
unsigned int leftover_mask;
|
|
|
const char *plat = NULL;
|
|
|
+ const char *extra = NULL;
|
|
|
static struct {
|
|
|
unsigned major; unsigned minor; const char *version;
|
|
|
} win_version_table[] = {
|
|
@@ -968,6 +969,10 @@ get_uname(void)
|
|
|
plat = "Windows NT 4.0";
|
|
|
else
|
|
|
plat = "Windows 95";
|
|
|
+ if (info.szCSDVersion[1] == 'B')
|
|
|
+ extra = "OSR2 (B)";
|
|
|
+ else if (info.szCSDVersion[1] == 'C')
|
|
|
+ extra = "OSR2 (C)";
|
|
|
} else {
|
|
|
for (i=0; win_version_table[i].major>0; ++i) {
|
|
|
if (win_version_table[i].major == info.dwMajorVersion &&
|
|
@@ -977,9 +982,17 @@ get_uname(void)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (plat && !strcmp(plat, "Windows 98")) {
|
|
|
+ if (info.szCSDVersion[1] == 'A')
|
|
|
+ extra = "SE (A)";
|
|
|
+ else if (info.szCSDVersion[1] == 'B')
|
|
|
+ extra = "SE (B)";
|
|
|
+ }
|
|
|
if (plat) {
|
|
|
+ if (!extra)
|
|
|
+ extra = info.szCSDVersion;
|
|
|
tor_snprintf(uname_result, sizeof(uname_result), "%s %s",
|
|
|
- plat, info.szCSDVersion);
|
|
|
+ plat, extra);
|
|
|
} else {
|
|
|
if (info.dwMajorVersion > 6 ||
|
|
|
(info.dwMajorVersion==6 && info.dwMinorVersion>0))
|