Merge topic 'update-kwsys'

2a943d9 Merge branch 'upstream-kwsys' into update-kwsys
f788d9a KWSys 2013-12-19 (88165c5e)
This commit is contained in:
Brad King 2013-12-20 09:41:27 -05:00 committed by CMake Topic Stage
commit 6f29fdd7cd
6 changed files with 44 additions and 9 deletions

View File

@ -68,7 +68,7 @@ size_t kwsysEncoding_wcstombs(char* dest, const wchar_t* str, size_t n)
char* kwsysEncoding_DupToNarrow(const wchar_t* str) char* kwsysEncoding_DupToNarrow(const wchar_t* str)
{ {
char* ret = NULL; char* ret = NULL;
size_t length = kwsysEncoding_wcstombs(0, str, 0); size_t length = kwsysEncoding_wcstombs(0, str, 0) + 1;
if(length > 0) if(length > 0)
{ {
ret = malloc(length); ret = malloc(length);

View File

@ -81,7 +81,7 @@ namespace @KWSYS_NAMESPACE@
internal_buffer_type *rdbuf() const internal_buffer_type *rdbuf() const
{ {
return buf_.get(); return buf_;
} }
~basic_ifstream() ~basic_ifstream()

View File

@ -2449,6 +2449,7 @@ static void kwsysProcessKill(pid_t process_id)
if(f) if(f)
{ {
size_t nread = fread(buffer, 1, KWSYSPE_PIPE_BUFFER_SIZE, f); size_t nread = fread(buffer, 1, KWSYSPE_PIPE_BUFFER_SIZE, f);
fclose(f);
buffer[nread] = '\0'; buffer[nread] = '\0';
if(nread > 0) if(nread > 0)
{ {
@ -2463,7 +2464,6 @@ static void kwsysProcessKill(pid_t process_id)
} }
} }
} }
fclose(f);
} }
} }
} }

View File

@ -3162,8 +3162,17 @@ bool SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
kwsys_stl::string cores = kwsys_stl::string cores =
this->ExtractValueFromCpuInfoFile(buffer,"cpu cores"); this->ExtractValueFromCpuInfoFile(buffer,"cpu cores");
int numberOfCoresPerCPU=atoi(cores.c_str()); int numberOfCoresPerCPU=atoi(cores.c_str());
if (maxId > 0)
{
this->NumberOfPhysicalCPU=static_cast<unsigned int>( this->NumberOfPhysicalCPU=static_cast<unsigned int>(
numberOfCoresPerCPU*(maxId+1)); numberOfCoresPerCPU*(maxId+1));
}
else
{
// Linux Sparc: get cpu count
this->NumberOfPhysicalCPU=
atoi(this->ExtractValueFromCpuInfoFile(buffer,"ncpus active").c_str());
}
#else // __CYGWIN__ #else // __CYGWIN__
// does not have "physical id" entries, neither "cpu cores" // does not have "physical id" entries, neither "cpu cores"
@ -3185,7 +3194,19 @@ bool SystemInformationImplementation::RetreiveInformationFromCpuInfoFile()
// CPU speed (checking only the first processor) // CPU speed (checking only the first processor)
kwsys_stl::string CPUSpeed = this->ExtractValueFromCpuInfoFile(buffer,"cpu MHz"); kwsys_stl::string CPUSpeed = this->ExtractValueFromCpuInfoFile(buffer,"cpu MHz");
if(!CPUSpeed.empty())
{
this->CPUSpeedInMHz = static_cast<float>(atof(CPUSpeed.c_str())); this->CPUSpeedInMHz = static_cast<float>(atof(CPUSpeed.c_str()));
}
#ifdef __linux
else
{
// Linux Sparc: CPU speed is in Hz and encoded in hexadecimal
CPUSpeed = this->ExtractValueFromCpuInfoFile(buffer,"Cpu0ClkTck");
this->CPUSpeedInMHz = static_cast<float>(
strtoull(CPUSpeed.c_str(),0,16))/1000000.0f;
}
#endif
// Chip family // Chip family
kwsys_stl::string familyStr = kwsys_stl::string familyStr =
@ -4991,7 +5012,12 @@ bool SystemInformationImplementation::QueryHPUXProcessor()
case CPU_PA_RISC2_0: case CPU_PA_RISC2_0:
this->ChipID.Vendor = "Hewlett-Packard"; this->ChipID.Vendor = "Hewlett-Packard";
this->ChipID.Family = 0x200; this->ChipID.Family = 0x200;
# ifdef CPU_HP_INTEL_EM_1_0
case CPU_HP_INTEL_EM_1_0:
# endif
# ifdef CPU_IA64_ARCHREV_0
case CPU_IA64_ARCHREV_0: case CPU_IA64_ARCHREV_0:
# endif
this->ChipID.Vendor = "GenuineIntel"; this->ChipID.Vendor = "GenuineIntel";
this->Features.HasIA64 = true; this->Features.HasIA64 = true;
break; break;

View File

@ -2115,10 +2115,10 @@ bool SystemTools::CopyFileAlways(const char* source, const char* destination)
SystemTools::RemoveFile(destination); SystemTools::RemoveFile(destination);
#if defined(_WIN32) || defined(__CYGWIN__) #if defined(_WIN32) || defined(__CYGWIN__)
kwsys_ios::ofstream fout(destination, kwsys::ofstream fout(destination,
kwsys_ios::ios::binary | kwsys_ios::ios::out | kwsys_ios::ios::trunc); kwsys_ios::ios::binary | kwsys_ios::ios::out | kwsys_ios::ios::trunc);
#else #else
kwsys_ios::ofstream fout(destination, kwsys::ofstream fout(destination,
kwsys_ios::ios::out | kwsys_ios::ios::trunc); kwsys_ios::ios::out | kwsys_ios::ios::trunc);
#endif #endif
if(!fout) if(!fout)

View File

@ -16,14 +16,18 @@
#endif #endif
#include KWSYS_HEADER(Encoding.hxx) #include KWSYS_HEADER(Encoding.hxx)
#include KWSYS_HEADER(Encoding.h)
#include KWSYS_HEADER(ios/iostream) #include KWSYS_HEADER(ios/iostream)
#include <locale.h> #include <locale.h>
#include <string.h>
#include <stdlib.h>
// Work-around CMake dependency scanning limitation. This must // Work-around CMake dependency scanning limitation. This must
// duplicate the above list of headers. // duplicate the above list of headers.
#if 0 #if 0
# include "Encoding.hxx.in" # include "Encoding.hxx.in"
# include "Encoding.h.in"
# include "kwsys_ios_iostream.h.in" # include "kwsys_ios_iostream.h.in"
#endif #endif
@ -68,11 +72,16 @@ static int testHelloWorldEncoding()
std::cout << str << std::endl; std::cout << str << std::endl;
std::wstring wstr = kwsys::Encoding::ToWide(str); std::wstring wstr = kwsys::Encoding::ToWide(str);
std::string str2 = kwsys::Encoding::ToNarrow(wstr); std::string str2 = kwsys::Encoding::ToNarrow(wstr);
if(!wstr.empty() && str != str2) wchar_t* c_wstr = kwsysEncoding_DupToWide(str.c_str());
char* c_str2 = kwsysEncoding_DupToNarrow(c_wstr);
if(!wstr.empty() && (str != str2 || strcmp(c_str2, str.c_str())))
{ {
std::cout << "converted string was different: " << str2 << std::endl; std::cout << "converted string was different: " << str2 << std::endl;
std::cout << "converted string was different: " << c_str2 << std::endl;
ret++; ret++;
} }
free(c_wstr);
free(c_str2);
} }
return ret; return ret;
} }