// ----------------------------------------------------------------------- // I was bored. // And then I suddenly felt like moving some chars around, hardcore style. int log_setup_levels(char *levels) { if (!levels || (*levels == '\0')) return 0; char *str = levels; const int buf_max = 8; char level_str[buf_max]; char comp_name[buf_max]; char *buf = comp_name; int i = 0; int have_comp = 0; int found = 0; while (1) { if (i > buf_max) { goto bail; } if (*str == '=') { if (!have_comp && (i > 0)) { buf[i] = '\0'; buf = level_str; i = 0; have_comp = 1; } else { goto bail; } } else if ((*str == ',') || (*str == '\0')) { if (have_comp && (i > 0)) { buf[i] = '\0'; buf = comp_name; i = 0; have_comp = 0; char *endptr; int level = strtol(level_str, &endptr, 10); if ((*endptr != '\0') || (level > 9)) { goto bail; } int comp_id = log_get_component_id(comp_name); if (comp_id < 0) { goto bail; } if (log_set_level(comp_id, level)) { goto bail; } found++; } else { goto bail; } if (*str == '\0') { break; } } else { buf[i] = *str; i++; } str++; } return found; bail: return -(str - levels + 1); }
// ----------------------------------------------------------------------- int ectl_log_component_id(char *name) { return log_get_component_id(name); }