C code for parsing rc.conf?

Tim Kientzle tim at kientzle.com
Wed Apr 14 17:15:04 PDT 2004


Craig Rodrigues wrote:
> Is there a C library that comes with FreeBSD which
> can be used to parse, append to, and validate
> rc.conf?
> 
> I'd like to customize some of the settings in /etc/rc.conf
> with my own GUI-based program.  It's not too hard
> to write something on my own, but I was wondering
> if a reusable library existed in FreeBSD 4.x or 5.x for doing this.

There was a detailed discussion of this topic about a year
ago.  Here is how to obtain the current settings from rc.conf
from within a C program:

  * Clear the current environment

  * popen() a shell command that sources rc.conf, then
    runs printenv

  * read and parse the output of printenv

The basic idea is to just let the shell do
the work for you.

You can make this process a bit more predictable
by using a modified printenv that dumps variable
names and values in hex or something similar.
(Or, submit a patch to the existing printenv.)

To update rc.conf, just append new statements
to the end of the file.  Don't try to edit it
in place.  Later variable settings will override
earlier ones, so this will have the expected
result without possibly trashing someone's custom
shell scripting.

I may have overlooked a few details, but this
should be enough to get you started.

Tim Kientzle



More information about the freebsd-hackers mailing list