From bf265f7494edf4d831d52f0333702a01fb45b612 Mon Sep 17 00:00:00 2001 From: Patrik Flykt Date: Wed, 26 Sep 2012 16:01:36 +0300 Subject: [PATCH] log: Disable stack trace from command line Add a '--nobacktrace' command line switch to let the system handle stack traces. The default is to let ConnMan handle them as before --- src/connman.h | 4 ++-- src/log.c | 10 ++++++---- src/main.c | 9 +++++++-- unit/test-nat.c | 4 ++-- 4 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/connman.h b/src/connman.h index c70f6ae..2f6746e 100644 --- a/src/connman.h +++ b/src/connman.h @@ -114,8 +114,8 @@ int __connman_agent_report_error(struct connman_service *service, #include int __connman_log_init(const char *program, const char *debug, - connman_bool_t detach); -void __connman_log_cleanup(void); + connman_bool_t detach, connman_bool_t backtrace); +void __connman_log_cleanup(connman_bool_t backtrace); void __connman_log_enable(struct connman_debug_desc *start, struct connman_debug_desc *stop); diff --git a/src/log.c b/src/log.c index 7d1896c..9a68a4b 100644 --- a/src/log.c +++ b/src/log.c @@ -292,7 +292,7 @@ void __connman_log_enable(struct connman_debug_desc *start, } int __connman_log_init(const char *program, const char *debug, - connman_bool_t detach) + connman_bool_t detach, connman_bool_t backtrace) { static char path[PATH_MAX]; int option = LOG_NDELAY | LOG_PID; @@ -308,7 +308,8 @@ int __connman_log_init(const char *program, const char *debug, if (detach == FALSE) option |= LOG_PERROR; - signal_setup(signal_handler); + if (backtrace == TRUE) + signal_setup(signal_handler); openlog(basename(program), option, LOG_DAEMON); @@ -317,13 +318,14 @@ int __connman_log_init(const char *program, const char *debug, return 0; } -void __connman_log_cleanup(void) +void __connman_log_cleanup(connman_bool_t backtrace) { syslog(LOG_INFO, "Exit"); closelog(); - signal_setup(SIG_DFL); + if (backtrace == TRUE) + signal_setup(SIG_DFL); g_strfreev(enabled); } diff --git a/src/main.c b/src/main.c index 62e5c54..d14cee6 100644 --- a/src/main.c +++ b/src/main.c @@ -355,6 +355,7 @@ static gchar *option_noplugin = NULL; static gchar *option_wifi = NULL; static gboolean option_detach = TRUE; static gboolean option_dnsproxy = TRUE; +static gboolean option_backtrace = TRUE; static gboolean option_version = FALSE; static gboolean parse_debug(const char *key, const char *value, @@ -391,6 +392,9 @@ static GOptionEntry options[] = { { "nodnsproxy", 'r', G_OPTION_FLAG_REVERSE, G_OPTION_ARG_NONE, &option_dnsproxy, "Don't enable DNS Proxy" }, + { "nobacktrace", 0, G_OPTION_FLAG_REVERSE, + G_OPTION_ARG_NONE, &option_backtrace, + "Don't print out backtrace information" }, { "version", 'v', 0, G_OPTION_ARG_NONE, &option_version, "Show version information and exit" }, { NULL }, @@ -530,7 +534,8 @@ int main(int argc, char *argv[]) g_dbus_set_disconnect_function(conn, disconnect_callback, NULL, NULL); - __connman_log_init(argv[0], option_debug, option_detach); + __connman_log_init(argv[0], option_debug, option_detach, + option_backtrace); __connman_dbus_init(conn); @@ -622,7 +627,7 @@ int main(int argc, char *argv[]) __connman_dbus_cleanup(); - __connman_log_cleanup(); + __connman_log_cleanup(option_backtrace); dbus_connection_unref(conn); diff --git a/unit/test-nat.c b/unit/test-nat.c index 578ff3e..4a48461 100644 --- a/unit/test-nat.c +++ b/unit/test-nat.c @@ -147,7 +147,7 @@ int main(int argc, char *argv[]) g_test_init(&argc, &argv, NULL); - __connman_log_init(argv[0], "*", FALSE); + __connman_log_init(argv[0], "*", FALSE, TRUE); __connman_iptables_init(); __connman_nat_init(); @@ -159,7 +159,7 @@ int main(int argc, char *argv[]) __connman_nat_cleanup(); __connman_iptables_cleanup(); - __connman_log_cleanup(); + __connman_log_cleanup(TRUE); return err; } -- 2.7.4