diff options
Diffstat (limited to 'src/config.c')
-rw-r--r-- | src/config.c | 40 |
1 files changed, 30 insertions, 10 deletions
diff --git a/src/config.c b/src/config.c index 18d7cfd..616fabf 100644 --- a/src/config.c +++ b/src/config.c @@ -81,10 +81,10 @@ typedef struct Command /* ---------------------------------------- GLOBALS */ static DString error; -static char *hostname="localhost"; -static char *username="nobody"; -static char *password=""; -static char *log=""; +static char *hostname=NULL; +static char *username=NULL; +static char *password=NULL; +static char *log=NULL; static int port=110; static int timeout=60; static int casesense=FALSE; @@ -196,6 +196,10 @@ static int DoSet(FILE *fp) case TYPE_STR: cp=vt->ptr; tok=GetToken(fp,&ds); + + if (*cp) + free(*cp); + *cp=CopyStr(ds->text); break; @@ -250,6 +254,7 @@ static int DoDomain(FILE *fp) Token tok; int status=TRUE; Domain *domain; + RE_Expression re; ds=DSInit(); @@ -263,7 +268,7 @@ static int DoDomain(FILE *fp) return FALSE; } - if (RExpSearch(ds->text,"dummy")==RE_BadExpression) + if (!(re=RECompile(ds->text))) { DSAddCP(error,"Bad regular expression: "); DSAddDS(error,ds); @@ -271,7 +276,7 @@ static int DoDomain(FILE *fp) return FALSE; } - domain=DBNewDomain(ds->text); + domain=DBNewDomain(re); tok=GetToken(fp,&ds); @@ -322,7 +327,7 @@ static int DoDomain(FILE *fp) case TOK_AllowSubject: GetToken(fp,&ds); - if (RExpSearch(ds->text,"dummy")==RE_BadExpression) + if (!(re=RECompile(ds->text))) { DSAddCP(error,"Bad regular expression: "); DSAddDS(error,ds); @@ -330,13 +335,13 @@ static int DoDomain(FILE *fp) return FALSE; } - DBAllowSubject(domain,ds->text); + DBAllowSubject(domain,re); break; case TOK_BlockSubject: GetToken(fp,&ds); - if (RExpSearch(ds->text,"dummy")==RE_BadExpression) + if (!(re=RECompile(ds->text))) { DSAddCP(error,"Bad regular expression: "); DSAddDS(error,ds); @@ -344,7 +349,7 @@ static int DoDomain(FILE *fp) return FALSE; } - DBBlockSubject(domain,ds->text); + DBBlockSubject(domain,re); break; default: @@ -631,6 +636,11 @@ int ConfigLoad(void) error=DSInit(); + hostname=CopyStr("localhost"); + username=CopyStr("nobody"); + password=CopyStr(""); + log=CopyStr(""); + if (!getenv("HOME")) return FALSE; @@ -713,4 +723,14 @@ int ConfigInt(ConfigIntVar var) } +void ConfigClose(void) +{ + DSFree(error); + free(hostname); + free(username); + free(password); + free(log); +} + + /* END OF FILE */ |