summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-11-11 18:45:50 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2007-11-11 18:45:50 +0000
commit1a0357cc2caa18cb2b1ee115053c8f239aa5576b (patch)
tree0ded8870a0ff0d8b6d7ffdecc49bad528bab280d /src
parent0e6f0d340ba68c8969608c70f57947577f028201 (diff)
Add a counter for errored files
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8570 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r--src/configreader.cpp14
-rw-r--r--src/inspircd.cpp13
2 files changed, 25 insertions, 2 deletions
diff --git a/src/configreader.cpp b/src/configreader.cpp
index 2138d0638..e9301d70a 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -1243,14 +1243,24 @@ void ServerConfig::Read(bool bail, User* user, int pass)
bool ServerConfig::Downloading()
{
- ServerInstance->Log(DEBUG, "ServerConfig::Downloading() TotalDownloaded %u of %u", TotalDownloaded, IncludedFiles.size());
+ if (isatty(0) && isatty(1) && isatty(2))
+ {
+ printf(".");
+ fflush(stdout);
+ }
+
/* Returns true if there are still files in the process of downloading */
return (TotalDownloaded < IncludedFiles.size());
}
void ServerConfig::StartDownloads()
{
+ if (isatty(0) && isatty(1) && isatty(2))
+ printf("Downloading configuration ");
+
TotalDownloaded = 0;
+ FileErrors = 0;
+
/* Reads all local files into the IncludedFiles map, then initiates sockets for the remote ones */
for (std::map<std::string, std::istream*>::iterator x = IncludedFiles.begin(); x != IncludedFiles.end(); ++x)
{
@@ -1271,6 +1281,8 @@ void ServerConfig::StartDownloads()
delete x->second;
x->second = conf;
}
+ else
+ FileErrors++;
TotalDownloaded++;
}
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index e6d453ed2..87af7b06e 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -498,7 +498,8 @@ InspIRCd::InspIRCd(int argc, char** argv)
Config->StartDownloads();
/* Now the downloads are started, we monitor them for completion.
- * On completion, we call Read again with pass = 1
+ * On completion, we call Read again with pass = 1.
+ * NOTE: We really should add a timeout here
*/
while (Config->Downloading())
@@ -507,6 +508,16 @@ InspIRCd::InspIRCd(int argc, char** argv)
this->BufferedSocketCull();
}
+ printf("\n");
+
+ if (Config->FileErrors)
+ {
+ /* One or more file download/access errors, do not
+ * proceed to second pass
+ */
+ Exit(EXIT_STATUS_CONFIG);
+ }
+
/* We have all the files we can get, initiate pass 1 */
Config->Read(true, NULL, 1);