Re: [PATCH 3/4] connect: learn to parse capabilities with values
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:28
Jeff King [off-list ref] writes:
I would think the extra memory allocation would dwarf it, anyway.quoted
... and a new caller can do something like agent = server_supports("agent"); if (!agent || !agent[5]) ... no agent ... else { int span = strcspn(agent + 6, " \t\n"); printf("I found agent=<%.*s>!\n", span, agent + 6); } which doesn't look too bad.
I forgot to mention it, but the above was done also to make it "possible but not mandatory" to pay extra allocation penalty. The caller can choose to parse the string into an int, for example, without extra allocation. Only the ones that want a string value and keep a copy around do have to do xmemdupz().
Anyway, do you think this is even worth doing at this point? I'm lukewarm on the final two patches due to the existence of GIT_TRACE_PACKET, which is much more likely to be useful.
In the longer term, I think giving callers access to the parameter value given to a capability is necessary. If we had this facility in the old days, we wouldn't have done side-band-64k but spelled it as side-band=64k. For the agent=<foo>, certainly we don't need it.