On Fri, Jul 31, 2009 at 05:57:25PM -0400, Amy Griffis wrote: > Don't convert high priority levels to the debug level. Don't parse > LIBVIRT_LOG_FILTERS and LIBVIRT_LOG_OUTPUTS when they're set to the > empty string. Warn when the user specifies an invalid value (empty > string remains a noop). > --- > > src/libvirt.c | 13 ++++++++----- > src/logging.c | 52 ++++++++++++++++++++++++++++++++-------------------- > 2 files changed, 40 insertions(+), 25 deletions(-) ACK Daniel > > diff --git a/src/libvirt.c b/src/libvirt.c > index 61a9b7c..9e96410 100644 > --- a/src/libvirt.c > +++ b/src/libvirt.c > @@ -274,21 +274,24 @@ virInitialize(void) > return -1; > > debugEnv = getenv("LIBVIRT_DEBUG"); > - if (debugEnv && *debugEnv && *debugEnv != '0') { > - if (STREQ(debugEnv, "2") || STREQ(debugEnv, "info")) > + if (debugEnv && *debugEnv) { > + if (STREQ(debugEnv, "1") || STREQ(debugEnv, "debug")) > + virLogSetDefaultPriority(VIR_LOG_DEBUG); > + else if (STREQ(debugEnv, "2") || STREQ(debugEnv, "info")) > virLogSetDefaultPriority(VIR_LOG_INFO); > else if (STREQ(debugEnv, "3") || STREQ(debugEnv, "warning")) > virLogSetDefaultPriority(VIR_LOG_WARN); > else if (STREQ(debugEnv, "4") || STREQ(debugEnv, "error")) > virLogSetDefaultPriority(VIR_LOG_ERROR); > else > - virLogSetDefaultPriority(VIR_LOG_DEBUG); > + VIR_WARN0(_("Ignoring invalid log level setting.")); > } > debugEnv = getenv("LIBVIRT_LOG_FILTERS"); > - if (debugEnv) > + if (debugEnv && *debugEnv) > virLogParseFilters(debugEnv); > + > debugEnv = getenv("LIBVIRT_LOG_OUTPUTS"); > - if (debugEnv) > + if (debugEnv && *debugEnv) > virLogParseOutputs(debugEnv); > > DEBUG0("register drivers"); > diff --git a/src/logging.c b/src/logging.c > index 46a4f9f..27d6e4b 100644 > --- a/src/logging.c > +++ b/src/logging.c > @@ -314,8 +314,10 @@ error: > * Returns 0 if successful, -1 in case of error. > */ > int virLogSetDefaultPriority(int priority) { > - if ((priority < VIR_LOG_DEBUG) || (priority > VIR_LOG_ERROR)) > + if ((priority < VIR_LOG_DEBUG) || (priority > VIR_LOG_ERROR)) { > + VIR_WARN0(_("Ignoring invalid log level setting.")); > return(-1); > + } > if (!virLogInitialized) > virLogStartup(); > virLogDefaultPriority = priority; > @@ -681,7 +683,8 @@ int virLogParseOutputs(const char *outputs) { > const char *cur = outputs, *str; > char *name; > int prio; > - int ret = 0; > + int ret = -1; > + int count = 0; > > if (cur == NULL) > return(-1); > @@ -690,53 +693,57 @@ int virLogParseOutputs(const char *outputs) { > while (*cur != 0) { > prio= virParseNumber(&cur); > if ((prio < VIR_LOG_DEBUG) || (prio > VIR_LOG_ERROR)) > - return(-1); > + goto cleanup; > if (*cur != ':') > - return(-1); > + goto cleanup; > cur++; > if (STREQLEN(cur, "stderr", 6)) { > cur += 6; > if (virLogAddOutputToStderr(prio) == 0) > - ret++; > + count++; > } else if (STREQLEN(cur, "syslog", 6)) { > cur += 6; > if (*cur != ':') > - return(-1); > + goto cleanup; > cur++; > str = cur; > while ((*cur != 0) && (!IS_SPACE(cur))) > cur++; > if (str == cur) > - return(-1); > + goto cleanup; > #if HAVE_SYSLOG_H > name = strndup(str, cur - str); > if (name == NULL) > - return(-1); > + goto cleanup; > if (virLogAddOutputToSyslog(prio, name) == 0) > - ret++; > + count++; > VIR_FREE(name); > #endif /* HAVE_SYSLOG_H */ > } else if (STREQLEN(cur, "file", 4)) { > cur += 4; > if (*cur != ':') > - return(-1); > + goto cleanup; > cur++; > str = cur; > while ((*cur != 0) && (!IS_SPACE(cur))) > cur++; > if (str == cur) > - return(-1); > + goto cleanup; > name = strndup(str, cur - str); > if (name == NULL) > - return(-1); > + goto cleanup; > if (virLogAddOutputToFile(prio, name) == 0) > - ret++; > + count++; > VIR_FREE(name); > } else { > - return(-1); > + goto cleanup; > } > virSkipSpaces(&cur); > } > + ret = count; > +cleanup: > + if (ret == -1) > + VIR_WARN0(_("Ignoring invalid log output setting.")); > return(ret); > } > > @@ -762,7 +769,8 @@ int virLogParseFilters(const char *filters) { > const char *cur = filters, *str; > char *name; > int prio; > - int ret = 0; > + int ret = -1; > + int count = 0; > > if (cur == NULL) > return(-1); > @@ -771,22 +779,26 @@ int virLogParseFilters(const char *filters) { > while (*cur != 0) { > prio= virParseNumber(&cur); > if ((prio < VIR_LOG_DEBUG) || (prio > VIR_LOG_ERROR)) > - return(-1); > + goto cleanup; > if (*cur != ':') > - return(-1); > + goto cleanup; > cur++; > str = cur; > while ((*cur != 0) && (!IS_SPACE(cur))) > cur++; > if (str == cur) > - return(-1); > + goto cleanup; > name = strndup(str, cur - str); > if (name == NULL) > - return(-1); > + goto cleanup; > if (virLogDefineFilter(name, prio, 0) >= 0) > - ret++; > + count++; > VIR_FREE(name); > virSkipSpaces(&cur); > } > + ret = count; > +cleanup: > + if (ret == -1) > + VIR_WARN0(_("Ignoring invalid log filter setting.")); > return(ret); > } > > -- > Libvir-list mailing list > Libvir-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/libvir-list -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list