/// <summary> /// Adds the included files as ini configuration files /// </summary> /// <param name="sources">List of URL strings or filename strings</param> /// <param name="cntr">Where should we start inserting sources into the list?</param> private void AddIncludes(List <string> sources, ref int cntr) { int cn = cntr; //Where should we insert the sources into the list? //loop over config sources foreach (IConfig config in m_config.Configs) { // Look for Include-* in the key name string[] keys = config.GetKeys(); foreach (string k in keys) { if (k.StartsWith("Include-")) { // read the config file to be included. string file = config.GetString(k); if (IsUri(file)) { if (!sources.Contains(file)) { cn++; sources.Insert(cn, file); } } else { string basepath = Path.GetFullPath(Util.configDir()); // Resolve relative paths with wildcards string chunkWithoutWildcards = file; string chunkWithWildcards = string.Empty; int wildcardIndex = file.IndexOfAny(new char[] { '*', '?' }); if (wildcardIndex != -1) { chunkWithoutWildcards = file.Substring(0, wildcardIndex); chunkWithWildcards = file.Substring(wildcardIndex); } string path = Path.Combine(basepath, chunkWithoutWildcards); path = Path.GetFullPath(path) + chunkWithWildcards; string[] paths = Util.Glob(path); foreach (string p in paths) { if (!sources.Contains(p)) { cn++; sources.Insert(cn, p); } } } } } } }