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$", |
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)) { |
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; |
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 |
} |
} |