diff --git a/ChangeLog b/ChangeLog index c678be4d61..6ff3ca1bb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -61,6 +61,7 @@ Changes in version 0.2.0.1-alpha - 2007-??-?? proposal 104.] o Minor features (other): + - Correctly report Windows 95 OSR2 and Windows 98 SE. - More unit tests. o Removed features: diff --git a/src/common/compat.c b/src/common/compat.c index e9e46275ef..a55a7e9d4e 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -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))