diff options
author | sleske <sleske@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-11-22 22:36:55 +0000 |
---|---|---|
committer | sleske <sleske@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-11-22 22:36:55 +0000 |
commit | f54c5197a6349977585f82676950accb39cfcd9b (patch) | |
tree | 7ee12d16dc38f7a4d58099c7003edcf6d011f940 /navit/debug.c | |
parent | a2cd29a49af0f5db8cd89312f2c58a677e10e969 (diff) | |
download | navit-svn-f54c5197a6349977585f82676950accb39cfcd9b.tar.gz |
Add:core:Allow setting the debug level by name in navit.xml.|#1269, last part
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5969 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/debug.c')
-rw-r--r-- | navit/debug.c | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/navit/debug.c b/navit/debug.c index 2aa3bcb9..8eab0d2d 100644 --- a/navit/debug.c +++ b/navit/debug.c @@ -135,14 +135,43 @@ debug_level_set(const char *name, dbg_level level) } } +static dbg_level +parse_dbg_level(struct attr *dbg_level_attr, struct attr *level_attr) +{ + if (dbg_level_attr) { + if(!strcmp(dbg_level_attr->u.str,"error")){ + return lvl_error; + } + if(!strcmp(dbg_level_attr->u.str,"warning")){ + return lvl_warning; + } + if(!strcmp(dbg_level_attr->u.str,"info")){ + return lvl_info; + } + if(!strcmp(dbg_level_attr->u.str,"debug")){ + return lvl_debug; + } + dbg(lvl_error, "Invalid debug level in config: '%s'\n", dbg_level_attr->u.str); + } else if (level_attr) { + if (level_attr->u.num>= lvl_error && + level_attr->u.num<= lvl_debug) + return level_attr->u.num; + dbg(lvl_error, "Invalid debug level in config: %ld\n", level_attr->u.num); + } + return lvl_unset; +} + struct debug * debug_new(struct attr *parent, struct attr **attrs) { - struct attr *name,*level; + struct attr *name,*dbg_level_attr,*level_attr; + dbg_level level; name=attr_search(attrs, NULL, attr_name); - level=attr_search(attrs, NULL, attr_level); + dbg_level_attr=attr_search(attrs, NULL, attr_dbg_level); + level_attr=attr_search(attrs, NULL, attr_level); + level = parse_dbg_level(dbg_level_attr,level_attr); #ifdef HAVE_SOCKET - if (!name && !level) { + if (!name && level==lvl_unset) { struct attr *socket_attr=attr_search(attrs, NULL, attr_socket); char *p,*s; if (!socket_attr) @@ -166,9 +195,9 @@ debug_new(struct attr *parent, struct attr **attrs) return (struct debug *)&dummy; } #endif - if (!name || !level) + if (!name || level==lvl_unset) return NULL; - debug_level_set(name->u.str, level->u.num); + debug_level_set(name->u.str, level); return (struct debug *)&dummy; } |