#include "parsecfgfile.h"
Parser::Parser() {
nntpserver = NULL;
user = NULL;
passwd = NULL;
regex = NULL;
cfgfilename = strdup( ".bgrabrc" );
parsefile();
}
Parser::Parser( char *cfn ) {
nntpserver = NULL;
user = NULL;
passwd = NULL;
regex = NULL;
cfgfilename = strdup( cfn );
parsefile();
}
void Parser::parsefile() {
nntpserver = user = passwd = NULL;
char lnbuf[BUFFERLEN];
char var[VARLEN+1];
char val[VALLEN+1];
*spamsenders = *spamsubjects = '\0';
int n;
FILE *file = fopen( cfgfilename, "r" );
if (file == NULL )
return;
while ( fgets(lnbuf,BUFFERLEN,file) ) {
*var=*val='\0';
/* n==2 if input ok */
if (lnbuf[0] != '#') { // # starts a comment line
n=sscanf(lnbuf,"%60[^=\n\r]=%160[^\n\r]",var,val);
notrspaces(var);
notrspaces(val);
// printf("%d: [%s] = [%s]\n",n,var,val);
if(n==2) {
if ( strcmp(var,"nntpserver") == 0 ) { nntpserver = strdup(val); }
if ( strcmp(var,"user") == 0 ) { user = strdup(val); }
if ( strcmp(var,"passwd") == 0 ) { passwd = strdup(val); }
if ( strcmp(var,"regex") == 0 ) { regex = strdup(val); }
if ( strcmp(var,"spamsender") == 0 ) {
if (strcmp(spamsenders,"") != 0)
strcat(spamsenders,"\377");
strcat(spamsenders,val);
}
if ( strcmp(var,"spamsubject") == 0 ) {
if (strcmp(spamsubjects,"") != 0)
strcat(spamsubjects,"\377");
strcat(spamsubjects,val);
}
}
}
}
/* if (nntpserver) printf("SERVER: %s\n",nntpserver);
if (user) printf("USER: %s\n",user);
if (passwd) printf("PASSWD: %s\n",passwd);*/
}
void Parser::notrspaces(char *src) {
/* remove leading/trailing spaces and other garbage */
char *s;
if (!src || ! *src ) return;
for(s=src+strlen(src)-1; s>src && isspace(*s); --s) ;
*(s+1)='\0';
for(s=src; *s && isspace(*s); ++s) ;
if (s==src) return;
for( ; *s; *src++ = *s++);
*src='\0';
}
/*
int main()
{
Parser *p;
p = new Parser();
}
*/
syntax highlighted by Code2HTML, v. 0.9.1