summaryrefslogtreecommitdiff
path: root/Source/cmSiteNameCommand.cxx
diff options
context:
space:
mode:
authorSebastien Barre <sebastien.barre@kitware.com>2002-01-19 21:22:55 -0500
committerSebastien Barre <sebastien.barre@kitware.com>2002-01-19 21:22:55 -0500
commit4d0e5c020182214415d5bbc561199787b4d7ad69 (patch)
tree4c7bbd43d5698551416c7889e5ec9672fc672125 /Source/cmSiteNameCommand.cxx
parentd24115888572d50bfb9a89e2422ee4ecb10b47c3 (diff)
downloadcmake-4d0e5c020182214415d5bbc561199787b4d7ad69.tar.gz
FIX: if the 'hostname' and 'nslookup' commands were not found from their HOSTNAME and NSLOOKUP cache definition, hard-coded values were used instead, thus causing pb if the corresponding progs were not in the PATH (RunCommand). Now use FindProgram() to be sure to find both, otherwise do nothing and set the site name to "unknown" (arbitrary. could be empty string ? or error ?).
Diffstat (limited to 'Source/cmSiteNameCommand.cxx')
-rw-r--r--Source/cmSiteNameCommand.cxx100
1 files changed, 64 insertions, 36 deletions
diff --git a/Source/cmSiteNameCommand.cxx b/Source/cmSiteNameCommand.cxx
index c4c59cd546..4ccaf8079c 100644
--- a/Source/cmSiteNameCommand.cxx
+++ b/Source/cmSiteNameCommand.cxx
@@ -48,6 +48,7 @@ bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
this->SetError("called with incorrect number of arguments");
return false;
}
+
const char* cacheValue
= m_Makefile->GetDefinition(args[0].c_str());
if(cacheValue)
@@ -55,49 +56,76 @@ bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
return true;
}
- const char* hostname = m_Makefile->GetDefinition("HOSTNAME");
- if(!hostname)
+ const char *temp = m_Makefile->GetDefinition("HOSTNAME");
+ std::string hostname_cmd;
+ if(temp)
{
- hostname = "hostname";
+ hostname_cmd = temp;
}
- const char* nslookup = m_Makefile->GetDefinition("NSLOOKUP");
- if(!nslookup)
+ else
{
- nslookup = "nslookup";
+ hostname_cmd = cmSystemTools::FindProgram("hostname");
}
- std::string host;
- cmSystemTools::RunCommand(hostname,
- host);
- if (host.length())
+
+ std::string siteName = "unknown";
+
+ // try to find the hostname for this computer
+ if (hostname_cmd.length())
{
- // remove any white space from the host name
- std::string hostRegExp = "[ \t\n\r]*([^\t\n\r ]*)[ \t\n\r]*";
- cmRegularExpression hostReg (hostRegExp.c_str());
- if (hostReg.find(host.c_str()))
+ std::string host;
+ cmSystemTools::RunCommand(hostname_cmd.c_str(),
+ host);
+
+ // got the hostname
+ if (host.length())
{
- // strip whitespace
- host = hostReg.match(1);
- }
- }
+ // remove any white space from the host name
+ std::string hostRegExp = "[ \t\n\r]*([^\t\n\r ]*)[ \t\n\r]*";
+ cmRegularExpression hostReg (hostRegExp.c_str());
+ if (hostReg.find(host.c_str()))
+ {
+ // strip whitespace
+ host = hostReg.match(1);
+ }
- std::string siteName = host;
- if(host.length())
- {
- // try to find the domain name for this computer
- std::string nsCmd = nslookup;
- nsCmd += " ";
- nsCmd += host;
- std::string nsOutput;
- cmSystemTools::RunCommand(nsCmd.c_str(),
- nsOutput);
-
- std::string RegExp = ".*Name:[ \t\n]*";
- RegExp += host;
- RegExp += "\\.([^ \t\n\r]*)[ \t\n\r]*Address:";
- cmRegularExpression reg( RegExp.c_str() );
- if(reg.find(nsOutput.c_str()))
- {
- siteName += '.' + cmSystemTools::LowerCase(reg.match(1));
+ if(host.length())
+ {
+ siteName = host;
+
+ temp = m_Makefile->GetDefinition("NSLOOKUP");
+ std::string nslookup_cmd;
+ if(temp)
+ {
+ nslookup_cmd = temp;
+ }
+ else
+ {
+ nslookup_cmd = cmSystemTools::FindProgram("nslookup");
+ }
+
+ // try to find the domain name for this computer
+ if (nslookup_cmd.length())
+ {
+ nslookup_cmd += " ";
+ nslookup_cmd += host;
+ std::string nsOutput;
+ cmSystemTools::RunCommand(nslookup_cmd.c_str(),
+ nsOutput);
+
+ // got the domain name
+ if (nsOutput.length())
+ {
+ std::string RegExp = ".*Name:[ \t\n]*";
+ RegExp += host;
+ RegExp += "\\.([^ \t\n\r]*)[ \t\n\r]*Address:";
+ cmRegularExpression reg( RegExp.c_str() );
+ if(reg.find(nsOutput.c_str()))
+ {
+ siteName += '.' + cmSystemTools::LowerCase(reg.match(1));
+ }
+ }
+ }
+ }
}
}