git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v2 1/4] config: factor out config file stack management

From
Heiko Voigt <hvoigt@hvoigt.net>
Date
Mar 12, 2013, 15:44 UTC
Message-ID
<20130312154434.GB3021@sandbox-ub.fritz.box>
In-Reply-To
<20130312105200.GC11340@sigill.intra.peff.net>
On Tue, Mar 12, 2013 at 06:52:00AM -0400, Jeff King wrote:
Show 36 quoted lines
> On Sun, Mar 10, 2013 at 05:57:53PM +0100, Heiko Voigt wrote:
> 
> > Because a config callback may start parsing a new file, the
> > global context regarding the current config file is stored
> > as a stack. Currently we only need to manage that stack from
> > git_config_from_file. Let's factor it out to allow new
> > sources of config data.
> >
> > [...]
> >
> > +static int do_config_from(struct config_file *top, config_fn_t fn, void *data)
> > +{
> > +	int ret;
> > +
> > +	/* push config-file parsing state stack */
> > +	top->prev = cf;
> > +	top->linenr = 1;
> > +	top->eof = 0;
> > +	strbuf_init(&top->value, 1024);
> > +	strbuf_init(&top->var, 1024);
> > +	cf = top;
> > +
> > +	ret = git_parse_file(fn, data);
> > +
> > +	/* pop config-file parsing state stack */
> > +	strbuf_release(&top->value);
> > +	strbuf_release(&top->var);
> > +	cf = top->prev;
> > +
> > +	return ret;
> > +}
> 
> Can we throw in a comment at the top here with the expected usage? In
> particular, do_config_from is expecting the caller to have filled in
> certain fields (at this point, top->f and top->name), but there is
> nothing to make that clear.
Of course. Will do that in the next iteration. How about I squash this in:
diff --git a/config.c b/config.c
index b8c8640..b7632c9 100644
--- a/config.c
+++ b/config.c
@@ -948,6 +954,9 @@ int git_default_config(const char *var, const char *value, v
        return 0;
 }
 
+/* The fields data, name and the source specific callbacks of top need
+ * to be initialized before calling this function.
+ */
 static int do_config_from_source(struct config_source *top, config_fn_t fn, voi
 {
        int ret;


I would add that to the third patch:

	config: make parsing stack struct independent from actual data source

because that contains the final modification to config_file/config_source.

Cheers Heiko
Previous: Jeff KingNext: Jeff King
Message 4 of 24 in “allow more sources for config values”
  1. 0/4 allow more sources for config valuesHeiko Voigt, Mar 10, 2013
  2. 1/4 config: factor out config file stack managementHeiko Voigt, Mar 10, 2013
  3. Jeff KingMar 12, 2013
  4. Heiko VoigtMar 12, 2013
  5. Jeff KingMar 12, 2013
  6. Heiko VoigtMar 14, 2013
  7. 2/4 config: drop file pointer validity check in get_next_char()Heiko Voigt, Mar 10, 2013
  8. Jeff KingMar 12, 2013
  9. Heiko VoigtMar 12, 2013
  10. Heiko VoigtMar 12, 2013
  11. Jeff KingMar 12, 2013
  12. Jeff KingMar 12, 2013
  13. 3/4 config: make parsing stack struct independent from actual data sourceHeiko Voigt, Mar 10, 2013
  14. Jeff KingMar 12, 2013
  15. Heiko VoigtMar 12, 2013
  16. Jeff KingMar 12, 2013
  17. 4/4 teach config parsing to read from strbufHeiko Voigt, Mar 10, 2013
  18. Jeff KingMar 12, 2013
  19. Heiko VoigtMar 12, 2013
  20. Jeff KingMar 12, 2013
  21. Heiko VoigtMar 14, 2013
  22. Jeff KingMar 14, 2013
  23. Jeff KingMar 14, 2013
  24. Heiko VoigtMar 18, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.