summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorPeter Powell <petpow@saberuk.com>2013-10-05 04:55:11 +0100
committerPeter Powell <petpow@saberuk.com>2013-12-15 06:46:35 +0000
commit02830985a18950497003f3392cf8d6cc30c15c50 (patch)
tree77fb47c2a9274221bcaba0cd82d6c08daf207878 /include
parent357d190074ee58809b31ea0c08543566168bddf6 (diff)
Move stuff around a bit:
- Create FileSystem class: * Move ServerConfig::CleanFilename to FileSystem::GetFileName and rewrite. * Move ServerConfig::ExpandPath to FileSystem. * Move ServerConfig::FileExists to FileSystem. * Move ServerConfig::StartsWithWindowsDriveLetter to FileSystem. - Move FileReader to fileutils.cpp and fix documentation. - Move UserManager::DoBackgroundUserStuff to usermanager.cpp.
Diffstat (limited to 'include')
-rw-r--r--include/configreader.h30
-rw-r--r--include/fileutils.h87
-rw-r--r--include/inspircd.h1
-rw-r--r--include/modules.h38
4 files changed, 92 insertions, 64 deletions
diff --git a/include/configreader.h b/include/configreader.h
index 0fbf234c3..a46f9cf95 100644
--- a/include/configreader.h
+++ b/include/configreader.h
@@ -225,10 +225,10 @@ class CoreExport ServerConfig
, Log(LOG_PATH)
, Module(MOD_PATH) { }
- std::string PrependConfig(const std::string& fn) const { return ServerConfig::ExpandPath(Config, fn); }
- std::string PrependData(const std::string& fn) const { return ServerConfig::ExpandPath(Data, fn); }
- std::string PrependLog(const std::string& fn) const { return ServerConfig::ExpandPath(Log, fn); }
- std::string PrependModule(const std::string& fn) const { return ServerConfig::ExpandPath(Module, fn); }
+ std::string PrependConfig(const std::string& fn) const { return FileSystem::ExpandPath(Config, fn); }
+ std::string PrependData(const std::string& fn) const { return FileSystem::ExpandPath(Data, fn); }
+ std::string PrependLog(const std::string& fn) const { return FileSystem::ExpandPath(Log, fn); }
+ std::string PrependModule(const std::string& fn) const { return FileSystem::ExpandPath(Module, fn); }
};
/** Get a configuration tag
@@ -551,30 +551,8 @@ class CoreExport ServerConfig
void Fill();
- /** Returns true if the given string starts with a windows drive letter
- */
- static bool StartsWithWindowsDriveLetter(const std::string& path);
-
bool ApplyDisabledCommands(const std::string& data);
- /** Clean a filename, stripping the directories (and drives) from string.
- * @param name Directory to tidy
- * @return The cleaned filename
- */
- static const char* CleanFilename(const char* name);
-
- /** Check if a file exists.
- * @param file The full path to a file
- * @return True if the file exists and is readable.
- */
- static bool FileExists(const char* file);
-
- /** Expands a path fragment to a full path.
- * @param base The base path to expand from
- * @param fragment The path fragment to expand on top of base.
- */
- static std::string ExpandPath(const std::string& base, const std::string& fragment);
-
/** Escapes a value for storage in a configuration key.
* @param str The string to escape.
* @param xml Are we using the XML config format?
diff --git a/include/fileutils.h b/include/fileutils.h
new file mode 100644
index 000000000..45865bbb0
--- /dev/null
+++ b/include/fileutils.h
@@ -0,0 +1,87 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2013 Peter Powell <petpow@saberuk.com>
+ *
+ * This file is part of InspIRCd. InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#pragma once
+
+/** Provides an easy method of reading a text file into memory. */
+class CoreExport FileReader : public classbase
+{
+ /** The lines of text in the file. */
+ std::vector<std::string> lines;
+
+ /** File size in bytes. */
+ unsigned long totalSize;
+
+ public:
+ /** Initializes a new file reader. */
+ FileReader() : totalSize(0) { }
+
+ /** Initializes a new file reader and reads the specified file.
+ * @param filename The file to read into memory.
+ */
+ FileReader(const std::string& filename);
+
+ /** Loads a text file from disk.
+ * @param filename The file to read into memory.
+ * @throw CoreException The file can not be loaded.
+ */
+ void Load(const std::string& filename);
+
+ /** Retrieves the entire contents of the file cache as a single string. */
+ std::string GetString() const;
+
+ /** Retrieves the entire contents of the file cache as a vector of strings. */
+ const std::vector<std::string>& GetVector() const { return lines; }
+
+ /** Retrieves the total size in bytes of the file. */
+ unsigned long TotalSize() const { return totalSize; }
+};
+
+/** Implements methods for file system access */
+class CoreExport FileSystem
+{
+private:
+ FileSystem() { }
+
+public:
+ /** Expands a path fragment to a full path.
+ * @param base The base path to expand from
+ * @param fragment The path fragment to expand on top of base.
+ */
+ static std::string ExpandPath(const std::string& base, const std::string& fragment);
+
+ /**
+ * Checks whether a file with the specified name exists on the filesystem.
+ * @param path The path to a file.
+ * @return True if the file exists; otherwise, false.
+ */
+ static bool FileExists(const std::string& path);
+
+ /** Gets the file name segment of a path.
+ * @param path The path to extract the file name from.
+ * @return The file name segment of a path.
+ */
+ static std::string GetFileName(const std::string& path);
+
+ /** Determines whether the given path starts with a Windows drive letter.
+ * @param path The path to validate.
+ * @returns True if the path begins with a Windows drive letter; otherwise, false.
+ */
+ static bool StartsWithWindowsDriveLetter(const std::string& path);
+};
diff --git a/include/inspircd.h b/include/inspircd.h
index f43141c38..e02a5deb5 100644
--- a/include/inspircd.h
+++ b/include/inspircd.h
@@ -54,6 +54,7 @@ CoreExport extern InspIRCd* ServerInstance;
#include "caller.h"
#include "cull_list.h"
#include "extensible.h"
+#include "fileutils.h"
#include "numerics.h"
#include "uid.h"
#include "users.h"
diff --git a/include/modules.h b/include/modules.h
index 931d85032..b7cffd1a0 100644
--- a/include/modules.h
+++ b/include/modules.h
@@ -1078,44 +1078,6 @@ class CoreExport Module : public classbase, public usecountbase
virtual void OnSetUserIP(LocalUser* user);
};
-/** Provides an easy method of reading a text file into memory. */
-class CoreExport FileReader : public classbase
-{
- /** The lines of text in the file.
- */
- std::vector<std::string> lines;
-
- /** Content size in bytes
- */
- unsigned long totalSize;
-
- public:
- /** Initializes a new file reader.
- */
- FileReader() : totalSize(0) { }
-
- /** Initializes a new file reader and reads the specified file.
- * @param filename The file to read into memory.
- */
- FileReader(const std::string& filename);
-
- /** Loads a text file from disk.
- * @param filename The file to read into memory.
- * @throw CoreException The file can not be loaded.
- */
- void Load(const std::string& filename);
-
- /** Retrieves the entire contents of the file cache as a single string.
- */
- std::string GetString();
-
- /** Retrieves the entire contents of the file cache as a vector of strings.
- */
- const std::vector<std::string>& GetVector() { return lines; }
-
- unsigned long TotalSize() { return totalSize; }
-};
-
/** A list of modules
*/
typedef std::vector<Module*> IntModuleList;