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

Re: [PATCH v3 2/8] test-ref-store: parse symbolic flag constants

From
Jeff King <peff@peff.net>
Date
Dec 3, 2021, 06:22 UTC
Message-ID
<Yam3iHj1a48X+psK@coredump.intra.peff.net>
In-Reply-To
<3cdebd2dbcad2f6d428d88846569d6563249dad8.1638470403.git.gitgitgadget@gmail.com>
On Thu, Dec 02, 2021 at 06:39:56PM +0000, Han-Wen Nienhuys via GitGitGadget wrote:
> From: Han-Wen Nienhuys <hanwen@google.com>
> 
> This lets tests use REF_XXXX constants instead of hardcoded integers. The flag
> names should be separated by a ','.
So much nicer. Thank you for cleaning this up.
One small bug:
Show 22 quoted lines
> +static unsigned int parse_flags(const char *str, struct flag_definition *defs)
> +{
> +	struct string_list masks = STRING_LIST_INIT_DUP;
> +	int i = 0;
> +	unsigned int result = 0;
> +
> +	if (!strcmp(str, "0"))
> +		return 0;
> +
> +	string_list_split(&masks, str, ',', 64);
> +	for (; i < masks.nr; i++) {
> +		const char *name = masks.items[i].string;
> +		struct flag_definition *def = defs;
> +		int found = 0;
> +		while (def->name) {
> +			if (!strcmp(def->name, name)) {
> +				result |= def->mask;
> +				found = 1;
> +				break;
> +			}
> +			def++;
> +		}
We assume defs ends with a NULL entry here...
> +static struct flag_definition empty_flags[] = {
> +	{ NULL, 0 },
> +};
...and this one does so...
> +static struct flag_definition pack_flags[] = {
> +	FLAG_DEF(PACK_REFS_PRUNE),
> +	FLAG_DEF(PACK_REFS_ALL),
> +};

...but this one does not. So passing an unknown flag will result in us walking off the end of the list.

Show 5 quoted lines
> +static struct flag_definition transaction_flags[] = {
> +	FLAG_DEF(REF_NO_DEREF),
> +	FLAG_DEF(REF_FORCE_CREATE_REFLOG),
> +	{ NULL, 0 },
> +};

This one is good. We might want to drop the trailing comma on the NULL entries, to make it more clear that they have to come last.

The other option would be using ARRAY_SIZE() instead of a NULL terminator, but of course that has to happen in the caller. Which means either extra work there, or yet another macro. :)

-Peff
Previous: Han-Wen Nienhuys via GitGitGadgetNext: Han-Wen Nienhuys via GitGitGadget
Message 26 of 42 in “Allow writing invalid OIDs into refs for testing purposes”
  1. 0/2 Allow writing invalid OIDs into refs for testing purposesHan-Wen Nienhuys via GitGitGadget, Nov 25, 2021
  2. 1/2 refs: update comment.Han-Wen Nienhuys via GitGitGadget, Nov 25, 2021
  3. 2/2 refs: allow skipping OID verificationHan-Wen Nienhuys via GitGitGadget, Nov 25, 2021
  4. Junio C HamanoNov 26, 2021
  5. 0/6 Allow writing invalid OIDs into refs for testing purposesHan-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  6. 4/6 refs: add REF_SKIP_REFNAME_VERIFICATION flagHan-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  7. Junio C HamanoNov 29, 2021
  8. Junio C HamanoNov 29, 2021
  9. Han-Wen NienhuysNov 30, 2021
  10. Junio C HamanoDec 1, 2021
  11. Jeff KingDec 1, 2021
  12. Han-Wen NienhuysDec 2, 2021
  13. Junio C HamanoDec 2, 2021
  14. 6/6 t1430: create valid symrefs using test-helperHan-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  15. 5/6 t1430: remove refs using test-toolHan-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  16. 1/6 test-ref-store: plug memory leak in cmd_delete_refsHan-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  17. Junio C HamanoNov 29, 2021
  18. 3/6 refs: allow skipping OID verificationHan-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  19. Junio C HamanoNov 29, 2021
  20. 2/6 refs: update comment.Han-Wen Nienhuys via GitGitGadget, Nov 29, 2021
  21. Junio C HamanoNov 29, 2021
  22. Junio C HamanoNov 29, 2021
  23. 0/8 Allow writing invalid OIDs into refs for testing purposesHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  24. 1/8 test-ref-store: remove force-create argument for create-reflogHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  25. 2/8 test-ref-store: parse symbolic flag constantsHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  26. Jeff KingDec 3, 2021
  27. 3/8 test-ref-store: plug memory leak in cmd_delete_refsHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  28. 4/8 refs: update comment.Han-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  29. 5/8 refs: introduce REF_SKIP_OID_VERIFICATION flagHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  30. 6/8 refs: introduce REF_SKIP_REFNAME_VERIFICATION flagHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  31. 7/8 t1430: remove refs using test-toolHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  32. 8/8 t1430: create valid symrefs using test-helperHan-Wen Nienhuys via GitGitGadget, Dec 2, 2021
  33. 0/8 Allow writing invalid OIDs into refs for testing purposesHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  34. 1/8 test-ref-store: remove force-create argument for create-reflogHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  35. 2/8 test-ref-store: parse symbolic flag constantsHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  36. 3/8 test-ref-store: plug memory leak in cmd_delete_refsHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  37. 4/8 refs: update comment.Han-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  38. 5/8 refs: introduce REF_SKIP_OID_VERIFICATION flagHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  39. 6/8 refs: introduce REF_SKIP_REFNAME_VERIFICATION flagHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  40. 7/8 t1430: remove refs using test-toolHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  41. 8/8 t1430: create valid symrefs using test-helperHan-Wen Nienhuys via GitGitGadget, Dec 7, 2021
  42. Junio C HamanoDec 7, 2021

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.