1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00
samba-mirror/ctdb/common/ctdb_logging.c
Martin Schwenke a22c8ca056 ctdb-logging: Rework debug level parsing
Put declarations into ctdb_logging.h, factor out some common code,
clean up #includes.

Remove the check so see if the 1st character of the debug level is
'-'.  This is wrong, since it is trying to check for a negative
numeric debug level (which is no longer supported) and would need to
be handled in the else anyway.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
2014-10-28 05:42:04 +01:00

86 lines
1.9 KiB
C

/*
ctdb logging code
Copyright (C) Ronnie Sahlberg 2009
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, see <http://www.gnu.org/licenses/>.
*/
#include <ctype.h>
#include "replace.h"
#include "ctdb_logging.h"
const char *debug_extra = "";
struct debug_levels {
int32_t level;
const char *description;
};
static struct debug_levels debug_levels[] = {
{DEBUG_ERR, "ERR"},
{DEBUG_WARNING, "WARNING"},
{DEBUG_NOTICE, "NOTICE"},
{DEBUG_INFO, "INFO"},
{DEBUG_DEBUG, "DEBUG"},
{0, NULL}
};
const char *get_debug_by_level(int32_t level)
{
int i;
for (i=0; debug_levels[i].description != NULL; i++) {
if (debug_levels[i].level == level) {
return debug_levels[i].description;
}
}
return NULL;
}
static bool get_debug_by_desc(const char *desc, int32_t *level)
{
int i;
for (i=0; debug_levels[i].description != NULL; i++) {
if (!strcasecmp(debug_levels[i].description, desc)) {
*level = debug_levels[i].level;
return true;
}
}
return false;
}
bool parse_debug(const char *str, int32_t *level)
{
if (isalpha(str[0])) {
return get_debug_by_desc(str, level);
} else {
*level = strtol(str, NULL, 0);
return get_debug_by_level(*level) != NULL;
}
}
void print_debug_levels(FILE *stream)
{
int i;
for (i=0; debug_levels[i].description != NULL; i++) {
fprintf(stream,
"%s (%d)\n",
debug_levels[i].description, debug_levels[i].level);
}
}