Subject: Re: [PATCH v4 1/8] help.c: BUG() out if "help --guides" can't remove "git" prefixes

From: Junio C Hamano <[email-masked]>
Date: Mon, 18 Jul 2022 10:03:07 -0700

Ævar Arnfjörð Bjarmason  <[email-masked]> writes:

> Adjust code added in 929d9192828 (git docs: split "User-facing file
> formats" off from "Guides", 2021-06-04) to be more strict about the
> prefix trimming of the "guides" category.
>
> There are no guides in the command-list.txt that don't start with
> "git", and we're unlikely to ever add any, if we do we can remove this
> BUG() invocation, but in the meantime this makes the intent more
> clear.

The observation is good.

>  	if (skip_prefix(name, "git-", &new_name))
>  		return new_name;
> -	if (category == CAT_guide && skip_prefix(name, "git", &new_name))
> +	switch (category)
> +	{
> +	case CAT_guide:
> +		if (!skip_prefix(name, "git", &new_name))
> +			BUG("category #%d but no 'git' prefix?", category);
>  		return new_name;
> +	}
>  	return name;
> -
>  }

If we were to use "switch", can we have the opening brace on the
same line, like all other switch statements?

I suspect that we should avoid losing information, perhaps the most
straight-forward implementation would be without "switch", like so

	if (category == CAT_guide) {
		if (skip_prefix(name, "git", &new_name))
			return new_name;
		BUG("CAT_guide category but no 'git' prefix? '%s'", name);
	}
	return name;

even if we plan to add more categories that would remove the prefix
and we insist the prefix to be there?

>  static void extract_cmds(struct cmdname_help **p_cmds, uint32_t mask)