X-Git-Url: http://git.cascardo.eti.br/?a=blobdiff_plain;f=popproxy.c;h=99a2352d2d2ed52b49403c17bc873e3cdb99cf28;hb=1516afb0ad6c38be922c304d2d002161cfeb8b7a;hp=78403ba2c05c127229cb59f530f82e208774bb10;hpb=389a08481f681f29ad851c7a312beecaad56c313;p=cascardo%2Frnetproxy.git diff --git a/popproxy.c b/popproxy.c index 78403ba..99a2352 100644 --- a/popproxy.c +++ b/popproxy.c @@ -61,11 +61,14 @@ new_client (int fd, struct sockaddr *addr, socklen_t saddr, gpointer data) } static gchar *configfile; +static gboolean foreground; static GOptionEntry opt_entries[] = { { "config-file", 'c', 0, G_OPTION_ARG_FILENAME, &configfile, "Configuration file location", "file" }, + { "foreground", 'f', 0, G_OPTION_ARG_NONE, &foreground, + "Run in foreground", 0 }, { NULL } }; @@ -83,15 +86,18 @@ int main (int argc, char **argv) struct pop_address pop_address; gnutls_global_init (); - pop_log_init (); configfile = CONFFILE; opt_ctx = g_option_context_new (""); g_option_context_add_main_entries (opt_ctx, opt_entries, NULL); - if (!g_option_context_parse (opt_ctx, &argc, &argv, NULL)) + + error = NULL; + if (!g_option_context_parse (opt_ctx, &argc, &argv, &error)) { - g_log (NULL, G_LOG_LEVEL_WARNING | G_LOG_FLAG_FATAL, - "Could not parse command line options."); + g_critical ("Could not parse command line options: %s.", + error->message); + g_error_free (error); + exit (1); } g_option_context_free (opt_ctx); @@ -101,8 +107,8 @@ int main (int argc, char **argv) if (g_key_file_load_from_file (keyfile, configfile, G_KEY_FILE_NONE, &error) == FALSE) { - fprintf (stderr, "Could not load configuration file %s: %s.\n", - configfile, error->message); + g_critical ("Could not load configuration file %s: %s.", + configfile, error->message); g_error_free (error); exit (1); } @@ -130,7 +136,7 @@ int main (int argc, char **argv) server_address = g_strdup ("127.0.0.1"); g_error_free (error); } - + error = NULL; server_port = g_key_file_get_string (keyfile, "global", "server_port", &error); if (server_port == NULL && error != NULL) @@ -145,14 +151,17 @@ int main (int argc, char **argv) server_fd = hc_tcp_server (port); if (server_fd < 0) { - fprintf (stderr, "Could not create server.\n"); + g_critical ("Could not create server."); exit (1); } hc_server_add_watch (server_fd, new_client, &pop_address); + pop_log_init (); + g_message ("Listening at %s:%s.", conf_address, port); - daemon (0, 0); + if (!foreground) + daemon (0, 0); g_free (conf_address); g_free (port);