diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-03-26 22:04:03 +0800 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-03-26 22:04:03 +0800 |
commit | cc6313cc697f4c90cf0fc1c5b01cb1871a075f26 (patch) | |
tree | b09646275f390737314c7498a840ad706b7b4a47 | |
parent | 3ae2758fba1dc9b364238c6e1e7d591b12c3d878 (diff) |
logging: fix default initialization of per-category loglevels
Before this patch, there was a bug in the code caused by a memcpy
from one data structure to another. unfortuantely the data structures
were not the same, so we have to explicitly iterate over the array
and assign the structure members manually.
-rw-r--r-- | src/logging.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/logging.c b/src/logging.c index 508ccfd3..2a132eb5 100644 --- a/src/logging.c +++ b/src/logging.c @@ -311,16 +311,26 @@ static void _stderr_output(struct log_target *target, const char *log) struct log_target *log_target_create(void) { struct log_target *target; + unsigned int i; target = talloc_zero(tall_log_ctx, struct log_target); if (!target) return NULL; INIT_LLIST_HEAD(&target->entry); - memcpy(target->categories, log_info->cat, - sizeof(struct log_category)*log_info->num_cat); + + /* initialize the per-category enabled/loglevel from defaults */ + for (i = 0; i < log_info->num_cat; i++) { + struct log_category *cat = &target->categories[i]; + cat->enabled = log_info->cat[i].enabled; + cat->loglevel = log_info->cat[i].loglevel; + } + + /* global settings */ target->use_color = 1; target->print_timestamp = 0; + + /* global log level */ target->loglevel = 0; return target; } |