From bc789582842df1f0f4503d41aa2e9ba1b8e521fd Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Jan 04 2022 04:19:10 +0000 Subject: import alsa-utils-1.2.6-1.el8 --- diff --git a/.alsa-utils.metadata b/.alsa-utils.metadata index fb16a43..8f9d95a 100644 --- a/.alsa-utils.metadata +++ b/.alsa-utils.metadata @@ -1 +1 @@ -51ed4a6a5d151f4c3b580464460c3788ee1e90fb SOURCES/alsa-utils-1.2.5.tar.bz2 +b29ac97723c1a2dfd3eaabca02b80c6e869e235c SOURCES/alsa-utils-1.2.6.tar.bz2 diff --git a/.gitignore b/.gitignore index cba7815..3d8c4f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/alsa-utils-1.2.5.tar.bz2 +SOURCES/alsa-utils-1.2.6.tar.bz2 diff --git a/SOURCES/alsa-git.patch b/SOURCES/alsa-git.patch index c43a81d..e69de29 100644 --- a/SOURCES/alsa-git.patch +++ b/SOURCES/alsa-git.patch @@ -1,936 +0,0 @@ -From 78212445de4c8e07873cbc7dff2abcacd031f151 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Tue, 1 Jun 2021 17:47:42 +0200 -Subject: [PATCH 01/16] alsactl: fix the nested iteration - -There may be nested iterations for hw: card names. -Handle this card name in snd_card_iterator_sinit(). - -BugLink: https://github.com/alsa-project/alsa-lib/issues/142 -Fixes: eefc2c6 ("alsactl: use card iterator functions for all card loops") -Signed-off-by: Jaroslav Kysela ---- - alsactl/utils.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/alsactl/utils.c b/alsactl/utils.c -index c79fd95..881b505 100644 ---- a/alsactl/utils.c -+++ b/alsactl/utils.c -@@ -247,6 +247,8 @@ int snd_card_iterator_sinit(struct snd_card_iterator *iter, const char *cardname - int cardno = -1; - - if (cardname) { -+ if (strncmp(cardname, "hw:", 3) == 0) -+ cardname += 3; - cardno = snd_card_get_index(cardname); - if (cardno < 0) { - error("Cannot find soundcard '%s'...", cardname); --- -2.30.2 - - -From 3d7a6facd9e1f962eef6c4ba3aa4cdc22477a6ac Mon Sep 17 00:00:00 2001 -From: Chao Song -Date: Mon, 31 May 2021 10:29:57 +0800 -Subject: [PATCH 02/16] topology: fix potential null pointer from strchr - -This patch adds check to the return pointer from strchr, -because it may be null and cause segment fault, if component -is not properly constructed. - -Fixes: https://github.com/alsa-project/alsa-utils/pull/91 -Signed-off-by: Chao Song -Signed-off-by: Jaroslav Kysela ---- - topology/pre-process-dapm.c | 5 +++++ - topology/pre-process-object.c | 5 +++++ - 2 files changed, 10 insertions(+) - -diff --git a/topology/pre-process-dapm.c b/topology/pre-process-dapm.c -index 450ca71..dbaf2f1 100644 ---- a/topology/pre-process-dapm.c -+++ b/topology/pre-process-dapm.c -@@ -146,6 +146,11 @@ static int tplg_pp_get_widget_name(struct tplg_pre_processor *tplg_pp, - - /* get class name */ - args = strchr(string, '.'); -+ if (!args) { -+ SNDERR("Error getting class name for %s\n", string); -+ return -EINVAL; -+ } -+ - class_name = calloc(1, strlen(string) - strlen(args) + 1); - if (!class_name) - return -ENOMEM; -diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c -index 09aa375..ac8caec 100644 ---- a/topology/pre-process-object.c -+++ b/topology/pre-process-object.c -@@ -492,6 +492,11 @@ static int tplg_pp_add_object_tuple_section(struct tplg_pre_processor *tplg_pp, - } - - type = strchr(token_ref, '.'); -+ if(!type) { -+ SNDERR("Error getting type for %s\n", token_ref); -+ return -EINVAL; -+ } -+ - token = calloc(1, strlen(token_ref) - strlen(type) + 1); - if (!token) - return -ENOMEM; --- -2.30.2 - - -From d6d566a9eebb63dd9d1351b07d385d39cdc33beb Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 09:53:56 +0200 -Subject: [PATCH 03/16] alsactl: return error value in dump_config_tree() - -Signed-off-by: Jaroslav Kysela ---- - alsactl/alsactl.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/alsactl/alsactl.c b/alsactl/alsactl.c -index a011284..05738fb 100644 ---- a/alsactl/alsactl.c -+++ b/alsactl/alsactl.c -@@ -170,7 +170,7 @@ static int dump_config_tree(snd_config_t *top) - return err; - err = snd_config_save(top, out); - snd_output_close(out); -- return 0; -+ return err; - } - - static int dump_state(const char *file) --- -2.30.2 - - -From 511dd7a597735048f3883ef7883adf853ac2de4a Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 09:56:20 +0200 -Subject: [PATCH 04/16] alsactl: init() - return error value from - snd_card_iterator_sinit() call - -Signed-off-by: Jaroslav Kysela ---- - alsactl/init_parse.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c -index 9d0f473..e439de7 100644 ---- a/alsactl/init_parse.c -+++ b/alsactl/init_parse.c -@@ -1751,6 +1751,8 @@ int init(const char *cfgdir, const char *filename, int flags, const char *cardna - - sysfs_init(); - err = snd_card_iterator_sinit(&iter, cardname); -+ if (err < 0) -+ goto out; - while (snd_card_iterator_next(&iter)) { - err = snd_card_clean_cfgdir(cfgdir, iter.card); - if (err < 0) { --- -2.30.2 - - -From 2bc595e7bd9a9b8f8605104cfdb8f40a07c2655b Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 09:58:46 +0200 -Subject: [PATCH 05/16] alsactl: check for error values from - snd_config_get...() - -Signed-off-by: Jaroslav Kysela ---- - alsactl/state.c | 41 ++++++++++++++++++++++++++++------------- - 1 file changed, 28 insertions(+), 13 deletions(-) - -diff --git a/alsactl/state.c b/alsactl/state.c -index 44fda3f..b3a3f4d 100644 ---- a/alsactl/state.c -+++ b/alsactl/state.c -@@ -655,13 +655,16 @@ static long config_iface(snd_config_t *n) - const char *str; - switch (snd_config_get_type(n)) { - case SND_CONFIG_TYPE_INTEGER: -- snd_config_get_integer(n, &i); -+ if (snd_config_get_integer(n, &i) < 0) -+ return -1; - return i; - case SND_CONFIG_TYPE_INTEGER64: -- snd_config_get_integer64(n, &li); -+ if (snd_config_get_integer64(n, &li) < 0) -+ return -1; - return li; - case SND_CONFIG_TYPE_STRING: -- snd_config_get_string(n, &str); -+ if (snd_config_get_string(n, &str) < 0) -+ return -1; - break; - default: - return -1; -@@ -681,17 +684,20 @@ static int config_bool(snd_config_t *n, int doit) - - switch (snd_config_get_type(n)) { - case SND_CONFIG_TYPE_INTEGER: -- snd_config_get_integer(n, &val); -+ if (snd_config_get_integer(n, &val) < 0) -+ return -1; - if (val < 0 || val > 1) - return -1; - return val; - case SND_CONFIG_TYPE_INTEGER64: -- snd_config_get_integer64(n, &lval); -+ if (snd_config_get_integer64(n, &lval) < 0) -+ return -1; - if (lval < 0 || lval > 1) - return -1; - return (int) lval; - case SND_CONFIG_TYPE_STRING: -- snd_config_get_string(n, &str); -+ if (snd_config_get_string(n, &str) < 0) -+ return -1; - break; - case SND_CONFIG_TYPE_COMPOUND: - if (!force_restore || !doit) -@@ -718,13 +724,16 @@ static int config_enumerated(snd_config_t *n, snd_ctl_t *handle, - - switch (snd_config_get_type(n)) { - case SND_CONFIG_TYPE_INTEGER: -- snd_config_get_integer(n, &val); -+ if (snd_config_get_integer(n, &val) < 0) -+ return -1; - return val; - case SND_CONFIG_TYPE_INTEGER64: -- snd_config_get_integer64(n, &lval); -+ if (snd_config_get_integer64(n, &lval) < 0) -+ return -1; - return (int) lval; - case SND_CONFIG_TYPE_STRING: -- snd_config_get_string(n, &str); -+ if (snd_config_get_string(n, &str) < 0) -+ return -1; - break; - case SND_CONFIG_TYPE_COMPOUND: - if (!force_restore || !doit) -@@ -1247,6 +1256,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control, - } - if (strcmp(fld, "iface") == 0) { - iface = (snd_ctl_elem_iface_t)config_iface(n); -+ if (iface < 0) -+ return -EINVAL; - continue; - } - if (strcmp(fld, "device") == 0) { -@@ -1254,7 +1265,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control, - cerror(doit, "control.%d.%s is invalid", numid, fld); - return -EINVAL; - } -- snd_config_get_integer(n, &device); -+ if (snd_config_get_integer(n, &device) < 0) -+ return -EINVAL; - continue; - } - if (strcmp(fld, "subdevice") == 0) { -@@ -1262,7 +1274,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control, - cerror(doit, "control.%d.%s is invalid", numid, fld); - return -EINVAL; - } -- snd_config_get_integer(n, &subdevice); -+ if (snd_config_get_integer(n, &subdevice) < 0) -+ return -EINVAL; - continue; - } - if (strcmp(fld, "name") == 0) { -@@ -1270,7 +1283,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control, - cerror(doit, "control.%d.%s is invalid", numid, fld); - return -EINVAL; - } -- snd_config_get_string(n, &name); -+ if (snd_config_get_string(n, &name) < 0) -+ return -EINVAL; - continue; - } - if (strcmp(fld, "index") == 0) { -@@ -1278,7 +1292,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control, - cerror(doit, "control.%d.%s is invalid", numid, fld); - return -EINVAL; - } -- snd_config_get_integer(n, &index); -+ if (snd_config_get_integer(n, &index) < 0) -+ return -EINVAL; - continue; - } - if (strcmp(fld, "value") == 0) { --- -2.30.2 - - -From 646d6ff094a82153db49af176cba3aacbde46cf6 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 10:04:50 +0200 -Subject: [PATCH 06/16] =?UTF-8?q?alsactl:=20state=20-=20fix=20=E2=80=98ite?= - =?UTF-8?q?m=E2=80=99=20may=20be=20used=20uninitialized=20gcc=20warning?= -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Signed-off-by: Jaroslav Kysela ---- - alsactl/state.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/alsactl/state.c b/alsactl/state.c -index b3a3f4d..9c75688 100644 ---- a/alsactl/state.c -+++ b/alsactl/state.c -@@ -229,7 +229,7 @@ static int get_control(snd_ctl_t *handle, snd_ctl_elem_id_t *id, snd_config_t *t - { - snd_ctl_elem_value_t *ctl; - snd_ctl_elem_info_t *info; -- snd_config_t *control, *comment, *item, *value; -+ snd_config_t *control, *comment, *item = NULL, *value; - const char *s; - char buf[256]; - unsigned int idx; --- -2.30.2 - - -From cd2f779b8d6439479b9802e9fd2c8af86f8702fb Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 10:08:18 +0200 -Subject: [PATCH 07/16] alsactl: fix lock_fd unlock in load_configuration() - - error path - -Signed-off-by: Jaroslav Kysela ---- - alsactl/utils.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/alsactl/utils.c b/alsactl/utils.c -index 881b505..fd4a108 100644 ---- a/alsactl/utils.c -+++ b/alsactl/utils.c -@@ -220,15 +220,17 @@ int load_configuration(const char *file, snd_config_t **top, int *open_failed) - } - err = snd_config_load(config, in); - snd_input_close(in); -- if (lock_fd >= 0) -- state_unlock(lock_fd, file); - if (err < 0) { - error("snd_config_load error: %s", snd_strerror(err)); - out: -+ if (lock_fd >= 0) -+ state_unlock(lock_fd, file); - snd_config_delete(config); - snd_config_update_free_global(); - return err; - } else { -+ if (lock_fd >= 0) -+ state_unlock(lock_fd, file); - *top = config; - return 0; - } --- -2.30.2 - - -From 74ad91245f8257e242cf5b5b6b809f94321f197a Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 10:12:06 +0200 -Subject: [PATCH 08/16] axfer: fix wrong calloc() item size in - allocate_containers() - -Signed-off-by: Jaroslav Kysela ---- - axfer/subcmd-transfer.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/axfer/subcmd-transfer.c b/axfer/subcmd-transfer.c -index 27d2cc5..839215a 100644 ---- a/axfer/subcmd-transfer.c -+++ b/axfer/subcmd-transfer.c -@@ -155,7 +155,7 @@ static int allocate_containers(struct context *ctx, unsigned int count) - return -ENOMEM; - ctx->cntr_count = count; - -- ctx->cntr_fds = calloc(count, sizeof(*ctx->cntrs)); -+ ctx->cntr_fds = calloc(count, sizeof(*ctx->cntr_fds)); - if (ctx->cntr_fds == NULL) - return -ENOMEM; - --- -2.30.2 - - -From c58f981e1530557835461b17b92eac6c475e5f68 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Fri, 4 Jun 2021 10:19:22 +0200 -Subject: [PATCH 09/16] topology: fix few coverity detected defects - -Signed-off-by: Jaroslav Kysela ---- - topology/pre-process-dapm.c | 3 ++- - topology/pre-process-object.c | 15 ++++++++++----- - topology/pre-processor.c | 2 +- - 3 files changed, 13 insertions(+), 7 deletions(-) - -diff --git a/topology/pre-process-dapm.c b/topology/pre-process-dapm.c -index dbaf2f1..dc510e1 100644 ---- a/topology/pre-process-dapm.c -+++ b/topology/pre-process-dapm.c -@@ -203,7 +203,8 @@ static int tplg_pp_get_widget_name(struct tplg_pre_processor *tplg_pp, - - if (!args) { - SNDERR("insufficient arugments for widget %s\n", string); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err; - } - - remaining = strchr(args + 1, '.'); -diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c -index ac8caec..7565091 100644 ---- a/topology/pre-process-object.c -+++ b/topology/pre-process-object.c -@@ -463,7 +463,8 @@ static snd_config_t *tplg_object_lookup_in_config(struct tplg_pre_processor *tpl - if (!config_id) - return NULL; - -- snd_config_search(class, config_id, &obj_cfg); -+ if (snd_config_search(class, config_id, &obj_cfg) < 0) -+ return NULL; - free(config_id); - return obj_cfg; - } -@@ -704,11 +705,12 @@ static int tplg_add_object_data(struct tplg_pre_processor *tplg_pp, snd_config_t - - ret = tplg_pp_add_object_tuple_section(tplg_pp, class_cfg, n, data_cfg_name, - token); -- free(data_cfg_name); - if (ret < 0) { - SNDERR("Failed to add data section %s\n", data_cfg_name); -+ free(data_cfg_name); - return ret; - } -+ free(data_cfg_name); - } - - return 0; -@@ -1215,8 +1217,10 @@ static int tplg_construct_object_name(struct tplg_pre_processor *tplg_pp, snd_co - return 0; - - /* set class name as the name prefix for the object */ -- snd_config_get_id(obj, &obj_id); -- snd_config_get_id(class_cfg, &class_id); -+ if (snd_config_get_id(obj, &obj_id) < 0) -+ return -EINVAL; -+ if (snd_config_get_id(class_cfg, &class_id) < 0) -+ return -EINVAL; - new_name = strdup(class_id); - if (!new_name) - return -ENOMEM; -@@ -1280,7 +1284,8 @@ static int tplg_construct_object_name(struct tplg_pre_processor *tplg_pp, snd_co - default: - SNDERR("Argument '%s' in object '%s.%s' is not an integer or a string\n", - s, class_id, obj_id); -- return -EINVAL; -+ ret = -EINVAL; -+ goto err; - } - - /* alloc and concat arg value to the name */ -diff --git a/topology/pre-processor.c b/topology/pre-processor.c -index 0458c3c..442dcc4 100644 ---- a/topology/pre-processor.c -+++ b/topology/pre-processor.c -@@ -183,7 +183,7 @@ int init_pre_precessor(struct tplg_pre_processor **tplg_pp, snd_output_type_t ty - - _tplg_pp = calloc(1, sizeof(struct tplg_pre_processor)); - if (!_tplg_pp) -- ret = -ENOMEM; -+ return -ENOMEM; - - *tplg_pp = _tplg_pp; - --- -2.30.2 - - -From f138117a457944ca73776bd752693d64ec207e55 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Mon, 7 Jun 2021 17:21:56 +0200 -Subject: [PATCH 10/16] alsactl: load_state() - initialize config variable for - the open_failed case - -Fixes: https://github.com/alsa-project/alsa-utils/issues/93 -Signed-off-by: Jaroslav Kysela ---- - alsactl/state.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/alsactl/state.c b/alsactl/state.c -index 9c75688..439e1f8 100644 ---- a/alsactl/state.c -+++ b/alsactl/state.c -@@ -1642,6 +1642,7 @@ int load_state(const char *cfgdir, const char *file, - snd_config_t *config; - const char *cardname1; - -+ config = NULL; - err = load_configuration(file, &config, &open_failed); - if (err < 0 && !open_failed) - return err; --- -2.30.2 - - -From 6018c2014ac24877b2aa58c2c57f2fd901e6c7b1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?S=C3=B6ren=20Tempel?= -Date: Sun, 6 Jun 2021 03:14:19 +0200 -Subject: [PATCH 11/16] alsactl: load_state: Only delete config if one was - loaded -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -If load_configuration fails with open_failed == true, load_state will -jump to the out label without config being initialized and pass this -uninitialized config value to snd_config_delete. This commit fixes this -issue by initializing config with NULL and checking if it is non-null -before invoking snd_config_delete. - -Fixes: https://github.com/alsa-project/alsa-utils/pull/94 -Fixes: f138117 ("alsactl: load_state() - initialize config variable for the open_failed case") -BugLink: https://github.com/alsa-project/alsa-utils/issues/93 -Signed-off-by: Sören Tempel -Signed-off-by: Jaroslav Kysela ---- - alsactl/state.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/alsactl/state.c b/alsactl/state.c -index 439e1f8..adbd13f 100644 ---- a/alsactl/state.c -+++ b/alsactl/state.c -@@ -1692,7 +1692,8 @@ int load_state(const char *cfgdir, const char *file, - } - err = finalerr ? finalerr : snd_card_iterator_error(&iter); - out: -- snd_config_delete(config); -+ if (config) -+ snd_config_delete(config); - snd_config_update_free_global(); - return err; - } --- -2.30.2 - - -From 6a0d13ddb2b2afb450f3404d3cbaa56253bdcab2 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Andreas=20M=C3=BCller?= -Date: Thu, 3 Jun 2021 16:07:10 +0200 -Subject: [PATCH 12/16] utils.c: Include limits.h explicitly to fix build on - musl -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Fixes: -| ../../alsa-utils-1.2.5/alsactl/utils.c: In function 'snd_card_clean_cfgdir': -| ../../alsa-utils-1.2.5/alsactl/utils.c:309:19: error: 'PATH_MAX' undeclared (first use in this function) -| 309 | char path[PATH_MAX]; -| | ^~~~~~~~ -| ../../alsa-utils-1.2.5/alsactl/utils.c:309:19: note: each undeclared identifier is reported only once for each function it appears in - -Fixes: https://github.com/alsa-project/alsa-utils/pull/92 -Signed-off-by: Andreas Müller -Signed-off-by: Jaroslav Kysela ---- - alsactl/utils.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/alsactl/utils.c b/alsactl/utils.c -index fd4a108..a507972 100644 ---- a/alsactl/utils.c -+++ b/alsactl/utils.c -@@ -30,6 +30,7 @@ - #include - #include - #include -+#include - #include "alsactl.h" - - int file_map(const char *filename, char **buf, size_t *bufsize) --- -2.30.2 - - -From 0e21f4d8643db547dcca1375a4265fce1edc4d51 Mon Sep 17 00:00:00 2001 -From: Andrea Piras -Date: Fri, 29 Nov 2019 03:13:21 +0100 -Subject: [PATCH 13/16] added an option to aseqnet to optionally set the midi - process name - -This option allows to run multiple instances of aseqnet without having -to double check the assigned port number, since each one can get spawned -with a unique name. - -Fixes: https://github.com/alsa-project/alsa-utils/pull/95 -Signed-off-by: Andrea Piras -Signed-off-by: Jaroslav Kysela ---- - seq/aseqnet/README.aseqnet | 2 ++ - seq/aseqnet/aseqnet.1 | 3 +++ - seq/aseqnet/aseqnet.c | 26 ++++++++++++++++++-------- - 3 files changed, 23 insertions(+), 8 deletions(-) - -diff --git a/seq/aseqnet/README.aseqnet b/seq/aseqnet/README.aseqnet -index bd0b68e..6a627f4 100644 ---- a/seq/aseqnet/README.aseqnet -+++ b/seq/aseqnet/README.aseqnet -@@ -50,4 +50,6 @@ The available options are: - -s addr : explicit read-subscription to the given address - (client:addr). - -d addr : explicit write-subscription to the given address. -+ -n name : specify the midi name of the process. -+ Default value is either 'Net Client' or 'Net Server'. - -v : verbose mode. -diff --git a/seq/aseqnet/aseqnet.1 b/seq/aseqnet/aseqnet.1 -index 2cb6eb7..6ed3911 100644 ---- a/seq/aseqnet/aseqnet.1 -+++ b/seq/aseqnet/aseqnet.1 -@@ -70,6 +70,9 @@ Subscribe to the given address for read automatically. - .B \-d addr - Subscribe to the given address for write automatically. - .TP -+.B \-n name -+Specify the midi name of the process. -+.TP - .B \-v - Verbose mode. - -diff --git a/seq/aseqnet/aseqnet.c b/seq/aseqnet/aseqnet.c -index ebdea0b..e756e82 100644 ---- a/seq/aseqnet/aseqnet.c -+++ b/seq/aseqnet/aseqnet.c -@@ -37,7 +37,7 @@ static void usage(void); - static void init_buf(void); - static void init_pollfds(void); - static void close_files(void); --static void init_seq(char *source, char *dest); -+static void init_seq(char *source, char *dest, char *name); - static int get_port(char *service); - static void sigterm_exit(int sig); - static void init_server(int port); -@@ -87,6 +87,7 @@ static const struct option long_option[] = { - {"port", 1, NULL, 'p'}, - {"source", 1, NULL, 's'}, - {"dest", 1, NULL, 'd'}, -+ {"name", 1, NULL, 'n'}, - {"help", 0, NULL, 'h'}, - {"verbose", 0, NULL, 'v'}, - {"info", 0, NULL, 'i'}, -@@ -98,13 +99,14 @@ int main(int argc, char **argv) - int c; - int port = DEFAULT_PORT; - char *source = NULL, *dest = NULL; -+ char *name = NULL; - - #ifdef ENABLE_NLS - setlocale(LC_ALL, ""); - textdomain(PACKAGE); - #endif - -- while ((c = getopt_long(argc, argv, "p:s:d:vi", long_option, NULL)) != -1) { -+ while ((c = getopt_long(argc, argv, "p:s:d:n:,vi", long_option, NULL)) != -1) { - switch (c) { - case 'p': - if (isdigit(*optarg)) -@@ -118,6 +120,9 @@ int main(int argc, char **argv) - case 'd': - dest = optarg; - break; -+ case 'n': -+ name = optarg; -+ break; - case 'v': - verbose++; - break; -@@ -134,7 +139,7 @@ int main(int argc, char **argv) - signal(SIGTERM, sigterm_exit); - - init_buf(); -- init_seq(source, dest); -+ init_seq(source, dest, name); - - if (optind >= argc) { - server_mode = 1; -@@ -170,6 +175,7 @@ static void usage(void) - printf(_(" -p,--port # : specify TCP port (digit or service name)\n")); - printf(_(" -s,--source addr : read from given addr (client:port)\n")); - printf(_(" -d,--dest addr : write to given addr (client:port)\n")); -+ printf(_(" -n,--name value : use a specific midi process name\n")); - printf(_(" -v, --verbose : print verbose messages\n")); - printf(_(" -i, --info : print certain received events\n")); - } -@@ -223,7 +229,7 @@ static void close_files(void) - /* - * initialize sequencer - */ --static void init_seq(char *source, char *dest) -+static void init_seq(char *source, char *dest, char* name) - { - snd_seq_addr_t addr; - int err, counti, counto; -@@ -252,10 +258,14 @@ static void init_seq(char *source, char *dest) - snd_seq_nonblock(handle, 1); - - /* set client info */ -- if (server_mode) -- snd_seq_set_client_name(handle, "Net Server"); -- else -- snd_seq_set_client_name(handle, "Net Client"); -+ if (name) -+ snd_seq_set_client_name(handle, name); -+ else { -+ if (server_mode) -+ snd_seq_set_client_name(handle, "Net Server"); -+ else -+ snd_seq_set_client_name(handle, "Net Client"); -+ } - - /* create a port */ - seq_port = snd_seq_create_simple_port(handle, "Network", --- -2.30.2 - - -From f35b66d8f1c5e3c551981723ed242e48c62ad97f Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Mon, 14 Jun 2021 12:02:35 +0200 -Subject: [PATCH 14/16] Revert "aplay: try to use 16-bit format to increase - capture quality" - -This reverts commit 0c5948e98a6a8535c89b7bcab13017d7732181c6. - -Link: https://github.com/alsa-project/alsa-utils/issues/96 -Signed-off-by: Jaroslav Kysela ---- - aplay/aplay.c | 43 +++++++++---------------------------------- - 1 file changed, 9 insertions(+), 34 deletions(-) - -diff --git a/aplay/aplay.c b/aplay/aplay.c -index 0b7884e..d89b7df 100644 ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -32,7 +32,6 @@ - #include - #include - #include --#include - #include - #include - #include -@@ -95,7 +94,6 @@ enum { - VUMETER_STEREO - }; - --static snd_pcm_format_t default_format = DEFAULT_FORMAT; - static char *command; - static snd_pcm_t *handle; - static struct { -@@ -470,24 +468,6 @@ static long parse_long(const char *str, int *err) - return val; - } - --static void try_to_adjust_default_format_16bit(void) --{ -- snd_pcm_hw_params_t *params; -- int err; -- -- snd_pcm_hw_params_alloca(¶ms); -- err = snd_pcm_hw_params_any(handle, params); -- if (err < 0) { -- error(_("Broken configuration for this PCM: no configurations available")); -- prg_exit(EXIT_FAILURE); -- } -- -- if (file_type != FORMAT_AU && snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_S16_LE) == 0) -- rhwparams.format = default_format = SND_PCM_FORMAT_S16_LE; -- else if (file_type == FORMAT_AU && snd_pcm_hw_params_test_format(handle, params, SND_PCM_FORMAT_S16_BE) == 0) -- rhwparams.format = default_format = SND_PCM_FORMAT_S16_BE; --} -- - int main(int argc, char *argv[]) - { - int duration_or_sample = 0; -@@ -548,7 +528,6 @@ int main(int argc, char *argv[]) - int do_device_list = 0, do_pcm_list = 0; - snd_pcm_info_t *info; - FILE *direction; -- bool user_set_fmt = false; - - #ifdef ENABLE_NLS - setlocale(LC_ALL, ""); -@@ -583,7 +562,7 @@ int main(int argc, char *argv[]) - } - - chunk_size = -1; -- rhwparams.format = default_format; -+ rhwparams.format = DEFAULT_FORMAT; - rhwparams.rate = DEFAULT_SPEED; - rhwparams.channels = 1; - -@@ -633,7 +612,6 @@ int main(int argc, char *argv[]) - } - break; - case 'f': -- user_set_fmt = true; - if (strcasecmp(optarg, "cd") == 0 || strcasecmp(optarg, "cdr") == 0) { - if (strcasecmp(optarg, "cdr") == 0) - rhwparams.format = SND_PCM_FORMAT_S16_BE; -@@ -866,9 +844,6 @@ int main(int argc, char *argv[]) - } - } - -- if (!user_set_fmt) -- try_to_adjust_default_format_16bit(); -- - chunk_size = 1024; - hwparams = rhwparams; - -@@ -1089,7 +1064,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size) - hwparams.channels = channels; - switch (TO_CPU_SHORT(f->bit_p_spl, big_endian)) { - case 8: -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != SND_PCM_FORMAT_U8) - fprintf(stderr, _("Warning: format is changed to U8\n")); - hwparams.format = SND_PCM_FORMAT_U8; -@@ -1099,7 +1074,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size) - native_format = SND_PCM_FORMAT_S16_BE; - else - native_format = SND_PCM_FORMAT_S16_LE; -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != native_format) - fprintf(stderr, _("Warning: format is changed to %s\n"), - snd_pcm_format_name(native_format)); -@@ -1112,7 +1087,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size) - native_format = SND_PCM_FORMAT_S24_3BE; - else - native_format = SND_PCM_FORMAT_S24_3LE; -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != native_format) - fprintf(stderr, _("Warning: format is changed to %s\n"), - snd_pcm_format_name(native_format)); -@@ -1123,7 +1098,7 @@ static ssize_t test_wavefile(int fd, u_char *_buffer, size_t size) - native_format = SND_PCM_FORMAT_S24_BE; - else - native_format = SND_PCM_FORMAT_S24_LE; -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != native_format) - fprintf(stderr, _("Warning: format is changed to %s\n"), - snd_pcm_format_name(native_format)); -@@ -1209,19 +1184,19 @@ static int test_au(int fd, void *buffer) - pbrec_count = BE_INT(ap->data_size); - switch (BE_INT(ap->encoding)) { - case AU_FMT_ULAW: -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != SND_PCM_FORMAT_MU_LAW) - fprintf(stderr, _("Warning: format is changed to MU_LAW\n")); - hwparams.format = SND_PCM_FORMAT_MU_LAW; - break; - case AU_FMT_LIN8: -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != SND_PCM_FORMAT_U8) - fprintf(stderr, _("Warning: format is changed to U8\n")); - hwparams.format = SND_PCM_FORMAT_U8; - break; - case AU_FMT_LIN16: -- if (hwparams.format != default_format && -+ if (hwparams.format != DEFAULT_FORMAT && - hwparams.format != SND_PCM_FORMAT_S16_BE) - fprintf(stderr, _("Warning: format is changed to S16_BE\n")); - hwparams.format = SND_PCM_FORMAT_S16_BE; -@@ -2390,7 +2365,7 @@ static void voc_play(int fd, int ofs, char *name) - prg_exit(EXIT_FAILURE); - } - } -- hwparams.format = default_format; -+ hwparams.format = DEFAULT_FORMAT; - hwparams.channels = 1; - hwparams.rate = DEFAULT_SPEED; - set_params(); --- -2.30.2 - - -From fc7500c3c7a7d6bfb975a87e23b7544a84da3186 Mon Sep 17 00:00:00 2001 -From: Jaroslav Kysela -Date: Mon, 14 Jun 2021 12:22:08 +0200 -Subject: [PATCH 15/16] arecord: Inform users when 8-bit sampling is used on - tty - -When we reverted 0c5948e ("aplay: try to use 16-bit format to -increase capture quality"), we should also handle the original -problem somehow. This code shows a warning with a hint to -the right parameter. - -Fixes: https://github.com/alsa-project/alsa-utils/issues/96 -Signed-off-by: Jaroslav Kysela ---- - aplay/aplay.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/aplay/aplay.c b/aplay/aplay.c -index d89b7df..cc51dcb 100644 ---- a/aplay/aplay.c -+++ b/aplay/aplay.c -@@ -525,7 +525,7 @@ int main(int argc, char *argv[]) - }; - char *pcm_name = "default"; - int tmp, err, c; -- int do_device_list = 0, do_pcm_list = 0; -+ int do_device_list = 0, do_pcm_list = 0, force_sample_format = 0; - snd_pcm_info_t *info; - FILE *direction; - -@@ -612,6 +612,7 @@ int main(int argc, char *argv[]) - } - break; - case 'f': -+ force_sample_format = 1; - if (strcasecmp(optarg, "cd") == 0 || strcasecmp(optarg, "cdr") == 0) { - if (strcasecmp(optarg, "cdr") == 0) - rhwparams.format = SND_PCM_FORMAT_S16_BE; -@@ -844,6 +845,14 @@ int main(int argc, char *argv[]) - } - } - -+ if (!force_sample_format && -+ isatty(fileno(stdin)) && -+ stream == SND_PCM_STREAM_CAPTURE && -+ snd_pcm_format_width(rhwparams.format) <= 8) -+ fprintf(stderr, "Warning: Some sources (like microphones) may produce inaudiable results\n" -+ " with 8-bit sampling. Use '-f' argument to increase resolution\n" -+ " e.g. '-f S16_LE'.\n"); -+ - chunk_size = 1024; - hwparams = rhwparams; - --- -2.30.2 - - diff --git a/SPECS/alsa-utils.spec b/SPECS/alsa-utils.spec index f6bb520..fd78f75 100644 --- a/SPECS/alsa-utils.spec +++ b/SPECS/alsa-utils.spec @@ -1,11 +1,11 @@ -%define baseversion 1.2.5 +%define baseversion 1.2.6 #define fixversion .2 %global _hardened_build 1 Summary: Advanced Linux Sound Architecture (ALSA) utilities Name: alsa-utils Version: %{baseversion}%{?fixversion} -Release: 3%{?dist} +Release: 1%{?dist} License: GPLv2+ Group: Applications/Multimedia URL: http://www.alsa-project.org/ @@ -192,6 +192,9 @@ fi %systemd_postun_with_restart alsa-state.service %changelog +* Mon Dec 20 2021 Jaroslav Kysela - 1.2.6-1 +* Updated to 1.2.6 + * Mon Jun 14 2021 Jaroslav Kysela - 1.2.5-3 - Updated to 1.2.5