summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPatrik Flykt <patrik.flykt@linux.intel.com>2012-09-26 16:01:36 +0300
committerPatrik Flykt <patrik.flykt@linux.intel.com>2012-09-28 09:39:41 +0300
commitbf265f7494edf4d831d52f0333702a01fb45b612 (patch)
tree8f222ddaa42357b65ca150837eccf0790222f02d /src
parentfc6c9684cc5a63c3d03aed3df201e89b4257f368 (diff)
downloadconnman-bf265f7494edf4d831d52f0333702a01fb45b612.tar.gz
connman-bf265f7494edf4d831d52f0333702a01fb45b612.tar.bz2
connman-bf265f7494edf4d831d52f0333702a01fb45b612.zip
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
Diffstat (limited to 'src')
-rw-r--r--src/connman.h4
-rw-r--r--src/log.c10
-rw-r--r--src/main.c9
3 files changed, 15 insertions, 8 deletions
diff --git a/src/connman.h b/src/connman.h
index c70f6ae3..2f6746e4 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -114,8 +114,8 @@ int __connman_agent_report_error(struct connman_service *service,
#include <connman/log.h>
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 7d1896c4..9a68a4b9 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 62e5c54d..d14cee6a 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);