unsigned long debug_get_flags_option(const char *name, const struct debug_named_value *flags, unsigned long dfault) { unsigned long result; const char *str; const struct debug_named_value *orig = flags; int namealign = 0; str = os_get_option(name); if(!str) result = dfault; else if (!util_strcmp(str, "help")) { result = dfault; _debug_printf("%s: help for %s:\n", __FUNCTION__, name); for (; flags->name; ++flags) namealign = MAX2(namealign, strlen(flags->name)); for (flags = orig; flags->name; ++flags) _debug_printf("| %*s [0x%0*lx]%s%s\n", namealign, flags->name, (int)sizeof(unsigned long)*CHAR_BIT/4, flags->value, flags->desc ? " " : "", flags->desc ? flags->desc : ""); } else { result = 0; while( flags->name ) { if (!util_strcmp(str, "all") || util_strstr(str, flags->name )) result |= flags->value; ++flags; } } if (debug_get_option_should_print()) { if (str) { debug_printf("%s: %s = 0x%lx (%s)\n", __FUNCTION__, name, result, str); } else { debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result); } } return result; }
unsigned long debug_get_flags_option(const char *name, const struct debug_named_value *flags, unsigned long dfault) { unsigned long result; const char *str; str = os_get_option(name); if(!str) result = dfault; else if (!util_strcmp(str, "help")) { result = dfault; while (flags->name) { debug_printf("%s: help for %s: %s [0x%lx]\n", __FUNCTION__, name, flags->name, flags->value); flags++; } } else { result = 0; while( flags->name ) { if (!util_strcmp(str, "all") || util_strstr(str, flags->name )) result |= flags->value; ++flags; } } if (str) { debug_printf("%s: %s = 0x%lx (%s)\n", __FUNCTION__, name, result, str); } else { debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result); } return result; }
unsigned long debug_get_flags_option(const char *name, const struct debug_named_value *flags, unsigned long dfault) { unsigned long result; const char *str; str = _debug_get_option(name); if(!str) result = dfault; else { result = 0; while( flags->name ) { if (!util_strcmp(str, "all") || util_strstr(str, flags->name )) result |= flags->value; ++flags; } } debug_printf("%s: %s = 0x%lx\n", __FUNCTION__, name, result); return result; }