On 8/22/2022 3:17 PM, Junio C Hamano wrote: > "Ævar Arnfjörð Bjarmason via GitGitGadget" <gitgitgadget@xxxxxxxxx> > writes: > >> +/** >> + * General API for {transport,connect}.c etc. >> + */ >> +int bundle_uri_parse_line(struct bundle_list *list, const char *line) >> +{ >> + int result; >> + const char *equals; >> + struct strbuf key = STRBUF_INIT; >> + >> + if (!strlen(line)) >> + return error(_("bundle-uri: got an empty line")); >> + >> + equals = strchr(line, '='); >> + >> + if (!equals) >> + return error(_("bundle-uri: line is not of the form 'key=value'")); >> + if (line == equals || !*(equals + 1)) >> + return error(_("bundle-uri: line has empty key or value")); > > The suggestions implied by my asking fall strictly into the "it does > not have to exist here at this step and we can later extend it", but > for something whose equivalent can be stored in our configuration > file, it is curious why we _insist_ to refuse an empty string as the > value. > > I do not miss the "key alone without even '=' means 'true'" > convention, personally, so insisting to have '=' is OK, but the > inability to have an empty string as a value looks a bit disturbing. I'd be happy to switch this to allow an empty value. > This depends on how the helper gets called, but most likely the > caller has a single line of pkt-line that it GAVE us to process, so > it sounds a bit wasteful to insist that "line" to be const to us and > force us to use a separate strbuf, instead of just stuffing NUL at > where we found '=' and pass the two halves to bundle_list_update(). I can look into using a non-const buffer. Thanks, -Stolee