[pacman-dev] [PATCH 1/2] skip unneeded parsing

Dan McGee dpmcgee at gmail.com
Mon Jan 9 13:40:28 EST 2012


On Mon, Jan 9, 2012 at 12:09 PM, jjacky <i.am.jack.mail at gmail.com> wrote:
> parsing config file is a two-steps process, one for
> "options" and one for the repos. in each of those,
> there's no need to parse the other section(s), so we'll
> skip it. (most notably, when parsing for "options" it
> would read all included files for repos, while just
> ignoring everything in them)
>
> Signed-off-by: Olivier Brunel <i.am.jack.mail at gmail.com>

I think this will fail hard in the following scenario:

pacman.conf follows:
-----
Include /etc/pacman.d/shared-options.conf

[repo]
....
-----

Include directives can occur *anywhere*, not just inside sections.

> ---
>  src/pacman/conf.c |    6 ++++++
>  1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/src/pacman/conf.c b/src/pacman/conf.c
> index 7ba2791..09749ea 100644
> --- a/src/pacman/conf.c
> +++ b/src/pacman/conf.c
> @@ -755,6 +755,12 @@ static int _parseconfig(const char *file, struct
> section_t *section,
>                        continue;
>                }
>
> +               /* skip unnecessary parsing */
> +               if ( (parse_options && !section->is_options)
> +                               || (!parse_options && section->is_options) )
> {
> +                       continue;
> +               }
> +
>                /* directive */
>                /* strsep modifies the 'line' string: 'key \0 value' */
>                key = line;
> --
> 1.7.8.3
>


More information about the pacman-dev mailing list