summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2023-02-27 12:54:49 +0100
committerJaroslav Kysela <perex@perex.cz>2023-02-27 12:56:17 +0100
commit58f92d61759090f0eedfed0e77c0c740d7d5e63b (patch)
treef73ff1d546defa52830bb9b2a69c23048efcedbb
parentdad2161d3cc268f1e75b3ff34905a8affc67b521 (diff)
downloadalsa-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.c23
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) {