diff options
author | HW Lee <hwlee@google.com> | 2019-05-20 17:38:18 +0800 |
---|---|---|
committer | HW Lee <hwlee@google.com> | 2019-05-21 10:50:52 +0800 |
commit | f2d93a540297e75815eeb6644bf675cdae3be909 (patch) | |
tree | 2d29ccd895e25e03eab083732f2618703e8b91da | |
parent | e84b02b2bfca1b51f743ad262ca0b62504d6c6b3 (diff) | |
download | tinyalsa-android10-qpr2-release.tar.gz |
tinymix: fix setting enum str started with digitsandroid-mainline-10.0.0_r9android-mainline-10.0.0_r7android-mainline-10.0.0_r5android-mainline-10.0.0_r4android-mainline-10.0.0_r10android-10.0.0_r45android-10.0.0_r44android-10.0.0_r43android-10.0.0_r42android-10.0.0_r41android-10.0.0_r40android-10.0.0_r39android-10.0.0_r38android-10.0.0_r37android-10.0.0_r36android-10.0.0_r35android-10.0.0_r34android-10.0.0_r33android-10.0.0_r32android-10.0.0_r31android-10.0.0_r30android10-qpr3-s1-releaseandroid10-qpr3-releaseandroid10-qpr2-s4-releaseandroid10-qpr2-s3-releaseandroid10-qpr2-s2-releaseandroid10-qpr2-s1-releaseandroid10-qpr2-releaseandroid10-qpr1-mainline-releaseandroid10-mainline-media-releaseandroid10-d4-s1-releaseandroid10-d4-release
For those value strings which are started with digits, they must be set
as enum instead of index value.
Test: with mixer control values started with digits like '48KHz'
Change-Id: I1c70f5613a48d020d3248b71c1e4384f83e33d25
Signed-off-by: HW Lee <hwlee@google.com>
-rw-r--r-- | tinymix.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -125,6 +125,16 @@ int main(int argc, char **argv) return ret; } +static int isnumber(const char *str) { + char *end; + + if (str == NULL || strlen(str) == 0) + return 0; + + strtol(str, &end, 0); + return strlen(end) == 0; +} + static void tinymix_list_controls(struct mixer *mixer) { struct mixer_ctl *ctl; @@ -195,7 +205,7 @@ static int tinymix_detail_control(struct mixer *mixer, const char *control, unsigned int tlv_header_size = 0; const char *space = g_tabs_only ? "\t" : " "; - if (isdigit(control[0])) + if (isnumber(control)) ctl = mixer_get_ctl(mixer, atoi(control)); else ctl = mixer_get_ctl_by_name(mixer, control); @@ -339,7 +349,7 @@ static int tinymix_set_value(struct mixer *mixer, const char *control, unsigned int num_ctl_values; unsigned int i; - if (isdigit(control[0])) + if (isnumber(control)) ctl = mixer_get_ctl(mixer, atoi(control)); else ctl = mixer_get_ctl_by_name(mixer, control); @@ -357,7 +367,7 @@ static int tinymix_set_value(struct mixer *mixer, const char *control, return ENOENT; } - if (isdigit(values[0][0])) { + if (isnumber(values[0])) { if (num_values == 1) { /* Set all values the same */ int value = atoi(values[0]); |