From d5831bf292037c54ef689d4fe19b81c2e70c51d5 Mon Sep 17 00:00:00 2001 From: BlubbFish Date: Mon, 7 May 2018 16:52:24 +0000 Subject: [PATCH] [BF] Fixing Senml [NF] Senml now has a configure option to setup the guid [NF] Zway-Bot now listen on /exit [NF] Implment searchpath for Zway-Bot (/etc/zwaybot and %appdata%/zwaybot) --- InIReader.cs | 46 ++++++++++++++++++++++++++++++++++++------ bin/Release/Utils.dll | Bin 25088 -> 25600 bytes 2 files changed, 40 insertions(+), 6 deletions(-) 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 85f1e4b96a8cb6aaa4caa0c9333b89ebedc6decf..e1d4e4df35f68393ab1bd7bb6f8718c22806684b 100644 GIT binary patch literal 25600 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 IKjVS_3DkG+^Z)<= delta 11677 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 MocBAmWnk#P0Z7%jk^lez