On 10/08/2010 03:29 PM, Denys Vlasenko wrote:
This patch makes it easier to analyze "bool" type options - now they are all just bits in a single return value, no need to have an integer variable for each option.
The previous behavior is retained too: it is useful for "cumulative" options like -vvv.
cumulative options is done by *(int*)opt[ii].value += 1, right?
The patch also removes all OPT_GROUPs.
Run tested. Please review.
This is not wise.
+enum { + OPT_v = 1 << 0, + OPT_d = 1 << 1, + OPT_i = 1 << 2, + OPT_t = 1 << 3, + OPT_s = 1 << 4, +};
+ if (ii < sizeof(retval)*8) + retval |= (1 << ii);
this means that it's position related.
If I swap something in
static struct options abrt_action_generate_backtrace_options[] = { OPT__VERBOSE(&g_verbose), - OPT_GROUP(""), - OPT_STRING( 'd' , 0, &d_opt, "dir", "Crash dump directory"), + OPT_STRING( 'd' , 0, &dump_dir_name, "dir", "Crash dump directory"), OPT_STRING( 'i' , 0, &i_opt, "dir1[:dir2]...", "Additional debuginfo directories"), OPT_INTEGER( 't' , 0, &exec_timeout_sec, "Kill gdb if it runs for more than SECONDS"), - OPT_BOOL( 's' , 0, &s_opt, "Log to syslog even with -d"), + OPT_BOOL( 's' , 0, NULL, "Log to syslog even with -d"), OPT_END() };
it won't fit to enum.
And also I don't see any problem with that if arg is not preset then is set to 0(due to static) or is bump up by*(int*)opt[ii].value += 1