bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 3/3 v2] Handle Windows CE and rewrite NT version handling.


From: Bruno Haible
Subject: Re: [PATCH 3/3 v2] Handle Windows CE and rewrite NT version handling.
Date: Sat, 3 Oct 2009 19:58:13 +0200
User-agent: KMail/1.9.9

Paolo Bonzini wrote:
> * lib/uname.c: Handle Windows CE and its processor types. Remove 
> code for processors never supported by Windows 95/98/ME.  Rewrite
> conversion of NT version numbers to product names.

Operating one change per commit, I'm applying the patch below. I
don't know why you wanted "uname -m" to output the processor type
in upper case or capitalized:

> +       case PROCESSOR_ARCHITECTURE_MIPS:
> +         strcpy (buf->machine, "MIPS");
> +         break;
> +       case PROCESSOR_ARCHITECTURE_ALPHA:
> +       case PROCESSOR_ARCHITECTURE_ALPHA64:
> +         strcpy (buf->machine, "Alpha");
> +         break;
> +       case PROCESSOR_ARCHITECTURE_PPC:
> +         strcpy (buf->machine, "PowerPC");
> +         break;
> +       case PROCESSOR_ARCHITECTURE_SHX:
> +         strcpy (buf->machine, "SH");
> +         break;
> +       case PROCESSOR_ARCHITECTURE_ARM:
> +         strcpy (buf->machine, "ARM");

... when the Unix and Linux convention is to output a lowercase
processor type.


2009-10-03  Paolo Bonzini  <address@hidden>
            Bruno Haible  <address@hidden>

        * lib/uname.c (VER_PLATFORM_WIN32_CE, PROCESSOR_ARCHITECTURE_AMD64,
        PROCESSOR_ARCHITECTURE_IA32_ON_WIN64): Define fallbacks.
        (uname): Add support for Windows CE and various non-x86 CPU types.

--- lib/uname.c.orig    2009-10-03 19:50:22.000000000 +0200
+++ lib/uname.c 2009-10-03 19:48:35.000000000 +0200
@@ -27,7 +27,20 @@
 #include <unistd.h>
 #include <windows.h>
 
-/* Mingw headers don't have latest processor codes.  */
+/* Mingw headers don't have all the platform codes.  */
+#ifndef VER_PLATFORM_WIN32_CE
+# define VER_PLATFORM_WIN32_CE 3
+#endif
+
+/* Some headers don't have all the processor architecture codes.  */
+#ifndef PROCESSOR_ARCHITECTURE_AMD64
+# define PROCESSOR_ARCHITECTURE_AMD64 9
+#endif
+#ifndef PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
+# define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10
+#endif
+
+/* Mingw headers don't have the latest processor codes.  */
 #ifndef PROCESSOR_AMD_X8664
 # define PROCESSOR_AMD_X8664 8664
 #endif
@@ -51,6 +64,11 @@
       /* Windows NT or newer.  */
       super_version = "NT";
     }
+  else if (version.dwPlatformId == VER_PLATFORM_WIN32_CE)
+    {
+      /* Windows CE or Embedded CE.  */
+      super_version = "CE";
+    }
   else if (version.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS)
     {
       /* Windows 95/98/ME.  */
@@ -138,6 +156,13 @@
       else
        strcpy (buf->release, "Windows");
     }
+  else if (version.dwPlatformId == VER_PLATFORM_WIN32_CE)
+    {
+      /* Windows CE or Embedded CE.  */
+      sprintf (buf->release, "Windows CE %u.%u",
+              (unsigned int) version.dwMajorVersion,
+              (unsigned int) version.dwMinorVersion);
+    }
   else
     {
       /* Windows 95/98/ME.  */
@@ -150,11 +175,12 @@
     SYSTEM_INFO info;
 
     GetSystemInfo (&info);
-    /* Check for Windows NT, since the info.wProcessorLevel is
+    /* Check for Windows NT or CE, since the info.wProcessorLevel is
        garbage on Windows 95. */
-    if (version.dwPlatformId == VER_PLATFORM_WIN32_NT)
+    if (version.dwPlatformId == VER_PLATFORM_WIN32_NT
+       || version.dwPlatformId == VER_PLATFORM_WIN32_CE)
       {
-       /* Windows NT or newer.  */
+       /* Windows NT or newer, or Windows CE or Embedded CE.  */
        switch (info.wProcessorArchitecture)
          {
          case PROCESSOR_ARCHITECTURE_AMD64:
@@ -169,6 +195,25 @@
              buf->machine[1] =
                '0' + (info.wProcessorLevel <= 6 ? info.wProcessorLevel : 6);
            break;
+         case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64:
+           strcpy (buf->machine, "i686");
+           break;
+         case PROCESSOR_ARCHITECTURE_MIPS:
+           strcpy (buf->machine, "mips");
+           break;
+         case PROCESSOR_ARCHITECTURE_ALPHA:
+         case PROCESSOR_ARCHITECTURE_ALPHA64:
+           strcpy (buf->machine, "alpha");
+           break;
+         case PROCESSOR_ARCHITECTURE_PPC:
+           strcpy (buf->machine, "powerpc");
+           break;
+         case PROCESSOR_ARCHITECTURE_SHX:
+           strcpy (buf->machine, "sh");
+           break;
+         case PROCESSOR_ARCHITECTURE_ARM:
+           strcpy (buf->machine, "arm");
+           break;
          default:
            strcpy (buf->machine, "unknown");
            break;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]