[pacman-dev] [PATCH] use strtok_r to parse multi-value config options
Allan McRae
allan at archlinux.org
Sat Feb 2 18:47:40 EST 2013
On 03/02/13 04:01, Andrew Gregory wrote:
> On Sat, 2 Feb 2013 12:39:11 -0500
> Dave Reisner <d at falconindy.com> wrote:
>
>> On Sat, Feb 02, 2013 at 10:16:19AM -0500, Andrew Gregory wrote:
>>> This prevents multiple spaces between values from being
>>> parsed as empty values.
>>>
>>> Signed-off-by: Andrew Gregory <andrew.gregory.8 at gmail.com>
>>> ---
>>> src/pacman/conf.c | 15 ++++++---------
>>> 1 file changed, 6 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/src/pacman/conf.c b/src/pacman/conf.c
>>> index 1bea2b0..d407296 100644
>>> --- a/src/pacman/conf.c
>>> +++ b/src/pacman/conf.c
>>> @@ -373,17 +373,14 @@ static int process_cleanmethods(alpm_list_t *values,
>>> static void setrepeatingoption(char *ptr, const char *option,
>>> alpm_list_t **list)
>>> {
>>> - char *q;
>>> + char *val, *saveptr;
>>>
>>> - while((q = strchr(ptr, ' '))) {
>>> - *q = '\0';
>>> - *list = alpm_list_add(*list, strdup(ptr));
>>> - pm_printf(ALPM_LOG_DEBUG, "config: %s: %s\n", option, ptr);
>>> - ptr = q;
>>> - ptr++;
>>
>> It'd be nice to see if there's any history on why this function was
>> written this way (as to avoid modifying the input string).
>>
>
> Just to be clear, the current version modifies it as well. As for
> why... I have no idea. It goes all the way back to the initial commit.
>
I'd say it is an oversight. With actual consequences:
[09:37:59] debug: config: SigLevel: Required
[09:37:59] debug: config: SigLevel: DatabaseOptional
[09:37:59] debug: config: SigLevel:
[09:37:59] debug: config: SigLevel: TrustedOnly
[09:37:59] error: config file /etc/pacman.conf, line 22: invalid value
for 'SigLevel' : ''
Allan
More information about the pacman-dev
mailing list