Commit 490d6ef6 authored by Juliusz Chroboczek's avatar Juliusz Chroboczek

Add support for returning actions from parse_config_from_string.

parent 34fb107c
...@@ -293,7 +293,7 @@ main(int argc, char **argv) ...@@ -293,7 +293,7 @@ main(int argc, char **argv)
break; break;
case 'C': case 'C':
rc = parse_config_from_string(optarg, strlen(optarg)); rc = parse_config_from_string(optarg, strlen(optarg));
if(rc < 0) { if(rc != CONFIG_DONE) {
fprintf(stderr, fprintf(stderr,
"Couldn't parse configuration from command line.\n"); "Couldn't parse configuration from command line.\n");
exit(1); exit(1);
......
...@@ -816,9 +816,11 @@ parse_option(int c, gnc_t gnc, void *closure, char *token) ...@@ -816,9 +816,11 @@ parse_option(int c, gnc_t gnc, void *closure, char *token)
} }
static int static int
parse_config_line(int c, gnc_t gnc, void *closure) parse_config_line(int c, gnc_t gnc, void *closure, int *action_return)
{ {
char *token; char *token;
if(action_return)
*action_return = CONFIG_DONE;
c = skip_whitespace(c, gnc, closure); c = skip_whitespace(c, gnc, closure);
if(c < 0 || c == '\n' || c == '#') if(c < 0 || c == '\n' || c == '#')
...@@ -914,7 +916,7 @@ parse_config_from_file(const char *filename, int *line_return) ...@@ -914,7 +916,7 @@ parse_config_from_file(const char *filename, int *line_return)
return 0; return 0;
while(1) { while(1) {
c = parse_config_line(c, (gnc_t)gnc_file, &s); c = parse_config_line(c, (gnc_t)gnc_file, &s, NULL);
if(c < -1) { if(c < -1) {
*line_return = s.line; *line_return = s.line;
return -1; return -1;
...@@ -944,16 +946,16 @@ gnc_buf(struct buf_state *s) ...@@ -944,16 +946,16 @@ gnc_buf(struct buf_state *s)
int int
parse_config_from_string(char *string, int n) parse_config_from_string(char *string, int n)
{ {
int c; int c, action;
struct buf_state s = { string, 0, n }; struct buf_state s = { string, 0, n };
c = gnc_buf(&s); c = gnc_buf(&s);
if(c < 0) if(c < 0)
return -1; return -1;
c = parse_config_line(c, (gnc_t)gnc_buf, &s); c = parse_config_line(c, (gnc_t)gnc_buf, &s, &action);
if(c == -1) if(c == -1)
return 1; return action;
else else
return -1; return -1;
} }
......
...@@ -20,6 +20,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ...@@ -20,6 +20,10 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE. THE SOFTWARE.
*/ */
/* Values returned by parse_config_from_string. */
#define CONFIG_DONE 0
struct filter_result { struct filter_result {
unsigned int add_metric; /* allow = 0, deny = INF, metric = <0..INF> */ unsigned int add_metric; /* allow = 0, deny = INF, metric = <0..INF> */
unsigned char *src_prefix; unsigned char *src_prefix;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment