Chris Hillery has proposed merging lp:~zorba-coders/zorba/bug-1188058 into 
lp:zorba/system-module.

Requested reviews:
  Zorba Coders (zorba-coders)
Related bugs:
  Bug #1188058 in Zorba: "Update non-core module "system""
  https://bugs.launchpad.net/zorba/+bug/1188058

For more details, see:
https://code.launchpad.net/~zorba-coders/zorba/bug-1188058/+merge/178905
-- 
https://code.launchpad.net/~zorba-coders/zorba/bug-1188058/+merge/178905
Your team Zorba Coders is requested to review the proposed merge of 
lp:~zorba-coders/zorba/bug-1188058 into lp:zorba/system-module.
=== modified file 'src/CMakeLists.txt'
--- src/CMakeLists.txt	2011-07-26 10:43:21 +0000
+++ src/CMakeLists.txt	2013-08-07 08:12:27 +0000
@@ -11,9 +11,4 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-
-# all external module libraries are generated in the directory
-# of the corresponding .xq file
-MESSAGE(STATUS "Add com")
-ADD_SUBDIRECTORY(com)
-MESSAGE(STATUS "End modules")
+DECLARE_ZORBA_MODULE (URI "http://zorba.io/modules/system"; VERSION 1.0 FILE "system.xq")

=== removed directory 'src/com'
=== removed file 'src/com/CMakeLists.txt'
--- src/com/CMakeLists.txt	2011-10-06 08:19:44 +0000
+++ src/com/CMakeLists.txt	1970-01-01 00:00:00 +0000
@@ -1,14 +0,0 @@
-# Copyright 2006-2008 The FLWOR Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-ADD_SUBDIRECTORY(zorba-xquery)

=== removed directory 'src/com/zorba-xquery'
=== removed file 'src/com/zorba-xquery/CMakeLists.txt'
--- src/com/zorba-xquery/CMakeLists.txt	2011-10-06 08:19:44 +0000
+++ src/com/zorba-xquery/CMakeLists.txt	1970-01-01 00:00:00 +0000
@@ -1,14 +0,0 @@
-# Copyright 2006-2008 The FLWOR Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-ADD_SUBDIRECTORY(www)

=== removed directory 'src/com/zorba-xquery/www'
=== removed file 'src/com/zorba-xquery/www/CMakeLists.txt'
--- src/com/zorba-xquery/www/CMakeLists.txt	2011-10-06 08:19:44 +0000
+++ src/com/zorba-xquery/www/CMakeLists.txt	1970-01-01 00:00:00 +0000
@@ -1,14 +0,0 @@
-# Copyright 2006-2008 The FLWOR Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-ADD_SUBDIRECTORY(modules)

=== removed directory 'src/com/zorba-xquery/www/modules'
=== removed file 'src/com/zorba-xquery/www/modules/CMakeLists.txt'
--- src/com/zorba-xquery/www/modules/CMakeLists.txt	2011-07-01 09:24:04 +0000
+++ src/com/zorba-xquery/www/modules/CMakeLists.txt	1970-01-01 00:00:00 +0000
@@ -1,14 +0,0 @@
-# Copyright 2006-2008 The FLWOR Foundation.
-# 
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-# 
-# http://www.apache.org/licenses/LICENSE-2.0
-# 
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-DECLARE_ZORBA_MODULE (URI "http://www.zorba-xquery.com/modules/system"; VERSION 1.0 FILE "system.xq")

=== removed file 'src/com/zorba-xquery/www/modules/system.xq'
--- src/com/zorba-xquery/www/modules/system.xq	2013-06-15 19:49:56 +0000
+++ src/com/zorba-xquery/www/modules/system.xq	1970-01-01 00:00:00 +0000
@@ -1,211 +0,0 @@
-xquery version "3.0";
-
-(:
- : Copyright 2006-2009 The FLWOR Foundation.
- :
- : Licensed under the Apache License, Version 2.0 (the "License");
- : you may not use this file except in compliance with the License.
- : You may obtain a copy of the License at
- :
- : http://www.apache.org/licenses/LICENSE-2.0
- :
- : Unless required by applicable law or agreed to in writing, software
- : distributed under the License is distributed on an "AS IS" BASIS,
- : WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- : See the License for the specific language governing permissions and
- : limitations under the License.
-:)
-(:~
- : The system module allows developers to access system properties.
- : Part of these system properties are environment variables,
- : local variable to the process running Zorba, and properties defined by Zorba.
- : <br />
- : To avoid conflicts between environment variables and properties defined by Zorba,
- : all environment variables are prefixed with <i>env.</i>.
- : <br />
- : For instance, the following query: <br />
- : <pre class="ace-static">
- : import module namespace system = "http://www.zorba-xquery.com/modules/system";;
- : 
- : for $prop in system:properties()
- : return concat($prop, ": ", system:property($prop), "
- : ")
- : </pre>
- : <br />
- : Will output:
- : <pre class="ace-static">
- : env.TERM_PROGRAM: Apple_Terminal
- : ...
- : </pre>
- : In this example, it is important to notice that the environnement variable PATH
- : with the key env.PATH.
- :
- : @author Markus Pilman
- : @project Zorba/Input Output/System
- :)
-module namespace system = 'http://www.zorba-xquery.com/modules/system';
-
-declare namespace an = "http://www.zorba-xquery.com/annotations";;
-
-declare namespace ver = "http://www.zorba-xquery.com/options/versioning";;
-declare option ver:module-version "1.0";
-
-(:~
- : The name of the operating system (os.name).
- :)
-declare variable $system:os-name as xs:string := "os.name";
-
-(:~
- : The name of the computer the process is running on (os.node.name).
- :)
-declare variable $system:os-node-name as xs:string := "os.node.name";
-
-(:~
- : The major version number of the Windows installation or
- : an empty string if the process does not run on a Windows installation
- : (os.version.major).
- : <b>Works on Windows only.</b>
- :)
-declare variable $system:os-version-major as xs:string := "os.version.major";
-
-(:~
- : The minor version number of the Windows installation or
- : an empty string if the process does not run on a Windows installation
- : (os.version.minor).
- : <b>Works on Windows only.</b>
- :)
-declare variable $system:os-version-minor as xs:string := "os.version.minor";
-
-(:~
- : The build number of the Windows installation or
- : an empty string if the process does not run on a Windows installation
- : (os.version.build).
- : <b>Works on Windows only.</b>
- :)
-declare variable $system:os-version-build as xs:string := "os.version.build";
-
-(:~
- : The release of this UNIX installation or
- : an empty string if the process does not run on a UNIX/Linux installation
- : (os.version.release).
- : <b>Works on UNIX based operating systems only.</b>
- :)
-declare variable $system:os-version-release as xs:string := "os.version.release";
-(:~
- : The version of this UNIX installation or
- : an empty string if the process does not run on a UNIX/Linux installation
- : (os.version.version).
- : <b>Works on UNIX based operating systems only.</b>
- :)
-declare variable $system:os-version-version as xs:string := "os.version.version";
-
-(:~
- : The version of the Operating System.
- :)
-declare variable $system:os-version as xs:string := "os.version";
-
-(:~
- : The name of the processor architecture (os.arch).
- : For example x86 or x86_64.
- :)
-declare variable $system:os-arch as xs:string := "os.arch";
-
-(:~
- : True if system architecture is 64bits (os.is64).
- :)
-declare variable $system:os-is64 as xs:string := "os.is64";
-
-(:~
- : Number of logical processors in the system (hardware.logical.cpu).
- : This information is not available under Mac OS X.
- :)
-declare variable $system:hardware-logical-cpu as xs:string := "hardware.logical.cpu";
-
-(:~
- : Number of physical processors in the system (hardware.logical.cpu).
- :)
-declare variable $system:hardware-physical-cpu as xs:string := "hardware.physical.cpu";
-
-(:~
- : number of logical per physical processors in the system (hardware.logical.per.physical.cpu).
- : This information is not available under Mac OS X.
- :)
-declare variable $system:hardware-logical-per-physical-cpu as xs:string := "hardware.logical.per.physical.cpu";
-
-(:~
- : Physical memory available (hardware.physical.memory).
- :)
-declare variable $system:hardware-physical-memory as xs:string := "hardware.physical.memory";
-(:~
- : Virtual memory available (hardware.virtual.memory).
- :)
-declare variable $system:hardware-virtual-memory as xs:string := "hardware.virtual.memory";
-(:~
- : Gets the hardware manufacturer (hardware.manufacturer).
- :)
-declare variable $system:hardware-manufacturer as xs:string := "hardware.manufacturer";
-
-(:~
- : The Linux distribution, Zorba is running on (linux.distributor).
- : <b>Works on UNIX based operating systems only.</b>
- :)
-declare variable $system:linux-distributor as xs:string := "linux.distributor";
-
-(:~
- : The version of the Linux distribution, Zorba is running on (linux.distributor.version).
- : <b>Works on UNIX based operating systems only.</b>
- :)
-declare variable $system:linux-distributor-version as xs:string := "linux.distributor.version";
-
-(:~
- : The username, with which this process was started (user.name).
- : On Unix, this variable is only available if the USER environment
- : variable is set (e.g. it might not be available in a cronjob).
- :)
-declare variable $system:user-name as xs:string := "user.name";
-
-(:~
- : The Zorba module path, that is the paths in which Zorba looks
- : for modules (zorba.module.path).
- :)
-declare variable $system:zorba-module-path as xs:string := "zorba.module.path";
-
-(:~
- : Zorba version in the format Major.Minor.Patch (zorba.version).
- :)
-declare variable $system:zorba-version as xs:string := "zorba.version";
-
-(:~
- : Zorba major version (zorba.version.major).
- :)
-declare variable $system:zorba-version-major as xs:string := "zorba.version.major";
-
-(:~
- : Zorba minor version (zorba.version.minor).
- :)
-declare variable $system:zorba-version-minor as xs:string := "zorba.version.minor";
-
-(:~
- : Zorba patch version (zorba.version.patch).
- :)
-declare variable $system:zorba-version-patch as xs:string := "zorba.version.patch";
-
-(:~
- : Gets the system property indicated by the specified key.
- :
- : @param $key The name of the system property.
- : @return The string value of the system property, or an empty sequence if there is no property with that key.
- :)
-declare %an:nondeterministic function system:property($key as xs:string) as xs:string? external;
-
-(:~
- : This function retrieves the names of the current system properties.
- : This list includes environment variables, local variable to the process running Zorba, and properties defined by Zorba.
- : <br />
- : To avoid conflicts between environment variables and properties defined by Zorba,
- : all environment variables are prefixed with <i>env.</i>.
- :
- : @return List of all system properties.
- :)
-declare %an:nondeterministic function system:properties() as xs:string* external;
-

=== removed directory 'src/com/zorba-xquery/www/modules/system.xq.src'
=== removed file 'src/com/zorba-xquery/www/modules/system.xq.src/system.cpp'
--- src/com/zorba-xquery/www/modules/system.xq.src/system.cpp	2012-07-19 12:29:57 +0000
+++ src/com/zorba-xquery/www/modules/system.xq.src/system.cpp	1970-01-01 00:00:00 +0000
@@ -1,606 +0,0 @@
-/*
- * Copyright 2006-2008 The FLWOR Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-#include <cstdlib>
-#include <cstdio>
-#include <sstream>
-
-#ifdef WIN32
-# include <Windows.h>
-# include <malloc.h>
-# include <stdio.h>
-# include <tchar.h>
-# include <winreg.h>
-#else
-#include <sys/utsname.h>
-# ifndef __APPLE__
-#   include <sys/sysinfo.h>
-# else
-#   include <sys/param.h>
-#   include <sys/sysctl.h>
-# endif
-#endif
-
-#include <zorba/zorba_string.h>
-#include <zorba/singleton_item_sequence.h>
-#include <zorba/vector_item_sequence.h>
-#include <zorba/empty_sequence.h>
-#include <zorba/item_factory.h>
-
-
-#ifdef LINUX
-#include <iostream>
-#include <string>
-#include <fstream>
-#include <unistd.h>
-extern char** environ;
-#elif defined APPLE
-# include <crt_externs.h>
-#endif
-
-#include "system.h"
-
-
-namespace zorba { namespace system {
-
-  const String SystemModule::SYSTEM_MODULE_NAMESPACE = "http://www.zorba-xquery.com/modules/system";;
-
-#ifdef WIN32
-  typedef BOOL (WINAPI *LPFN_GLPI)(
-      PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,
-      PDWORD);
-
-  // Helper function to count set bits in the processor mask.
-  DWORD CountSetBits(ULONG_PTR bitMask)
-  {
-    DWORD LSHIFT = sizeof(ULONG_PTR)*8 - 1;
-    DWORD bitSetCount = 0;
-    ULONG_PTR bitTest = (ULONG_PTR)1 << LSHIFT;
-    DWORD i;
-    for (i = 0; i <= LSHIFT; ++i)
-    {
-      bitSetCount += ((bitMask & bitTest)?1:0);
-      bitTest/=2;
-    }
-
-    return bitSetCount;
-  }
-
-  DWORD numaNodeCount = 0;
-  DWORD processorPackageCount = 0;
-  DWORD logicalProcessorCount = 0;
-  DWORD processorCoreCount = 0;
-  DWORD processorL1CacheCount = 0;
-  DWORD processorL2CacheCount = 0;
-  DWORD processorL3CacheCount = 0;
-  static void countProcessors() {
-    LPFN_GLPI glpi;
-    BOOL done = FALSE;
-    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION buffer = NULL;
-    PSYSTEM_LOGICAL_PROCESSOR_INFORMATION ptr = NULL;
-    DWORD returnLength = 0;
-    DWORD byteOffset = 0;
-    PCACHE_DESCRIPTOR Cache;
-
-    glpi = (LPFN_GLPI) GetProcAddress(GetModuleHandle(TEXT("kernel32")), "GetLogicalProcessorInformation");
-    if (NULL == glpi) {
-      // GetLogicalProcessorInformation is not supported.
-      return;
-    }
-
-    while (!done)
-    {
-      DWORD rc = glpi(buffer, &returnLength);
-      if (FALSE == rc)
-      {
-        if (GetLastError() == ERROR_INSUFFICIENT_BUFFER)
-        {
-          if (buffer)
-            free(buffer);
-          buffer = (PSYSTEM_LOGICAL_PROCESSOR_INFORMATION)malloc(returnLength);
-          if (NULL == buffer)
-          {
-            // Error: Allocation failure
-            return;
-          }
-        } else {
-          // Error %d, GetLastError()
-          return;
-        }
-      } else {
-        done = TRUE;
-      }
-    }
-    ptr = buffer;
-    while (byteOffset + sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION) <= returnLength)
-    {
-      switch (ptr->Relationship)
-      {
-        case RelationNumaNode:
-          // Non-NUMA systems report a single record of this type.
-          numaNodeCount++;
-          break;
-        case RelationProcessorCore:
-          processorCoreCount++;
-          // A hyperthreaded core supplies more than one logical processor.
-          logicalProcessorCount += CountSetBits(ptr->ProcessorMask);
-          break;
-
-        case RelationCache:
-          // Cache data is in ptr->Cache, one CACHE_DESCRIPTOR structure for each cache.
-          Cache = &ptr->Cache;
-          if (Cache->Level == 1)
-          {
-            processorL1CacheCount++;
-          }
-          else if (Cache->Level == 2)
-          {
-            processorL2CacheCount++;
-          }
-          else if (Cache->Level == 3)
-          {
-            processorL3CacheCount++;
-          }
-          break;
-        case RelationProcessorPackage:
-          // Logical processors share a physical package.
-          processorPackageCount++;
-          break;
-        default:
-          // Error: Unsupported LOGICAL_PROCESSOR_RELATIONSHIP value.
-          break;
-      }
-      byteOffset += sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);
-      ptr++;
-    }
-    free(buffer);
-    return;
-  }
-
-#endif
-
-#ifdef LINUX
-  static void trim(std::string& str, char delim)
-  {
-    std::string::size_type pos = str.find_last_not_of(delim);
-    if(pos != std::string::npos) {
-      str.erase(pos + 1);
-      pos = str.find_first_not_of(delim);
-      if(pos != std::string::npos) str.erase(0, pos);
-    }
-    else str.erase(str.begin(), str.end());
-  }
-
-
-  int logical=0;
-  int cores=0;
-  int physical=0;
-
-
-  static void countProcessors() {
-    logical=0;
-    cores=1; // per default: single core processor
-    physical=0;
-
-    std::ifstream in("/proc/cpuinfo");
-    if(in) {
-      std::string name;
-      std::string value;
-
-      while(in) {
-        getline(in, name, ':');
-        trim (name, ' ');
-        trim (name, '\t');
-        trim (name, '\n');
-        getline(in, value);
-        trim (value, ' ');
-        trim (value, '\t');
-        if (name == "processor") {
-          logical++;
-        }
-
-        if (name == "cpu cores") {
-          cores = atoi(value.c_str());
-        }
-      }
-      physical = logical/cores;
-      in.close();
-    }
-  }
-
-
-
-  static std::pair<std::string, std::string> getDistribution() {
-    std::pair<std::string, std::string> lRes;
-    FILE *pipe;
-    const char* command = "lsb_release -r -i";
-    pipe = (FILE*) popen(command, "r");
-
-    char line[1024];
-    while (fgets(line, sizeof(line), pipe)) {
-      std::stringstream s(line);
-      std::string name, value;
-      getline(s, name, ':');
-      trim(name, ' ');
-      trim(name, '\t');
-      getline(s, value, ':');
-      trim(value, ' ');
-      trim(value, '\t');
-      trim(value, '\n');
-      if (name == "Distributor ID") {
-        lRes.first = value;
-      } else {
-        lRes.second = value;
-      }
-    }
-    return lRes;
-  }
-#endif
-
-  SystemModule::SystemModule()
-    : thePropertyFunction(0), thePropertiesFunction(0)
-  {
-  }
-
-  ExternalFunction* SystemModule::getExternalFunction(const String& localName) {
-    if (localName == "properties") {
-      if (!thePropertiesFunction)
-        thePropertiesFunction = new PropertiesFunction(this);
-      return thePropertiesFunction;
-    } else if (localName == "property") {
-      if (!thePropertyFunction)
-        thePropertyFunction = new PropertyFunction(this);
-      return thePropertyFunction;
-    }
-    return 0;
-  }
-
-  void SystemModule::destroy() {
-    delete this;
-  }
-
-  SystemModule::~SystemModule() {
-    delete thePropertyFunction;
-    delete thePropertiesFunction;
-  }
-
-
-  SystemFunction::SystemFunction(const ExternalModule* aModule)
-    : theModule(aModule), theFactory(Zorba::getInstance(0)->getItemFactory())
-  {
-#ifdef WIN32
-
-    {
-      DWORD nodeNameLength = MAX_COMPUTERNAME_LENGTH + 1;
-      TCHAR nodeName[MAX_COMPUTERNAME_LENGTH + 1];
-      char nodeNameC[MAX_COMPUTERNAME_LENGTH + 1];
-      GetComputerName(nodeName, &nodeNameLength);
-      for (DWORD i = 0; i < nodeNameLength; ++i) {
-        nodeNameC[i] = static_cast<char>(nodeName[i]);
-      }
-      nodeNameC[nodeNameLength] = NULL;  // Terminate string
-      theProperties.insert(std::make_pair("os.node.name", nodeNameC));
-    }
-
-    {
-      DWORD dwVersion = 0;
-      DWORD dwMajorVersion = 0;
-      DWORD dwMinorVersion = 0;
-      DWORD dwBuild = 0;
-
-      dwVersion = GetVersion();
-
-      // Get the Windows version.
-      dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
-      dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
-
-      // Get the build number.
-      if (dwVersion < 0x80000000)
-        dwBuild = (DWORD)(HIWORD(dwVersion));
-
-      std::string major;
-      std::string minor;
-      std::string build;
-      {
-        std::stringstream sMajor;
-        sMajor << dwMajorVersion;
-        std::stringstream sMinor;
-        sMinor << dwMinorVersion;
-        std::stringstream sBuild;
-        sBuild << dwBuild;
-
-        major = sMajor.str();
-        minor = sMinor.str();
-        build = sBuild.str();
-      }
-      theProperties.insert(std::make_pair("os.version.major", major));
-      theProperties.insert(std::make_pair("os.version.minor", minor));
-      theProperties.insert(std::make_pair("os.version.build", build));
-      theProperties.insert(std::make_pair("os.version", major + "." + minor + "." + build));
-      // http://msdn.microsoft.com/en-us/library/ms724832(v=VS.85).aspx
-      std::string operativeSystem;
-      theProperties.insert(std::make_pair("os.name", "Windows"));
-      {
-        countProcessors();
-        std::stringstream logicalProcessors;
-        logicalProcessors << processorPackageCount;
-        std::stringstream physicalProcessors;
-        physicalProcessors << logicalProcessorCount;
-        std::stringstream logicalPerPhysicalProcessors;
-        logicalPerPhysicalProcessors << (logicalProcessorCount / processorPackageCount );
-        theProperties.insert(std::make_pair("hardware.physical.cpu", logicalProcessors.str() ));
-        theProperties.insert(std::make_pair("hardware.logical.cpu", physicalProcessors.str() ));
-        theProperties.insert(std::make_pair("hardware.logical.per.physical.cpu", logicalPerPhysicalProcessors.str() ));
-      }
-      {
-        MEMORYSTATUSEX statex;
-        statex.dwLength = sizeof (statex);
-        GlobalMemoryStatusEx (&statex);
-        std::stringstream virtualMemory;
-        virtualMemory << statex.ullTotalVirtual;
-        std::stringstream physicalMemory;
-        physicalMemory << statex.ullTotalPhys;
-        theProperties.insert(std::make_pair("hardware.virtual.memory", virtualMemory.str() ));
-        theProperties.insert(std::make_pair("hardware.physical.memory", physicalMemory.str() ));
-      }
-
-    }
-    {
-      DWORD userNameLength = 1023;
-      TCHAR userName[1024];
-      char userNameC[1024];
-      GetUserName(userName, &userNameLength);
-      for (DWORD i = 0; i < userNameLength; ++i) {
-        userNameC[i] = static_cast<char>(userName[i]);
-      }
-      theProperties.insert(std::make_pair("user.name", userNameC));
-    }
-    {
-      SYSTEM_INFO info;
-      GetSystemInfo(&info);
-      if (info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
-        theProperties.insert(std::make_pair("os.arch", "x86_64"));
-        theProperties.insert(std::make_pair("os.is64", "true"));
-      } else if (info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64) {
-        theProperties.insert(std::make_pair("os.arch", "ia64"));
-        theProperties.insert(std::make_pair("os.is64", "true"));
-      } else if (info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL) {
-        theProperties.insert(std::make_pair("os.arch", "i386"));
-        theProperties.insert(std::make_pair("os.is64", "false"));
-      }
-    }
-
-    {
-      HKEY keyHandle;
-      TCHAR value [1024];
-      char valueC [1024];
-      DWORD size = 0;
-      DWORD Type;
-      if( RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"HARDWARE\\DESCRIPTION\\System\\BIOS", 0, KEY_QUERY_VALUE, &keyHandle) == ERROR_SUCCESS)
-      {
-        RegQueryValueEx( keyHandle, L"SystemManufacturer", NULL, &Type, (LPBYTE)value, &size);
-        for (DWORD i = 0; i < size; ++i) {
-          valueC[i] = static_cast<char>(value[i]);
-        }
-        if (size > 0)
-          theProperties.insert(std::make_pair("hardware.manufacturer", valueC));
-      }
-      RegCloseKey(keyHandle);
-    }
-
-
-#else
-    struct utsname osname;
-    if (uname(&osname) == 0)
-    {
-      theProperties.insert(std::make_pair("os.name", osname.sysname));
-      theProperties.insert(std::make_pair("os.node.name", osname.nodename));
-      theProperties.insert(std::make_pair("os.version.release", osname.release));
-      theProperties.insert(std::make_pair("os.version.version", osname.version));
-      theProperties.insert(std::make_pair("os.version", osname.release));
-      theProperties.insert(std::make_pair("os.arch", osname.machine));
-    }
-    char* lUser = getenv("USER");
-    if (lUser)
-    {
-      theProperties.insert(std::make_pair("user.name", lUser));
-    }
-    theProperties.insert(std::make_pair("os.is64", "false"));
-    {
-#ifdef __APPLE__
-      int mib[2];
-      size_t len = 4;
-      uint32_t res = 0;
-
-      mib[0] = CTL_HW;
-      mib[1] = HW_NCPU;
-      sysctl(mib, 2, &res, &len, NULL, NULL);
-      std::stringstream lStream;
-      lStream << res;
-      theProperties.insert(std::make_pair("hardware.physical.cpu", lStream.str()));
-#else
-      countProcessors();
-      std::stringstream logicalProcessor;
-      std::stringstream physicalProcessor;
-      std::stringstream logicalPerPhysicalProcessors;
-      logicalProcessor << logical;
-      physicalProcessor << physical;
-      logicalPerPhysicalProcessors << cores;
-      theProperties.insert(std::make_pair("hardware.logical.per.physical.cpu", logicalPerPhysicalProcessors.str() ));
-      theProperties.insert(std::make_pair("hardware.physical.cpu", physicalProcessor.str() ));
-      theProperties.insert(std::make_pair("hardware.logical.cpu", logicalProcessor.str() ));
-#endif
-    }
-    {
-# ifdef LINUX
-      struct sysinfo sys_info;
-      if(sysinfo(&sys_info) == 0) {
-        std::stringstream memory;
-        memory << sys_info.totalram;
-        std::stringstream swap;
-        swap << sys_info.totalswap;
-        theProperties.insert(std::make_pair("hardware.virtual.memory", swap.str() ));
-        theProperties.insert(std::make_pair("hardware.physical.memory", memory.str() ));
-      }
-# elif defined __APPLE__
-      int mib[2];
-      size_t len = 8;
-      uint64_t res = 0;
-
-      mib[0] = CTL_HW;
-      mib[1] = HW_MEMSIZE;
-      sysctl(mib, 2, &res, &len, NULL, NULL);
-      std::stringstream lStream;
-      lStream << res;
-      theProperties.insert(std::make_pair("hardware.physical.memory", lStream.str()));
-# endif
-    }
-
-#endif
-#ifdef LINUX
-    theProperties.insert(std::make_pair("linux.distributor", ""));
-    theProperties.insert(std::make_pair("linux.distributor.version", ""));
-#endif
-    theProperties.insert(std::make_pair("zorba.version", Zorba::version().getVersion()));
-    theProperties.insert(std::make_pair("zorba.version.major", intToString(Zorba::version().getMajorVersion())));
-    theProperties.insert(std::make_pair("zorba.version.minor", intToString(Zorba::version().getMinorVersion())));
-    theProperties.insert(std::make_pair("zorba.version.patch", intToString(Zorba::version().getPatchVersion())));
-  }
-
-  String SystemFunction::intToString(int v) {
-    std::stringstream ss;
-    ss << v;
-    return ss.str();
-  }
-
-  bool SystemFunction::getEnv(const String& name, String& value) const
-  {
-    char* v = getenv(name.c_str());
-    if (v == NULL) return false;
-    value = v;
-    return true;
-  }
-
-  void SystemFunction::getEnvNames(std::vector<Item>& names) const
-  {
-#ifdef WIN32
-    // put in the environment variables
-    TCHAR *l_EnvStr;
-    l_EnvStr = GetEnvironmentStrings();
-
-    LPTSTR l_str = l_EnvStr;
-
-    int count = 0;
-    while (true)
-    {
-      if (*l_str == 0) break;
-      while (*l_str != 0) l_str++;
-      l_str++;
-      count++;
-    }
-
-    for (int i = 0; i < count; i++)
-    {
-      char lStr[1024];
-      memset(lStr, 0, 1024);
-      for (int i =0; i<1023 && l_EnvStr[i]; ++i) {
-        lStr[i] = (char) l_EnvStr[i];
-      }
-      std::string e(lStr);
-      std::string name("env.");
-      name += e.substr(0, e.find('='));
-      String value = e.substr(e.find('=') + 1);
-      if (name != "env.")
-        names.push_back(theFactory->createString(name));
-      while(*l_EnvStr != '\0')
-        l_EnvStr++;
-      l_EnvStr++;
-    }
-    //FreeEnvironmentStrings(l_EnvStr);
-#else
-# ifdef APPLE
-    char** environ = *_NSGetEnviron();
-# endif // APPLE
-    for (int i = 0; environ[i] != NULL; ++i) {
-      std::string e(environ[i]);
-      String name("env.");
-      name += e.substr(0, e.find('='));
-      names.push_back(theFactory->createString(name));
-    }
-#endif
-  }
-
-  ItemSequence_t PropertiesFunction::evaluate(
-      const ExternalFunction::Arguments_t& args) const {
-    std::vector<Item> lRes;
-    getEnvNames(lRes);
-    for (std::map<String, String>::const_iterator i = theProperties.begin();
-        i != theProperties.end(); ++i) {
-      Item lItem = theFactory->createString(i->first.c_str());
-      lRes.push_back(lItem);
-    }
-    // insert the zorba module path
-    lRes.push_back(theFactory->createString("zorba.module.path"));
-    return ItemSequence_t(new VectorItemSequence(lRes));
-  }
-
-  ItemSequence_t PropertyFunction::evaluate(
-      const ExternalFunction::Arguments_t& args,
-      const StaticContext* sctx,
-      const DynamicContext* dctx) const {
-    Item item;
-    Iterator_t arg0_iter = args[0]->getIterator();
-    arg0_iter->open();
-    arg0_iter->next(item);
-    arg0_iter->close();
-    String envS = item.getStringValue();
-    String lRes;
-    if (envS == "zorba.module.path") {
-      std::vector<String> lModulePaths;
-      sctx->getFullModulePaths(lModulePaths);
-      if (lModulePaths.size() == 0)
-        return ItemSequence_t(new SingletonItemSequence(theFactory->createString("")));
-      lRes = lModulePaths[0];
-      for (std::vector<String>::iterator i = lModulePaths.begin() + 1; i != lModulePaths.end(); ++i) {
-#ifdef WIN32
-        lRes += ";";
-#else
-        lRes += ":";
-#endif
-        lRes += *i;
-      }
-    } else if (envS.substr(0,4) == "env.") {
-      //Sleep(5000);
-      if (!getEnv(envS.substr(4), lRes)) {
-        return ItemSequence_t(new EmptySequence());
-      }
-#ifdef LINUX
-    } else if (envS == "linux.distributor") {
-      lRes = getDistribution().first;
-    } else if (envS == "linux.distributor.version") {
-      lRes = getDistribution().second;
-#endif
-    } else {
-      std::map<String, String>::const_iterator i;
-      if ((i = theProperties.find(envS.c_str())) != theProperties.end()) {
-        lRes = i->second;
-      } else {
-        return ItemSequence_t(new EmptySequence());
-      }
-    }
-    return ItemSequence_t(new SingletonItemSequence(theFactory->createString(lRes)));
-  }
-}} // namespace zorba, system
-

=== removed file 'src/com/zorba-xquery/www/modules/system.xq.src/system.h'
--- src/com/zorba-xquery/www/modules/system.xq.src/system.h	2011-08-05 02:22:28 +0000
+++ src/com/zorba-xquery/www/modules/system.xq.src/system.h	1970-01-01 00:00:00 +0000
@@ -1,93 +0,0 @@
-/*
- * Copyright 2006-2008 The FLWOR Foundation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef __COM_ZORBA_WWW_MODULES_SYSTEM_H__
-#define __COM_ZORBA_WWW_MODULES_SYSTEM_H__
-#include <vector>
-#include <map>
-
-#include <zorba/zorba.h>
-#include <zorba/external_module.h>
-#include <zorba/function.h>
-
-namespace zorba { namespace system {
-  class SystemModule : public ExternalModule {
-    private:
-      ExternalFunction* thePropertyFunction;
-      ExternalFunction* thePropertiesFunction;
-      const static String SYSTEM_MODULE_NAMESPACE;
-    public:
-      SystemModule();
-      virtual ~SystemModule();
-    public:
-      virtual String getURI() const { return SYSTEM_MODULE_NAMESPACE; }
-
-      virtual ExternalFunction* getExternalFunction(const String& localName);
-
-      virtual void destroy();
-  };
-
-  class SystemFunction {
-    protected:
-      const ExternalModule* theModule;
-      ItemFactory* theFactory;
-      std::map<String, String> theProperties;
-    public:
-      SystemFunction(const ExternalModule* aModule);
-    protected:
-      String getURI() const { return theModule->getURI(); }
-      bool getEnv(const String& name, String& value) const;
-      void getEnvNames(std::vector<Item>& names) const;
-      String intToString(int v);
-  };
-
-  class PropertiesFunction : public NonContextualExternalFunction, public SystemFunction {
-    public:
-      PropertiesFunction(const ExternalModule* mod) : SystemFunction(mod) {}
-
-      virtual String getLocalName() const { return "properties"; }
-
-      virtual ItemSequence_t 
-      evaluate(const ExternalFunction::Arguments_t& args) const;
-      virtual String getURI() const { return SystemFunction::getURI(); }
-  };
-
-  class PropertyFunction : public ContextualExternalFunction, public SystemFunction {
-    public:
-      PropertyFunction(const ExternalModule* mod) : SystemFunction(mod) {}
-
-      virtual String getLocalName() const { return "property"; }
-
-      virtual ItemSequence_t 
-      evaluate(const ExternalFunction::Arguments_t& args,
-               const StaticContext* sctx,
-               const DynamicContext* dctx) const;
-      virtual String getURI() const { return SystemFunction::getURI(); }
-  };
-
-} } // namespace zorba, namespace system
-
-#ifdef WIN32
-#  define DLL_EXPORT __declspec(dllexport)
-#else
-#  define DLL_EXPORT __attribute__ ((visibility("default")))
-#endif
-
-extern "C" DLL_EXPORT zorba::ExternalModule* createModule() {
-  return new zorba::system::SystemModule();
-}
-
-#endif // __COM_ZORBA_WWW_MODULES_SYSTEM_H__

-- 
Mailing list: https://launchpad.net/~zorba-coders
Post to     : zorba-coders@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zorba-coders
More help   : https://help.launchpad.net/ListHelp

Reply via email to