On Fri, Mar 30, 2018 at 03:00:06PM +0200, Johannes Schindelin wrote: > > I guess the holy grail would be a parser which reports _all_ syntactic > > events (section names, keys, comments, whitespace, etc) as a stream > > without storing anything. And then the normal reader could just discard > > the non-key events, and the writer here could build the tree from those > > events. > > I already changed the do_config_from_file()/do_config_from() code path to > allow for handing back section headers. And I *think* that approach should > be easily extended to allow for an optional callback for these syntactic > events (and we do not need more than that, as the parsed "tree" really is > a list: there is nothing nested about ini files, so we really only have a > linear list of blocks (event type, offset range)). True. I was thinking we'd want sections with keys, whitespace, and comments under them. But even that does not really make sense. As this patch series shows, comments do not "belong" to a section, and the file really needs to be considered as a stream. So yeah, if we can parse it into a sequence of events in one forward-pass and then manipulate that sequence, I think it should be sufficient (and _way_ more readable than the current code, even before the bits you are trying to fix here). > I'll think about this a little bit, and hopefully come back with v2 in a > while that uses that approach. > > Thank you so much for that suggestion, Great. Thanks for working on this. -Peff