}
}
-bool ArgvMap::parseLine(ifstream& f, const string& arg, string& line, bool lax) {
+bool ArgvMap::parseFile(const char *fname, const string& arg, bool lax) {
+ string line;
string pline;
string::size_type pos;
- if (!getline(f, pline)) return false;
- trim_right(pline);
- if(pline[pline.size()-1]=='\\') {
- line+=pline.substr(0,pline.length()-1);
- return true;
- }
- else
- line+=pline;
-
- // strip everything after a #
- if((pos=line.find("#"))!=string::npos) {
- // make sure it's either first char or has whitespace before
- // fixes issue #354
- if (pos == 0 || std::isspace(line[pos-1]))
- line=line.substr(0,pos);
- }
+ ifstream f(fname);
+ if(!f)
+ return false;
- // strip trailing spaces
- trim_right(line);
+ while(getline(f,pline)) {
+ trim_right(pline);
+
+ if(pline[pline.size()-1]=='\\') {
+ line+=pline.substr(0,pline.length()-1);
+ continue;
+ }
+ else
+ line+=pline;
+
+ // strip everything after a #
+ if((pos=line.find("#"))!=string::npos) {
+ // make sure it's either first char or has whitespace before
+ // fixes issue #354
+ if (pos == 0 || std::isspace(line[pos-1]))
+ line=line.substr(0,pos);
+ }
+
+ // strip trailing spaces
+ trim_right(line);
- // strip leading spaces
- if((pos=line.find_first_not_of(" \t\r\n"))!=string::npos)
- line=line.substr(pos);
+ // strip leading spaces
+ if((pos=line.find_first_not_of(" \t\r\n"))!=string::npos)
+ line=line.substr(pos);
- // gpgsql-basic-query=sdfsdfs dfsdfsdf sdfsdfsfd
+ // gpgsql-basic-query=sdfsdfs dfsdfsdf sdfsdfsfd
+
+ parseOne( string("--") + line, arg, lax );
+ line="";
+ }
- parseOne( string("--") + line, arg, lax );
- line="";
return true;
}
{
params[arg]=theDefault;
- ifstream f(fname);
- if(!f)
- return false;
-
- string line;
-
- while(parseLine(f, arg, line, false));
-
- return true;
+ return parseFile(fname, arg, false);
}
bool ArgvMap::file(const char *fname, bool lax)
bool ArgvMap::file(const char *fname, bool lax, bool included)
{
- ifstream f(fname);
- if(!f) {
- return false;
- }
-
if (!parmIsset("include-dir")) // inject include-dir
set("include-dir","Directory to include configuration files from");
- string line;
-
- while(parseLine(f, "", line, lax));
+ if(!parseFile(fname, "", lax)) {
+ L << Logger::Warning << "Unable to open " << fname << std::endl;
+ return false;
+ }
// handle include here (avoid re-include)
if (!included && !params["include-dir"].empty()) {