--- /dev/null
+#include <string>
+#include <fstream>
+
+#include <stdio.h>
+
+#include "ConfigurationFinder.h"
+#include "config.h"
+#include "exception/ConfigFileNotFound.h"
+
+namespace loglan {
+namespace vlp {
+
+ConfigurationFinder::ConfigurationFinder()
+{
+}
+
+std::string ConfigurationFinder::findConfig(std::string filename)
+{
+ for (std::string dir : searchDirs) {
+ std::ifstream infile(dir + filename);
+ if (infile.good()) {
+ return dir + filename;
+ }
+ }
+
+ throw exception::ConfigFileNotFound();
+}
+
+/**
+ * Gets path to system-wide settings directory
+ *
+ * @return directory of user settings
+ */
+std::string ConfigurationFinder::getSystemConfigurationDir()
+{
+ std::string dir(SYSCONFDIR);
+
+ dir += VLP_CONFIG_PATH_SEPARATOR;
+ dir += "loglan";
+ dir += VLP_CONFIG_PATH_SEPARATOR;
+
+ return dir;
+}
+
+
+void ConfigurationFinder::addSearchDir(std::string dir)
+{
+ searchDirs.push_back(dir);
+}
+
+void ConfigurationFinder::initSearchDirs()
+{
+ searchDirs.clear();
+
+ addSearchDir("./");
+ addSearchDir(getUserConfigurationDir());
+ addSearchDir(getSystemConfigurationDir());
+}
+
+}
+}
\ No newline at end of file