-const char loaders_rcs[] = "$Id: loaders.c,v 1.40 2002/03/08 17:46:04 jongfoster Exp $";
+const char loaders_rcs[] = "$Id: loaders.c,v 1.42 2002/03/13 00:27:05 jongfoster Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/loaders.c,v $
*
* Revisions :
* $Log: loaders.c,v $
+ * Revision 1.42 2002/03/13 00:27:05 jongfoster
+ * Killing warnings
+ *
+ * Revision 1.41 2002/03/12 01:42:50 oes
+ * Introduced modular filters
+ *
* Revision 1.40 2002/03/08 17:46:04 jongfoster
* Fixing int/size_t warnings
*
fl->active = 0;
}
- for (csp = clients; csp && (ncsp = csp->next) ; csp = csp->next)
+ for (csp = clients; csp && (NULL != (ncsp = csp->next)) ; csp = csp->next)
{
if (ncsp->flags & CSP_FLAG_ACTIVE)
{
freez(ncsp);
/* are there any more in sequence after it? */
- if( !(ncsp = csp->next) )
+ if( (ncsp = csp->next) == NULL)
break;
}
}
}
- for (fl = files; fl && (nfl = fl->next) ; fl = fl->next)
+ for (fl = files; fl && ((nfl = fl->next) != NULL) ; fl = fl->next)
{
if ( ( 0 == nfl->active ) && ( NULL != nfl->unloader ) )
{
#define CHAR_CR '\r' /* ASCII 13 */
#define CHAR_LF '\n' /* ASCII 10 */
- while (FOREVER)
+ for (;;)
{
ch = fgetc(fp);
if (ch == EOF)
reject = 0;
p = buf;
q = p+1;
- while ((*p++ = *q++))
+ while ((*p++ = *q++) != '\0')
{
/* nop */
}
destroy_list(b->patterns);
pcrs_free_joblist(b->joblist);
+ freez(b->name);
+ freez(b->description);
freez(b);
b = a;
{
FILE *fp;
- struct re_filterfile_spec *bl, *new_bl;
+ struct re_filterfile_spec *new_bl, *bl = NULL;
struct file_list *fs;
char buf[BUFFER_SIZE];
goto load_re_filterfile_error;
}
- /*
- * Allocate the first re_filterfile_spec struct
- */
- fs->f = bl = (struct re_filterfile_spec *)zalloc(sizeof(*bl));
- if (bl == NULL)
- {
- goto load_re_filterfile_error;
- }
-
- /*
- * Initialize the name in case there are
- * expressions before the first block header
- */
- bl->filtername = "default";
-
/*
* Open the file or fail
*/
{
goto load_re_filterfile_error;
}
+
+ new_bl->name = chomp(buf + 7);
+
+ if (NULL != (new_bl->description = strchr(new_bl->name, ' ')))
+ {
+ *new_bl->description++ = '\0';
+ new_bl->description = strdup(chomp(new_bl->description));
+ }
+ else
+ {
+ new_bl->description = strdup("No description available for this filter");
+ }
+
+ new_bl->name = strdup(chomp(new_bl->name));
+
+ /*
+ * If this is the first filter block, chain it
+ * to the file_list rather than its (nonexistant)
+ * predecessor
+ */
+ if (fs->f == NULL)
+ {
+ fs->f = new_bl;
+ }
else
{
- new_bl->filtername = strdup(chomp(buf + 7));
bl->next = new_bl;
- bl = new_bl;
}
+ bl = new_bl;
+
+ log_error(LOG_LEVEL_RE_FILTER, "Reading in filter \"%s\" (\"%s\")", bl->name, bl->description);
+
continue;
}
* Else, save the expression, make it a pcrs_job
* and chain it into the current filter's joblist
*/
- enlist(bl->patterns, buf);
-
- if ((dummy = pcrs_compile_command(buf, &error)) == NULL)
+ if (bl != NULL)
{
- log_error(LOG_LEVEL_RE_FILTER,
- "Adding re_filter job %s to filter %s failed with error %d.", buf, bl->filtername, error);
- continue;
+ enlist(bl->patterns, buf);
+
+ if ((dummy = pcrs_compile_command(buf, &error)) == NULL)
+ {
+ log_error(LOG_LEVEL_RE_FILTER,
+ "Adding re_filter job %s to filter %s failed with error %d.", buf, bl->name, error);
+ continue;
+ }
+ else
+ {
+ dummy->next = bl->joblist;
+ bl->joblist = dummy;
+ log_error(LOG_LEVEL_RE_FILTER, "Adding re_filter job %s to filter %s succeeded.", buf, bl->name);
+ }
}
else
{
- dummy->next = bl->joblist;
- bl->joblist = dummy;
- log_error(LOG_LEVEL_RE_FILTER, "Adding re_filter job %s to filter %s succeeded.", buf, bl->filtername);
+ log_error(LOG_LEVEL_ERROR, "Ignoring job %s outside filter block in %s, line %d", buf, csp->config->re_filterfile, linenum);
}
}