X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigparser.h;h=999d79e2460d452122e290e2c82f47c6fdded4c1;hb=1daaf3b84d87e543ee43c2f8b9b3cd0a02787424;hp=478899ed92f203481515541e6df68d04552af6ee;hpb=553a8da754c8cd308bad2008018849714e70f9b7;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configparser.h b/include/configparser.h index 478899ed9..999d79e24 100644 --- a/include/configparser.h +++ b/include/configparser.h @@ -51,8 +51,8 @@ struct ParseStack vars["quot"] = "\""; vars["newline"] = vars["nl"] = "\n"; } - bool ParseFile(const std::string& name, int flags); - bool ParseExec(const std::string& name, int flags); + bool ParseFile(const std::string& name, int flags, const std::string& mandatory_tag = ""); + bool ParseExec(const std::string& name, int flags, const std::string& mandatory_tag = ""); void DoInclude(ConfigTag* includeTag, int flags); void DoReadFile(const std::string& key, const std::string& file, int flags, bool exec); }; @@ -61,13 +61,19 @@ struct ParseStack struct FileWrapper { FILE* const f; - FileWrapper(FILE* file) : f(file) {} - operator bool() { return f; } + bool close_with_pclose; + FileWrapper(FILE* file, bool use_pclose = false) : f(file), close_with_pclose(use_pclose) {} + operator bool() { return (f != NULL); } operator FILE*() { return f; } ~FileWrapper() { if (f) - fclose(f); + { + if (close_with_pclose) + pclose(f); + else + fclose(f); + } } };