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 ?).
This commit is contained in:
parent
d241158885
commit
4d0e5c0201
@ -48,6 +48,7 @@ bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
|
|||||||
this->SetError("called with incorrect number of arguments");
|
this->SetError("called with incorrect number of arguments");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* cacheValue
|
const char* cacheValue
|
||||||
= m_Makefile->GetDefinition(args[0].c_str());
|
= m_Makefile->GetDefinition(args[0].c_str());
|
||||||
if(cacheValue)
|
if(cacheValue)
|
||||||
@ -55,19 +56,27 @@ bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const char* hostname = m_Makefile->GetDefinition("HOSTNAME");
|
const char *temp = m_Makefile->GetDefinition("HOSTNAME");
|
||||||
if(!hostname)
|
std::string hostname_cmd;
|
||||||
|
if(temp)
|
||||||
{
|
{
|
||||||
hostname = "hostname";
|
hostname_cmd = temp;
|
||||||
}
|
}
|
||||||
const char* nslookup = m_Makefile->GetDefinition("NSLOOKUP");
|
else
|
||||||
if(!nslookup)
|
|
||||||
{
|
{
|
||||||
nslookup = "nslookup";
|
hostname_cmd = cmSystemTools::FindProgram("hostname");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string siteName = "unknown";
|
||||||
|
|
||||||
|
// try to find the hostname for this computer
|
||||||
|
if (hostname_cmd.length())
|
||||||
|
{
|
||||||
std::string host;
|
std::string host;
|
||||||
cmSystemTools::RunCommand(hostname,
|
cmSystemTools::RunCommand(hostname_cmd.c_str(),
|
||||||
host);
|
host);
|
||||||
|
|
||||||
|
// got the hostname
|
||||||
if (host.length())
|
if (host.length())
|
||||||
{
|
{
|
||||||
// remove any white space from the host name
|
// remove any white space from the host name
|
||||||
@ -78,19 +87,34 @@ bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
|
|||||||
// strip whitespace
|
// strip whitespace
|
||||||
host = hostReg.match(1);
|
host = hostReg.match(1);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
std::string siteName = host;
|
|
||||||
if(host.length())
|
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
|
// try to find the domain name for this computer
|
||||||
std::string nsCmd = nslookup;
|
if (nslookup_cmd.length())
|
||||||
nsCmd += " ";
|
{
|
||||||
nsCmd += host;
|
nslookup_cmd += " ";
|
||||||
|
nslookup_cmd += host;
|
||||||
std::string nsOutput;
|
std::string nsOutput;
|
||||||
cmSystemTools::RunCommand(nsCmd.c_str(),
|
cmSystemTools::RunCommand(nslookup_cmd.c_str(),
|
||||||
nsOutput);
|
nsOutput);
|
||||||
|
|
||||||
|
// got the domain name
|
||||||
|
if (nsOutput.length())
|
||||||
|
{
|
||||||
std::string RegExp = ".*Name:[ \t\n]*";
|
std::string RegExp = ".*Name:[ \t\n]*";
|
||||||
RegExp += host;
|
RegExp += host;
|
||||||
RegExp += "\\.([^ \t\n\r]*)[ \t\n\r]*Address:";
|
RegExp += "\\.([^ \t\n\r]*)[ \t\n\r]*Address:";
|
||||||
@ -100,6 +124,10 @@ bool cmSiteNameCommand::InitialPass(std::vector<std::string> const& args)
|
|||||||
siteName += '.' + cmSystemTools::LowerCase(reg.match(1));
|
siteName += '.' + cmSystemTools::LowerCase(reg.match(1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_Makefile->
|
m_Makefile->
|
||||||
AddCacheDefinition(args[0].c_str(),
|
AddCacheDefinition(args[0].c_str(),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user