| /*========================================================================= |
| |
| Program: CMake - Cross-Platform Makefile Generator |
| Module: $RCSfile$ |
| Language: C++ |
| Date: $Date$ |
| Version: $Revision$ |
| |
| Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. |
| See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. |
| |
| This software is distributed WITHOUT ANY WARRANTY; without even |
| the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
| PURPOSE. See the above copyright notices for more information. |
| |
| =========================================================================*/ |
| #include "cmSiteNameCommand.h" |
| |
| #include <cmsys/RegularExpression.hxx> |
| |
| // cmSiteNameCommand |
| bool cmSiteNameCommand |
| ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) |
| { |
| if(args.size() != 1 ) |
| { |
| this->SetError("called with incorrect number of arguments"); |
| return false; |
| } |
| std::vector<std::string> paths; |
| paths.push_back("/usr/bsd"); |
| paths.push_back("/usr/sbin"); |
| paths.push_back("/usr/bin"); |
| paths.push_back("/bin"); |
| paths.push_back("/sbin"); |
| paths.push_back("/usr/local/bin"); |
| |
| const char* cacheValue |
| = this->Makefile->GetDefinition(args[0].c_str()); |
| if(cacheValue) |
| { |
| return true; |
| } |
| |
| const char *temp = this->Makefile->GetDefinition("HOSTNAME"); |
| std::string hostname_cmd; |
| if(temp) |
| { |
| hostname_cmd = temp; |
| } |
| else |
| { |
| hostname_cmd = cmSystemTools::FindProgram("hostname", paths); |
| } |
| |
| std::string siteName = "unknown"; |
| #if defined(_WIN32) && !defined(__CYGWIN__) |
| std::string host; |
| if(cmSystemTools::ReadRegistryValue |
| ("HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\" |
| "Control\\ComputerName\\ComputerName;ComputerName", host)) |
| { |
| siteName = host; |
| } |
| #else |
| // try to find the hostname for this computer |
| if (!cmSystemTools::IsOff(hostname_cmd.c_str())) |
| { |
| std::string host; |
| cmSystemTools::RunSingleCommand(hostname_cmd.c_str(), |
| &host, 0, 0, false); |
| |
| // got the hostname |
| if (host.length()) |
| { |
| // remove any white space from the host name |
| std::string hostRegExp = "[ \t\n\r]*([^\t\n\r ]*)[ \t\n\r]*"; |
| cmsys::RegularExpression hostReg (hostRegExp.c_str()); |
| if (hostReg.find(host.c_str())) |
| { |
| // strip whitespace |
| host = hostReg.match(1); |
| } |
| |
| if(host.length()) |
| { |
| siteName = host; |
| } |
| } |
| } |
| #endif |
| this->Makefile-> |
| AddCacheDefinition(args[0].c_str(), |
| siteName.c_str(), |
| "Name of the computer/site where compile is being run", |
| cmCacheManager::STRING); |
| |
| return true; |
| } |
| |