]> granicus.if.org Git - php/commitdiff
* a little bit of internal refactoring
authorStig Bakken <ssb@php.net>
Thu, 14 Nov 2002 22:41:56 +0000 (22:41 +0000)
committerStig Bakken <ssb@php.net>
Thu, 14 Nov 2002 22:41:56 +0000 (22:41 +0000)
pear/OS/Guess.php

index 78a7a96281b9280db72399f519d3dca23af0031a..206412311dfa1686128aeaf6848652df335f5b32 100644 (file)
@@ -80,6 +80,15 @@ class OS_Guess
     var $extra;
 
     function OS_Guess($uname = null)
+    {
+        list($this->sysname,
+             $this->release,
+             $this->cpu,
+             $this->extra,
+             $this->nodename) = $this->parseSignature($uname);
+    }
+
+    function parseSignature($uname = null)
     {
         static $sysmap = array(
             'HP-UX' => 'hpux',
@@ -96,36 +105,37 @@ class OS_Guess
         $parts = preg_split('/\s+/', trim($uname));
         $n = count($parts);
 
-        $this->release = $this->machine = $this->cpu = '';
-
-        $this->sysname = $parts[0];
+        $release = $machine = $cpu = '';
+        $sysname = $parts[0];
         $nodename = $parts[1];
-        $this->cpu = $parts[$n-1];
-        if ($this->cpu == 'unknown') {
-            $this->cpu = $parts[$n-2];
+        $cpu = $parts[$n-1];
+        if ($cpu == 'unknown') {
+            $cpu = $parts[$n-2];
         }
 
-        switch ($this->sysname) {
+        switch ($sysname) {
             case 'AIX':
-                $this->release = "$parts[3].$parts[2]";
+                $release = "$parts[3].$parts[2]";
                 break;
             case 'Windows':
-                $this->release = $parts[3];
+                $release = $parts[3];
                 break;
             default:
-                $this->release = preg_replace('/-.*/', '', $parts[2]);
+                $release = preg_replace('/-.*/', '', $parts[2]);
                 break;
         }
 
 
-        if (isset($sysmap[$this->sysname])) {
-            $this->sysname = $sysmap[$this->sysname];
+        if (isset($sysmap[$sysname])) {
+            $sysname = $sysmap[$sysname];
         } else {
-            $this->sysname = strtolower($this->sysname);
+            $sysname = strtolower($sysname);
         }
-        if (isset($cpumap[$this->cpu])) {
-            $this->cpu = $cpumap[$this->cpu];
+        if (isset($cpumap[$cpu])) {
+            $cpu = $cpumap[$cpu];
         }
+        $extra = '';
+        return array($sysname, $release, $cpu, $extra, $nodename);
     }
 
     function getSignature()
@@ -160,7 +170,11 @@ class OS_Guess
 
     function matchSignature($match)
     {
-        $fragments = explode('-', $match);
+        if (is_array($match)) {
+            $fragments = $match;
+        } else {
+            $fragments = explode('-', $match);
+        }
         $n = count($fragments);
         $matches = 0;
         if ($n > 0) {