private static string sysPropToDir(string propKey, string envKey, string def) { // lookup system property string val = SysProps.getProperty(propKey); // fallback to environment variable if (val == null) { val = Environment.GetEnvironmentVariable(envKey); } // fallback to def if provides if (val == null && def != null) { val = def; } // if still not found then we're toast if (val == null) { throw new Exception("Missing " + propKey + " system property or " + envKey + " env var"); } // check if relative to home directory (fand, fant) bool checkExists = true; if (val.StartsWith("$home")) { val = FileUtil.combine(m_homeDir, val.Substring(6)); checkExists = false; } // check that it is a valid directory if (checkExists && !Directory.Exists(val)) { throw new Exception("Invalid " + propKey + " dir: " + val); } // make sure path gets normalized return(new DirectoryInfo(val).FullName); }