/[imapfilter]/imapfilter/file.c
ViewVC logotype

Diff of /imapfilter/file.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.18 by lefcha, Tue Oct 2 07:31:52 2001 UTC revision 1.19 by lefcha, Tue Oct 2 13:29:13 2001 UTC
# Line 93  int parse_config(FILE * fp) Line 93  int parse_config(FILE * fp)
93      int i, r = 0;      int i, r = 0;
94      unsigned int row = 0;      unsigned int row = 0;
95      char line[LINE_MAX];      char line[LINE_MAX];
96      regex_t creg[11];      regex_t creg[12];
97      regmatch_t match[7];      regmatch_t match[7];
98      const char *reg[11] = {      const char *reg[12] = {
99          "^([[:blank:]]*\n|#.*\n)$",          "^([[:blank:]]*\n|#.*\n)$",
100          "^[[:blank:]]*ACCOUNT[[:blank:]]+([[:graph:]]*):([[:graph:]]*)@([[:alnum:].-]+)(:[[:digit:]]{1,5})?[[:blank:]]*\n$",          "^[[:blank:]]*ACCOUNT[[:blank:]]+([[:graph:]]*):([[:graph:]]*)@([[:alnum:].-]+)(:[[:digit:]]{1,5})?[[:blank:]]*\n$",
101          "^[[:blank:]]*FOLDER[[:blank:]]+([[:alnum:]_-]+)[[:blank:]]+([[:graph:]]+)[[:blank:]]*\n$",          "^[[:blank:]]*FOLDER[[:blank:]]+([[:alnum:]_-]+)[[:blank:]]+([[:graph:]]+)[[:blank:]]*\n$",
# Line 106  int parse_config(FILE * fp) Line 106  int parse_config(FILE * fp)
106          "^[[:blank:]]*(MASK[[:blank:]])?[[:blank:]]*(OR[[:blank:]]|AND[[:blank:]])?[[:blank:]]*(NOT[[:blank:]])?[[:blank:]]*(HEADER)[[:blank:]]+(\"[[:print:]]*\"|[[:graph:]]+)[[:blank:]]+(\"[[:print:]]*\"|[[:graph:]]+)[[:blank:]]*\n$",          "^[[:blank:]]*(MASK[[:blank:]])?[[:blank:]]*(OR[[:blank:]]|AND[[:blank:]])?[[:blank:]]*(NOT[[:blank:]])?[[:blank:]]*(HEADER)[[:blank:]]+(\"[[:print:]]*\"|[[:graph:]]+)[[:blank:]]+(\"[[:print:]]*\"|[[:graph:]]+)[[:blank:]]*\n$",
107          "^[[:blank:]]*(MASK[[:blank:]])?[[:blank:]]*(OR[[:blank:]]|AND[[:blank:]])?[[:blank:]]*(NOT[[:blank:]])?[[:blank:]]*(LARGER|SMALLER)[[:blank:]]+([[:digit:]]+)[[:blank:]]*\n$",          "^[[:blank:]]*(MASK[[:blank:]])?[[:blank:]]*(OR[[:blank:]]|AND[[:blank:]])?[[:blank:]]*(NOT[[:blank:]])?[[:blank:]]*(LARGER|SMALLER)[[:blank:]]+([[:digit:]]+)[[:blank:]]*\n$",
108          "^[[:blank:]]*JOB[[:blank:]]+([[:alnum:],_-]+)[[:blank:]]+([[:alnum:],_-]+)[[:blank:]]*\n$",          "^[[:blank:]]*JOB[[:blank:]]+([[:alnum:],_-]+)[[:blank:]]+([[:alnum:],_-]+)[[:blank:]]*\n$",
109          "^[[:blank:]]*LOGFILE[[:blank:]]*=[[:blank:]]*([[:print:]]+)\n$"          "^[[:blank:]]*(LOGFILE)[[:blank:]]*=[[:blank:]]*([[:print:]]+)\n$",
110            "^[[:blank:]]*(HEADERS)[[:blank:]]*=[[:blank:]]*(YES|NO)[[:blank:]]*\n$"
111      };      };
112    
113      for (i = 0; i < 11; i++)      for (i = 0; i < 12; i++)
114          regcomp(&creg[i], reg[i], REG_EXTENDED | REG_ICASE);          regcomp(&creg[i], reg[i], REG_EXTENDED | REG_ICASE);
115    
116      while (fgets(line, LINE_MAX - 1, fp)) {      while (fgets(line, LINE_MAX - 1, fp)) {
# Line 131  int parse_config(FILE * fp) Line 132  int parse_config(FILE * fp)
132              r = set_mask(line, match);              r = set_mask(line, match);
133          else if (!regexec(&creg[9], line, 3, match, 0))          else if (!regexec(&creg[9], line, 3, match, 0))
134              r = set_job(line, match);              r = set_job(line, match);
135          else if (!regexec(&creg[10], line, 2, match, 0))          else if (!regexec(&creg[10], line, 3, match, 0) ||
136                     !regexec(&creg[11], line, 3, match, 0))
137              set_options(line, match);              set_options(line, match);
138          else          else
139              return row;              return row;
# Line 154  int parse_config(FILE * fp) Line 156  int parse_config(FILE * fp)
156   */   */
157  void set_options(char *line, regmatch_t * match)  void set_options(char *line, regmatch_t * match)
158  {  {
159      if (!*logfile)      if (!strncasecmp(line + match[1].rm_so, "LOGFILE", 7)) {
160          strncat(logfile, line + match[1].rm_so,          if (!*logfile)
161                  min((match[1].rm_eo - match[1].rm_so), PATH_MAX - 1));              strncat(logfile, line + match[2].rm_so,
162                        min((match[2].rm_eo - match[2].rm_so), PATH_MAX - 1));
163        } else {
164            if (!strncasecmp(line + match[2].rm_so, "YES", 3))
165                options |= OPTION_HEADERS;
166            else
167                options ^= OPTION_HEADERS;
168        }
169  }  }

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26