[pacman-dev] Pacman Hooks
Sascha Kruse
knopwob at googlemail.com
Sat Jan 29 18:05:54 EST 2011
2011/1/29 Dan McGee <dpmcgee at gmail.com>:
> On Sat, Jan 29, 2011 at 2:20 PM, Sascha Kruse <knopwob at googlemail.com> wrote:
>> 2011/1/29 Dan McGee <dpmcgee at gmail.com>:
>>> On Sat, Jan 29, 2011 at 8:36 AM, Sascha Kruse <knopwob at googlemail.com> wrote:
>>>> - The "File" argument can't begin with a / because it is matched
>>>> against alpm_pkg_get_data and that
>>>> file-strings don't have the leading /
>>> This is a must-have, your logic is backwards. We never assume the
>>> install root is /; file paths in all install scripts should be written
>>> this way too, not to mention everywhere in the library. So nothing
>>> wrong here, it would be wrong if you did any prefix whatsoever.
>>
>> I get your point, but i think it would be confusing for the users.
>> I would intuitively write File = /usr/share/fonts/*
>> instead of File = usr/share/fonts/*.
>> So maybe we should accept both and in the latter case ignore
>> the leading / ?
>
> Maybe I wasn't clear.
>
> We will *not* take a patch that prefixes paths with anything,
> anywhere, anytime. pactest is a perfect example of relative dbpaths
> and dbroots that this needs to work for.
>
Okay, understood.
I hope i don't get annoying, but i have another question.
At the moment I'm looking into the config parsing. Currenty, pacman parses
the pacman.conf (pacman.c:_parseconfig(...)) into
[section]
key = value
And it assumes, that if section != "options" the section is a repo.
To use pacmans config parsing i would like to generalize this a bit.
My first idea is to change the syntax of the pacman.conf to
[section]
{subsection}
key = value
{subsection}
...
So a real world pacman.conf would look like
[options]
...
[hooks]
{fonts}
FIle = usr/share/fonts/*
When = PostInstall
[servers]
{core}
Server = ....
But the big disadvantage of this would be, well, that the syntax of
pacman.conf changes.
My other idea is to generalize the _parseconfig(...) function so that
it can parse an arbitrary config file with the given syntax.
The result would be a alpm_list_t filled with:
typedef struct section {
char *name;
alpm_list_t *key_pairs;
} section_t;
with
typedef struct key_pair {
char *key;
char *value;
} key_pair_t;
This new _parseconfig(..) would then be used by a new parse_pm_config()
and parse_hooks_config().In this case we would have a separate
pacman.conf and hooks.conf. If this solution is used, should i move the
_parseconfig(..) to a separate *.c file, or should it stay in pacman.c?
I prefer the generalized _parseconfig(..) but i wanted to hear your
opinion first, before changing the config parsing.
Greetings,
Sascha
More information about the pacman-dev
mailing list