On 6/1/07, Roman Kyrylych <roman.kyrylych@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