- result.insert(result.end(),"Error!");
- result.insert(result.end(),"Could not open file:"+filename);
- return result;
- }
-
- char buffer[1000];
- while(fgets(buffer,1000,fp)){
- if (strlen (buffer)){
- char*l2=buffer+strspn(buffer," \t");
- if (l2[0]!='#'){
- string line=l2;
- unsigned int pos=line.find("=");
- if (pos==0){
- result.insert(result.end(),"Error!");
- result.insert(result.end(),"In File:"+filename);
- result.insert(result.end(),"Line beginning with '='!");
- return result;
- }
-
- } // if not #
-
- } // if (strlen())
- } // while(...)
-
+ result.insert(result.end(),"Could not open file: "+filename);
+ } else {
+ char buffer[1000];
+ while(fgets(buffer,1000,fp)){
+ if (buffer[strlen(buffer)-1]=='\n')// Cut trailing newline
+ buffer[strlen(buffer)-1]=0;
+ if (strlen (buffer)){
+ char*l2=buffer+strspn(buffer," \t");
+ if (l2[0]!='#'){
+ string argstring=l2;
+ unsigned int pos=argstring.find("=");
+ if (pos==0){
+ result.insert(result.end(),"In File "+filename+": Line beginning with '='!");
+ }
+
+ bool found=false;
+
+ // Look for long switches.
+ for (unsigned int switch_no=0;switch_no<option_switches.size();switch_no++){
+ string switch_name=option_switches[switch_no].longname;
+ if (argstring.compare(0,switch_name.length(),switch_name,0,switch_name.length())==0){
+ string value=analyse_string(argstring);
+ //result.insert(result.end(),"argstring:\""+argstring+"\"");
+ bool res=analyse_bool_false(value);
+ if(option_switches[switch_no].allow_conffile==true){
+ *(option_switches[switch_no].status)=res;
+ }else{
+ result.insert(result.end(),"In File "+filename+": Switch \""
+ +option_switches[switch_no].longname
+ +"\" is not allowed in config files!");
+ }
+ found=true;
+ break;
+ }
+ }
+
+ // Look for long values.
+ for (unsigned int value_no=0;value_no<option_values.size();value_no++){
+ string value_name=option_values[value_no].longname;
+ if (argstring.compare(0,value_name.length(),value_name,0,value_name.length())==0){
+ string value=analyse_string(argstring);
+ *(option_values[value_no].status)=1;
+
+ if(option_values[value_no].allow_conffile==true){
+ *(option_values[value_no].status)=1;
+ *(option_values[value_no].target)=value;
+ }else{
+ result.insert(result.end(),"In File "+filename+": Option value \""
+ +option_values[value_no].longname
+ +"\" is not allowed in config files!");
+ }
+ found=true;
+ break;
+ }
+ }
+ if (! found) {
+ result.insert(result.end(),"In File "+filename+": Unknown option: "+argstring+"!");
+ }
+
+ } // if not #
+ } // if (strlen())
+ } // while(...)
+ fclose (fp);
+ } // fp==0 else branch