diff --git a/InIReader.cs b/InIReader.cs index f2d6fb1..dfbe790 100644 --- a/InIReader.cs +++ b/InIReader.cs @@ -2,23 +2,57 @@ using System.Collections.Generic; using System.IO; using System.Linq; -using System.Text; using System.Text.RegularExpressions; -using System.Threading.Tasks; -namespace BlubbFish.Utils -{ +namespace BlubbFish.Utils { public class InIReader : IDisposable { private Dictionary> inifile; - private FileSystemWatcher k = new FileSystemWatcher(Directory.GetCurrentDirectory(), "*.ini"); + private FileSystemWatcher k; private String filename; + private static List search_path = new List() { + Directory.GetCurrentDirectory() + }; private static Dictionary instances = new Dictionary(); + public static void SetSearchPath(List directorys) { + search_path.AddRange(directorys); + } + + public static Boolean ConfigExist(String filename) { + foreach (String path in search_path) { + if (File.Exists(path + Path.DirectorySeparatorChar + filename)) { + return true; + } else if (File.Exists(path + Path.DirectorySeparatorChar + filename + ".ini")) { + return true; + } else if (File.Exists(path + Path.DirectorySeparatorChar + filename + ".conf")) { + return true; + } + } + return false; + } + private InIReader(String filename) { - this.filename = filename; + foreach (String path in search_path) { + if (File.Exists(path + Path.DirectorySeparatorChar + filename)) { + this.filename = path + Path.DirectorySeparatorChar + filename; + this.k = new FileSystemWatcher(path, filename); + break; + } else if (File.Exists(path + Path.DirectorySeparatorChar + filename + ".ini")) { + this.filename = path + Path.DirectorySeparatorChar + filename + ".ini"; + this.k = new FileSystemWatcher(path, filename + ".ini"); + break; + } else if(File.Exists(path + Path.DirectorySeparatorChar + filename + ".conf")) { + this.filename = path + Path.DirectorySeparatorChar + filename + ".conf"; + this.k = new FileSystemWatcher(path, filename + ".conf"); + break; + } + } + if(this.filename == null) { + throw new ArgumentException(filename + " not found!"); + } this.k.Changed += new FileSystemEventHandler(this.ReadAgain); LoadFile(); } diff --git a/bin/Release/Utils.dll b/bin/Release/Utils.dll index 85f1e4b..e1d4e4d 100644 Binary files a/bin/Release/Utils.dll and b/bin/Release/Utils.dll differ