summaryrefslogtreecommitdiff
path: root/src/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/config.c')
-rw-r--r--src/config.c40
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 */