51 |
} |
} |
52 |
debug("configuration file: '%s'\n", cfg); |
debug("configuration file: '%s'\n", cfg); |
53 |
|
|
54 |
|
check_file_perms(cfg, S_IRUSR | S_IWUSR); |
55 |
|
|
56 |
fd = fopen(cfg, "r"); |
fd = fopen(cfg, "r"); |
57 |
if (fd == NULL) |
if (fd == NULL) |
58 |
fatal(ERROR_FILE_OPEN, "opening config file %s; %s\n", cfg, |
fatal(ERROR_FILE_OPEN, "opening config file %s; %s\n", cfg, |
67 |
|
|
68 |
fclose(fd); |
fclose(fd); |
69 |
|
|
|
check_file_perms(cfg, S_IRUSR | S_IWUSR); |
|
|
|
|
70 |
debug("options: %0#10x '%s'\n", options, charset); |
debug("options: %0#10x '%s'\n", options, charset); |
71 |
|
|
72 |
return 0; |
return 0; |
138 |
"[[:blank:]]*\n$", |
"[[:blank:]]*\n$", |
139 |
|
|
140 |
"^[[:blank:]]*(SET[[:blank:]])?[[:blank:]]*(ERRORS|EXPUNGE|" |
"^[[:blank:]]*(SET[[:blank:]])?[[:blank:]]*(ERRORS|EXPUNGE|" |
141 |
"HEADERS|NAMESPACE|PEEK|PERMISSIONS|PROTOCOL|SUBSCRIBE)" |
"HEADERS|NAMESPACE|PEEK|SUBSCRIBE)[[:blank:]]*=[[:blank:]]*" |
142 |
"[[:blank:]]*=[[:blank:]]*(YES|NO)[[:blank:]]*\n$", |
"(YES|NO)[[:blank:]]*\n$", |
143 |
|
|
144 |
"^[[:blank:]]*(SET[[:blank:]])?[[:blank:]]*(DAEMON|TIMEOUT)" |
"^[[:blank:]]*(SET[[:blank:]])?[[:blank:]]*(DAEMON|TIMEOUT)" |
145 |
"[[:blank:]]*=[[:blank:]]*([[:digit:]]+)\n$" |
"[[:blank:]]*=[[:blank:]]*([[:digit:]]+)\n$" |
271 |
options |= OPTION_PEEK; |
options |= OPTION_PEEK; |
272 |
else |
else |
273 |
options &= ~(OPTION_PEEK); |
options &= ~(OPTION_PEEK); |
|
} else if (!strncasecmp(line + m[2].rm_so, "permissions", 8)) { |
|
|
if (!strncasecmp(line + m[3].rm_so, "yes", 3)) |
|
|
options |= OPTION_PERMISSIONS; |
|
|
else |
|
|
options &= ~(OPTION_PERMISSIONS); |
|
274 |
} else if (!strncasecmp(line + m[2].rm_so, "subscribe", 9)) { |
} else if (!strncasecmp(line + m[2].rm_so, "subscribe", 9)) { |
275 |
if (!strncasecmp(line + m[3].rm_so, "yes", 3)) |
if (!strncasecmp(line + m[3].rm_so, "yes", 3)) |
276 |
options |= OPTION_SUBSCRIBE; |
options |= OPTION_SUBSCRIBE; |