control: eld - skip trailing spaces
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Jaroslav Kysela
1 year, 6 months ago
46 | 46 | snd_ctl_elem_info_t cinfo = {0}; |
47 | 47 | snd_ctl_elem_value_t value = {0}; |
48 | 48 | unsigned char *eld; |
49 | unsigned int l; | |
49 | unsigned int l, spc; | |
50 | 50 | char *s, c; |
51 | 51 | int ret, valid; |
52 | 52 | |
81 | 81 | return 0; |
82 | 82 | } |
83 | 83 | s = alloca(l + 1); |
84 | s[l] = '\0'; | |
85 | 84 | /* sanitize */ |
86 | 85 | valid = 0; |
86 | spc = 0; | |
87 | 87 | while (l > 0) { |
88 | 88 | l--; |
89 | 89 | c = eld[20 + l]; |
90 | if (c < ' ' || c >= 0x7f) { | |
90 | if (c <= ' ' || c >= 0x7f) { | |
91 | 91 | s[l] = ' '; |
92 | 92 | } else { |
93 | 93 | valid += !!isalnum(c); |
94 | 94 | s[l] = c; |
95 | if (spc == 0) | |
96 | spc = l + 1; | |
95 | 97 | } |
96 | 98 | } |
97 | 99 | if (valid > 3) { |
100 | s[spc] = '\0'; | |
98 | 101 | snd_strlcpy((char *)info->name, s, sizeof(info->name)); |
99 | 102 | } else { |
100 | 103 | __present: |