Denys Vlasenko <[email protected]> writes:

> On 03/26/2012 11:17 AM, Nikola Pajkovsky wrote:
>> -bool is_in_string_list(const char *name, char **v)
>> +bool is_in_string_list(const char *name, char **v, int flags)
>>   {
>> +    bool ret = false;
>>       while (*v)
>>       {
>>           if (strcmp(*v, name) == 0)
>> -            return true;
>> +        {
>> +            ret = true;
>> +            break;
>> +        }
>>           v++;
>>       }
>> -    return false;
>> +
>> +    if (flags&  MAKEDESC_WHITELIST)
>> +        ret = !ret;
>> +
>> +    return ret;
>>   }
>
> As I see it, is_in_string_list() is a generic helper function:
> "is this string in this NULL-terminated array of strings?"
>
> If you need to ask "is this string NOT in array?",
> just use !is_in_string_list(str, vector).
>
>
>
>> -        if (names_to_skip&&  is_in_string_list(key, names_to_skip))
>> +        if (names_to_skip
>> +&&  is_in_string_list(key, names_to_skip, desc_flags))
>>               continue;
>>
>>           struct problem_item *item = g_hash_table_lookup(problem_data, key);
>> @@ -87,7 +89,8 @@ char *make_description(problem_data_t *problem_data, char 
>> **names_to_skip, unsig
>>               l = l->next;
>>
>>               /* Skip items we are not interested in */
>> -            if (names_to_skip&&  is_in_string_list(key, names_to_skip))
>> +            if (names_to_skip
>> +                 &&  is_in_string_list(key, names_to_skip, desc_flags))
>>                   continue;
>
> Yes, I see that you want it simple, and adding (flags & MAKEDESC_WHITELIST)
> check here would be butt-ugly. I propose we add a local helper function
> just above make_description():
>
> static bool rejected_name(const char *name, char **v, int flags)
> {
>     bool r = is_in_string_list(name, v);
>     if (flags & MAKEDESC_WHITELIST)
>          r = !r;
>     return r;
> }
>
> and use it here.

I'm having problem to understand how to use it.

-- 
Nikola

Reply via email to