INN config file parsing infrastructure

Russ Allbery rra at stanford.edu
Mon Jun 26 03:05:46 UTC 2000


Forrest J Cavalier <mibsoft at epix.net> writes:

> In order for there to be a programmatic interface to make changes, each
> configuration item has to be uniquely "addressable."  Loading into a
> structure and writing out again is not going to work well.

Definitely true if one is going to be machine-editing and hand-editing the
same file a lot and want to be sure the machine-editing doesn't undo any
hand-edited non-semantic tweaks.

> Consider:

>   - It requires that the configuration tool have an up to date
>     compile against the structure.  This like the fragile base class
>     problem of C++.  Let's avoid it if possible.

I avoid C++ as much as I possibly can and am therefore not already
familiar with this; could you elaborate a bit?

>   - It will lose string encodings and ordering.  Even if comments,
>     formatting and whitespace are preserved as Fabien requires
>     (difficult) it is significantly harder to preserve order,
>     and particular string encodings.

>            These two strings are equivalent.
>            These\x20two\x20strings\x20are\x20equivalent.

>     Trumped up example, but may be significant to some users.
>     Ordering certainly is significant.

Loading and dumping the entire thing will always write things out in a
predefined order; it just won't preserve a different order.  (So if you
load, dump, load, and dump again, the second result should be identical to
the first.)  Similarly, for string encoding, the code that writes out a
string could replace particular special characters with encoded versions;
it may not generate the same encoding that a human did, but it should
generate an *acceptable* encoding....

> So, Russ, I'd just ask that you be thinking of including something in
> any API to just read/write one particular configuration file item.  (And
> that means thinking about adressing schemes.)

> Full parse and loading into a structure is great for most uses, but does
> suffer when it comes to writing isolated changes or in the case there is
> the "fragile base class problem."  Most of what INN uses from config
> files is localized, but there are occasionally cases where some program
> just wants to know one little detail from some other config file....

I'm definitely thinking about it, but I'm still figuring out how all the
pieces fit together.

-- 
Russ Allbery (rra at stanford.edu)             <http://www.eyrie.org/~eagle/>



More information about the inn-workers mailing list