Update Win32 to CPAN version 0.46
authorJan Dubois <jand@activestate.com>
Tue, 19 Feb 2013 21:06:24 +0000 (13:06 -0800)
committerJan Dubois <jand@activestate.com>
Tue, 19 Feb 2013 21:06:24 +0000 (13:06 -0800)
  [DELTA]

    0.46    [2013-02-19]
            - add Win2012/Win8 detection (thanks to Michiel Beijen) [rt#82572]
              [perl#116352]

Porting/Maintainers.pl
cpan/Win32/Changes
cpan/Win32/Win32.pm
cpan/Win32/t/GetOSName.t

index 08132fa..0bcda65 100755 (executable)
@@ -2075,7 +2075,7 @@ use File::Glob qw(:case);
 
     'Win32' => {
         'MAINTAINER'   => 'jand',
-        'DISTRIBUTION' => "JDB/Win32-0.45.tar.gz",
+        'DISTRIBUTION' => "JDB/Win32-0.46.tar.gz",
         'FILES'        => q[cpan/Win32],
         'UPSTREAM'     => 'cpan',
     },
index 900c1e8..d1bdbcc 100644 (file)
@@ -1,5 +1,9 @@
 Revision history for the Perl extension Win32.
 
+0.46    [2013-02-19]
+        - add Win2012/Win8 detection (thanks to Michiel Beijen) [rt#82572]
+          [perl#116352]
+
 0.45   [2012-08-07]
        - add Win32::GetACP(), Win32::GetConsoleCP(),
          Win32::GetConsoleOutputCP(), Win32::GetOEMCP(), Win32::SetConsoleCP()
index deb46be..fc78e6e 100644 (file)
@@ -8,7 +8,7 @@ package Win32;
     require DynaLoader;
 
     @ISA = qw|Exporter DynaLoader|;
-    $VERSION = '0.45';
+    $VERSION = '0.46';
     $XS_VERSION = $VERSION;
     $VERSION = eval $VERSION;
 
@@ -292,7 +292,7 @@ sub GetOSDisplayName {
                $desc =~ s/^\s*//;
                s/(200.)/$name Server $1/;
            }
-           s/^Windows (200[38])/Windows Server $1/;
+           s/^Windows (20(03|08|12))/Windows Server $1/;
        }
     }
     $name .= " $desc" if length $desc;
@@ -460,8 +460,16 @@ sub _GetOSName {
                    $desc = "R2";
                }
            }
+           elsif ($minor == 2) {
+           if ($producttype == VER_NT_WORKSTATION) {
+               $os = "8";
+           }
+           else {
+               $os = "2012";
+           }
+           }
 
-            if ($productinfo == PRODUCT_ULTIMATE) {
+        if ($productinfo == PRODUCT_ULTIMATE) {
                $desc .= " Ultimate";
            }
             elsif ($productinfo == PRODUCT_HOME_PREMIUM) {
@@ -970,6 +978,8 @@ Currently known values for ID MAJOR and MINOR are as follows:
     Windows Server 2008      2      6       0
     Windows 7                2      6       1
     Windows Server 2008 R2   2      6       1
+    Windows 8                2      6       2
+    Windows Server 2012      2      6       2
 
 On Windows NT 4 SP6 and later this function returns the following
 additional values: SPMAJOR, SPMINOR, SUITEMASK, PRODUCTTYPE.
@@ -986,6 +996,10 @@ The version numbers for Windows 7 and Windows Server 2008 R2 are
 identical; the PRODUCTTYPE field must be used to differentiate between
 them.
 
+The version numbers for Windows 8 and Windows Server 2012 are
+identical; the PRODUCTTYPE field must be used to differentiate between
+them.
+
 SPMAJOR and SPMINOR are are the version numbers of the latest
 installed service pack.
 
@@ -1016,9 +1030,9 @@ constants.
 PRODUCTTYPE provides additional information about the system.  It should
 be one of the following integer values:
 
-    1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro, Vista)
+    1 - Workstation (NT 4, 2000 Pro, XP Home, XP Pro, Vista, etc)
     2 - Domaincontroller
-    3 - Server (2000 Server, Server 2003, Server 2008)
+    3 - Server (2000 Server, Server 2003, Server 2008, etc)
 
 Note that a server that is also a domain controller is reported as
 PRODUCTTYPE 2 (Domaincontroller) and not PRODUCTTYPE 3 (Server).
index 32a43df..07fed88 100644 (file)
@@ -99,8 +99,9 @@ my @dual_tests = (
 ["7 [Enterprise]",                  "7",       2, 6, 1, 0x04         ],\r
 ["7 [Ultimate]",                    "7",       2, 6, 1, 0x01         ],\r
 \r
-\r
+["8",                               "8",       2, 6, 2               ],\r
 ["2008 [R2]",                       "2008",    2, 6, 1, 0x00, 2, 89  ],\r
+["2012",                            "2012",    2, 6, 2, 0x00, 2, 89  ],\r
 ["[Small Business Server] 2008 R2", "2008",    2, 6, 1, 0x09, 2, 89  ],\r
 \r
 );\r
@@ -127,7 +128,7 @@ sub check {
     # and 2003/2008 start with "Windows Server"\r
     unless ($pretty eq "Win32s") {\r
        my $prefix = "Windows";\r
-       $prefix .= " Server" if $pretty =~ /^200[38]/;\r
+       $prefix .= " Server" if $pretty =~ /^20(03|08|12)/;\r
        $pretty = "$prefix $pretty";\r
     }\r
 \r