[PATCH] selftests: alsa: Start validating control names
Takashi Iwai
tiwai at suse.de
Thu Apr 21 09:50:33 CEST 2022
On Wed, 20 Apr 2022 22:33:20 +0200,
Mark Brown wrote:
>
> +bool strend(const char *haystack, const char *needle)
Missing static?
> +{
> + size_t haystack_len = strlen(haystack);
> + size_t needle_len = strlen(needle);
> +
> + if (needle_len > haystack_len)
> + return false;
> + return strcmp(haystack + haystack_len - needle_len, needle) == 0;
> +}
> +
> +static void test_ctl_name(struct ctl_data *ctl)
> +{
> + bool name_ok = true;
> + bool check;
> +
> + /* Only boolean controls should end in Switch */
> + if (strend(ctl->name, "Switch")) {
This should be with " Switch" so that it won't check a concatenated
word.
> + if (snd_ctl_elem_info_get_type(ctl->info) != SND_CTL_ELEM_TYPE_BOOLEAN) {
> + ksft_print_msg("%d.%d %s ends in Switch but is not boolean\n",
> + ctl->card->card, ctl->elem, ctl->name);
> + name_ok = false;
> + }
> + }
> +
> + /* Writeable boolean controls should end in Switch */
> + if (snd_ctl_elem_info_get_type(ctl->info) == SND_CTL_ELEM_TYPE_BOOLEAN &&
> + snd_ctl_elem_info_is_writable(ctl->info)) {
> + if (!strend(ctl->name, "Switch")) {
> + ksft_print_msg("%d.%d %s is a writeable boolean but not a Switch\n",
> + ctl->card->card, ctl->elem, ctl->name);
> + name_ok = false;
I'm afraid that this would hit too many when applying to the existing
code; although the control name should be indeed with Switch suffix,
we tend to allow without suffix for casual non-standard elements.
But having the check would help for avoiding such a mistake for the
future code, so it's fine to add this strict check, IMO.
thanks,
Takashi
More information about the Alsa-devel
mailing list