[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