[pacman-dev] Config file handling (was: [PATCH] Change -z|--showsize flag to ShowSize pacman.conf option)
Aaron Griffin
aaronmgriffin at gmail.com
Fri Jun 1 14:28:30 EDT 2007
On 6/1/07, Roman Kyrylych <roman.kyrylych at gmail.com> wrote:
> I'm suggesting to use 3rd party library for parsing.
> I see 2 choices:
> 1) iniparser
> there is nice console app that can be used by shell scripts to parse
> config (made by James):
> http://archlinux.org/~james/projects/network/iniread-0.1/
> usage example:
> http://archlinux.org/pipermail/arch-dev-public/2007-April/000415.html
>
> 2) libconfuse
> this one has nice validation features
I don't really like this approach. I mean adding yet-another-dep
isn't a big deal, using someone else's configuration parser means that
_they_ define the format, not us. Parsing is easy. I actually used
to be fairly interested in the topic, and have read quite a few books
on the topic.
If we do want to move to a more sophisticated parsing setup (again, I
feel this isn't needed) I would be FAR more comfortable with defining
our own grammer and using a standard compiler-compiler (yacc, bison,
antlr, et al). This is a much MUCH superior method than using an
external lib for this sort of stuff.
Still, at this juncture I don't see pacman.conf as sufficiently
complex enough to require a full grammar specification and all that.
I mean, in all honesty, it's just the following to parse the entire
file (in python):
for line in pacmanconf_lines:
# do some regex replacement of #.* to strip comments
if line[0] == '[' and line[-1] == ']':
section = line.strip('[]')
continue
elif line.find('=') != -1:
key,value = line.split('=')
# add key, value, section entry somewhere appropriate
else:
print "error in pacman.conf line [%s]" % line
More information about the pacman-dev
mailing list