You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stdcxx.apache.org by se...@apache.org on 2005/07/21 23:08:32 UTC
svn commit: r220187 - /incubator/stdcxx/trunk/etc/config/src/UNAME.cpp
Author: sebor
Date: Thu Jul 21 14:08:30 2005
New Revision: 220187
URL: http://svn.apache.org/viewcvs?rev=220187&view=rev
Log:
* Implemented for Win32.
* Added _RWSTD_OS_WINDOWS_XXX where XXX is the flavor of Windows
(i.e., one of 95, 98, ME, NT, 2000, 2003, and XP).
Modified:
incubator/stdcxx/trunk/etc/config/src/UNAME.cpp
Modified: incubator/stdcxx/trunk/etc/config/src/UNAME.cpp
URL: http://svn.apache.org/viewcvs/incubator/stdcxx/trunk/etc/config/src/UNAME.cpp?rev=220187&r1=220186&r2=220187&view=diff
==============================================================================
--- incubator/stdcxx/trunk/etc/config/src/UNAME.cpp (original)
+++ incubator/stdcxx/trunk/etc/config/src/UNAME.cpp Thu Jul 21 14:08:30 2005
@@ -69,6 +69,10 @@
const char *s;
unsigned long num;
+#if !defined (SYS_NMLN)
+# define SYS_NMLN 128
+#endif // SYS_NMLN
+
char str [SYS_NMLN * 2];
for (num = 0; (str [num] = uts.release [num]); ++num);
@@ -101,11 +105,58 @@
printf ("#define _RWSTD_OS_MICRO %lu\n", num);
-#else
+#else // if defined (_WIN{32,64})
+
+ OSVERSIONINFO osinfo;
+ osinfo.dwOSVersionInfoSize = sizeof osinfo;
+
+ const BOOL success = GetVersionEx (&osinfo);
+
+ printf ("#define _RWSTD_OS_WINDOWS\n");
+ printf ("#define _RWSTD_OS_SYSNAME \"WINDOWS\"\n");
+
+ if (!success)
+ return 0;
+
+ printf ("#define _RWSTD_OS_MAJOR %lu\n", osinfo.dwMajorVersion);
+ printf ("#define _RWSTD_OS_MINOR %lu\n", osinfo.dwMinorVersion);
+ printf ("#define _RWSTD_OS_MICRO %lu /* build number */\n",
+ osinfo.dwBuildNumber);
+
+ const char *flavor = 0;
+
+ if (4 == osinfo.dwMajorVersion) {
+ switch (osinfo.dwMinorVersion) {
+ case 0:
+ if (VER_PLATFORM_WIN32_NT == osinfo.dwPlatformId)
+ flavor = "NT";
+ else
+ flavor = "95";
+ break;
+
+ case 10: flavor = "98"; break;
+ case 90: flavor = "ME"; break;
+ }
+ }
+ else if (5 == osinfo.dwMajorVersion) {
+ switch (osinfo.dwMinorVersion) {
+ case 0: flavor = "2000"; break;
+ case 1: flavor = "XP"; break;
+ case 2: flavor = "2003"; break;
+ }
+ }
+
+ if (flavor) {
+ printf ("#define _RWSTD_OS_RELEASE \"Windows %s\"\n", flavor);
+ printf ("#define _RWSTD_OS_WINDOWS_%s\n", flavor);
+ }
+ else {
+ printf ("#define _RWSTD_OS_RELEASE \"\"\n");
+ }
- return 1;
+ printf ("#define _RWSTD_OS_VERSION \"%s\"\n", osinfo.szCSDVersion);
-#endif
+#endif // _WIN{32,64}
return 0;
}