From 4b3ea5b714adf374d9ac7af009b8f7b8a65f21f0 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 8 Dec 2010 21:25:26 +0000 Subject: flex/bison vs ragel git-svn-id: https://svn.spreadspace.org/tcpproxy/trunk@38 e61f0598-a718-4e21-a8f0-0aadfa62ad6b --- src/tcpproxy.c | 35 ++++++++++------------------------- 1 file changed, 10 insertions(+), 25 deletions(-) (limited to 'src/tcpproxy.c') diff --git a/src/tcpproxy.c b/src/tcpproxy.c index 3e30338..273aad0 100644 --- a/src/tcpproxy.c +++ b/src/tcpproxy.c @@ -1,14 +1,14 @@ /* * tcpproxy * - * tcpproxy is a simple tcp connection proxy which combines the - * features of rinetd and 6tunnel. tcpproxy supports IPv4 and - * IPv6 and also supports connections from IPv6 to IPv4 + * tcpproxy is a simple tcp connection proxy which combines the + * features of rinetd and 6tunnel. tcpproxy supports IPv4 and + * IPv6 and also supports connections from IPv6 to IPv4 * endpoints and vice versa. - * + * * * Copyright (C) 2010-2011 Christian Pointner - * + * * This file is part of tcpproxy. * * tcpproxy is free software: you can redistribute it and/or modify @@ -39,11 +39,7 @@ #include "listener.h" #include "clients.h" - -extern FILE *yyin; -extern void yyinit(const char* config_file, listeners_t* listeners); -extern int yyparse(void); - +#include "cfg_parser.h" int main_loop(options_t* opt, listeners_t* listeners) { @@ -112,7 +108,7 @@ int main(int argc, char* argv[]) options_print_version(); } - if(ret != -2 && ret != -3) + if(ret != -2 && ret != -3) options_print_usage(); if(ret == -1 || ret == -3) @@ -132,7 +128,7 @@ int main(int argc, char* argv[]) case -4: fprintf(stderr, "this log target is only allowed once: '%s', exitting\n", (char*)(tmp->data_)); break; default: fprintf(stderr, "syntax error near: '%s', exitting\n", (char*)(tmp->data_)); break; } - + options_clear(&opt); log_close(); exit(ret); @@ -160,18 +156,7 @@ int main(int argc, char* argv[]) exit(-1); } } else { - yyin = fopen(opt.config_file_, "r"); - if(!yyin) { - log_printf(ERROR, "can't open config file %s: %s", opt.config_file_, strerror(errno)); - listener_clear(&listeners); - options_clear(&opt); - log_close(); - exit(-1); - } - - yyinit(opt.config_file_, &listeners); - int ret = yyparse(); - fclose(yyin); + ret = read_configfile(opt.config_file_, &listeners); if(ret || !slist_length(&listeners)) { if(!ret) log_printf(ERROR, "no listeners defined in config file %s", opt.config_file_); @@ -212,7 +197,7 @@ int main(int argc, char* argv[]) options_clear(&opt); log_close(); exit(-1); - } + } if(opt.daemonize_) { pid_t oldpid = getpid(); -- cgit v1.2.3