diff options
author | Jaroslav Kysela <perex@perex.cz> | 2023-02-27 12:54:49 +0100 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2023-02-27 12:56:17 +0100 |
commit | 58f92d61759090f0eedfed0e77c0c740d7d5e63b (patch) | |
tree | f73ff1d546defa52830bb9b2a69c23048efcedbb | |
parent | dad2161d3cc268f1e75b3ff34905a8affc67b521 (diff) | |
download | alsa-utils-58f92d61759090f0eedfed0e77c0c740d7d5e63b.tar.gz |
alsaucm: add also card index for '-c' argument
Make semantics for this argument in sync with other ALSA utilities.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r-- | alsaucm/usecase.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/alsaucm/usecase.c b/alsaucm/usecase.c index 1dba1ca..a5c8155 100644 --- a/alsaucm/usecase.c +++ b/alsaucm/usecase.c @@ -123,6 +123,20 @@ static void dump_help(struct context *context) ); } +int is_long(const char *str) +{ + char *end; + if (!*str) + return 0; + errno = 0; + strtol(str, &end, 10); + if (errno) + return 0; + if (*end) + return 0; + return 1; +} + static int parse_line(struct context *context, char *line) { char *start, **nargv; @@ -202,6 +216,15 @@ static void do_initial_open(struct context *context) /* open library */ if (!context->no_open) { + if (is_long(context->card)) { + snprintf(name, sizeof(name), "hw:%s", context->card); + free(context->card); + context->card = strdup(name); + } + if (context->card == NULL) { + fprintf(stderr, "%s: empty card name\n", context->command); + my_exit(context, EXIT_FAILURE); + } err = snd_use_case_mgr_open(&context->uc_mgr, context->card); if (err < 0) { |