commit: 23bb6a2a057a5e3b87d475a5cf93732338a4eff0
parent d3f95465ec2fd1080a1e0a17f24c75b7ef1bce5f
Author: Michael Forney <mforney@mforney.org>
Date: Fri, 31 May 2019 01:23:39 -0700
alsa-lib: Fix a few portability issues
Diffstat:
7 files changed, 373 insertions(+), 1 deletion(-)
diff --git a/pkg/alsa-lib/patch/0002-Use-__func__-instead-of-__FUNCTION__.patch b/pkg/alsa-lib/patch/0002-Use-__func__-instead-of-__FUNCTION__.patch
@@ -0,0 +1,92 @@
+From 9ae6cc2bfcbac45b193c76e735033114e98c3689 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Thu, 9 May 2019 13:02:45 -0700
+Subject: [PATCH] Use __func__ instead of __FUNCTION__
+
+They are equivalent, but __func__ is in C99. __FUNCTION__ exists only
+for backwards compatibility with old gcc versions.
+
+Signed-off-by: Michael Forney <mforney@mforney.org>
+---
+ aserver/aserver.c | 4 ++--
+ include/error.h | 8 ++++----
+ include/local.h | 4 ++--
+ src/pcm/pcm_share.c | 4 ++--
+ 4 files changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/aserver/aserver.c b/aserver/aserver.c
+index 066414d8..3c5ed9a4 100644
+--- a/aserver/aserver.c
++++ b/aserver/aserver.c
+@@ -39,13 +39,13 @@ char *command;
+
+ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 95)
+ #define ERROR(...) do {\
+- fprintf(stderr, "%s %s:%i:(%s) ", command, __FILE__, __LINE__, __FUNCTION__); \
++ fprintf(stderr, "%s %s:%i:(%s) ", command, __FILE__, __LINE__, __func__); \
+ fprintf(stderr, __VA_ARGS__); \
+ putc('\n', stderr); \
+ } while (0)
+ #else
+ #define ERROR(args...) do {\
+- fprintf(stderr, "%s %s:%i:(%s) ", command, __FILE__, __LINE__, __FUNCTION__); \
++ fprintf(stderr, "%s %s:%i:(%s) ", command, __FILE__, __LINE__, __func__); \
+ fprintf(stderr, ##args); \
+ putc('\n', stderr); \
+ } while (0)
+diff --git a/include/error.h b/include/error.h
+index 9a996aba..7239db85 100644
+--- a/include/error.h
++++ b/include/error.h
+@@ -61,11 +61,11 @@ extern snd_lib_error_handler_t snd_lib_error;
+ extern int snd_lib_error_set_handler(snd_lib_error_handler_t handler);
+
+ #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 95)
+-#define SNDERR(...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, 0, __VA_ARGS__) /**< Shows a sound error message. */
+-#define SYSERR(...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, errno, __VA_ARGS__) /**< Shows a system error message (related to \c errno). */
++#define SNDERR(...) snd_lib_error(__FILE__, __LINE__, __func__, 0, __VA_ARGS__) /**< Shows a sound error message. */
++#define SYSERR(...) snd_lib_error(__FILE__, __LINE__, __func__, errno, __VA_ARGS__) /**< Shows a system error message (related to \c errno). */
+ #else
+-#define SNDERR(args...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, 0, ##args) /**< Shows a sound error message. */
+-#define SYSERR(args...) snd_lib_error(__FILE__, __LINE__, __FUNCTION__, errno, ##args) /**< Shows a system error message (related to \c errno). */
++#define SNDERR(args...) snd_lib_error(__FILE__, __LINE__, __func__, 0, ##args) /**< Shows a sound error message. */
++#define SYSERR(args...) snd_lib_error(__FILE__, __LINE__, __func__, errno, ##args) /**< Shows a system error message (related to \c errno). */
+ #endif
+
+ /** \} */
+diff --git a/include/local.h b/include/local.h
+index 5edad317..ce142d04 100644
+--- a/include/local.h
++++ b/include/local.h
+@@ -244,8 +244,8 @@ size_t snd_strlcpy(char *dst, const char *src, size_t size);
+ #ifndef NDEBUG
+ #define CHECK_SANITY(x) x
+ extern snd_lib_error_handler_t snd_err_msg;
+-#define SNDMSG(args...) snd_err_msg(__FILE__, __LINE__, __FUNCTION__, 0, ##args)
+-#define SYSMSG(args...) snd_err_msg(__FILE__, __LINE__, __FUNCTION__, errno, ##args)
++#define SNDMSG(args...) snd_err_msg(__FILE__, __LINE__, __func__, 0, ##args)
++#define SYSMSG(args...) snd_err_msg(__FILE__, __LINE__, __func__, errno, ##args)
+ #else
+ #define CHECK_SANITY(x) 0 /* not evaluated */
+ #define SNDMSG(args...) /* nop */
+diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c
+index 5a540c4f..bff9507d 100644
+--- a/src/pcm/pcm_share.c
++++ b/src/pcm/pcm_share.c
+@@ -54,11 +54,11 @@ char *snd_pcm_share_slaves_mutex_holder;
+ do { \
+ int err = pthread_mutex_trylock(mutex); \
+ if (err < 0) { \
+- fprintf(stderr, "lock " #mutex " is busy (%s): waiting in " __FUNCTION__ "\n", *(mutex##_holder)); \
++ fprintf(stderr, "lock " #mutex " is busy (%s): waiting in " __func__ "\n", *(mutex##_holder)); \
+ pthread_mutex_lock(mutex); \
+ fprintf(stderr, "... got\n"); \
+ } \
+- *(mutex##_holder) = __FUNCTION__; \
++ *(mutex##_holder) = __func__; \
+ } while (0)
+
+ #define Pthread_mutex_unlock(mutex) \
+--
+2.20.1
+
diff --git a/pkg/alsa-lib/patch/0003-List-cases-in-range-explicitly.patch b/pkg/alsa-lib/patch/0003-List-cases-in-range-explicitly.patch
@@ -0,0 +1,85 @@
+From 43baecc2cc7e48aebd65170400b471b96ff9f99d Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Fri, 31 May 2019 01:12:51 -0700
+Subject: [PATCH] List cases in range explicitly
+
+Case ranges are a GNU extension, and provide only a slight readability
+improvement.
+
+Signed-off-by: Michael Forney <mforney@mforney.org>
+---
+ src/conf.c | 22 ++++++++++++----------
+ 1 file changed, 12 insertions(+), 10 deletions(-)
+
+diff --git a/src/conf.c b/src/conf.c
+index cda5518e..3892b576 100644
+--- a/src/conf.c
++++ b/src/conf.c
+@@ -888,7 +888,8 @@ static int get_quotedchar(input_t *input)
+ return '\r';
+ case 'f':
+ return '\f';
+- case '0' ... '7':
++ case '0': case '1': case '2': case '3':
++ case '4': case '5': case '6': case '7':
+ {
+ int num = c - '0';
+ int i = 1;
+@@ -1479,7 +1480,8 @@ static void string_print(char *str, int id, snd_output_t *out)
+ }
+ if (!id) {
+ switch (*p) {
+- case '0' ... '9':
++ case '0': case '1': case '2': case '3': case '4':
++ case '5': case '6': case '7': case '8': case '9':
+ case '-':
+ goto quoted;
+ }
+@@ -1488,8 +1490,6 @@ static void string_print(char *str, int id, snd_output_t *out)
+ switch (*p) {
+ case 0:
+ goto nonquoted;
+- case 1 ... 31:
+- case 127 ... 255:
+ case ' ':
+ case '=':
+ case ';':
+@@ -1501,6 +1501,8 @@ static void string_print(char *str, int id, snd_output_t *out)
+ case '"':
+ goto quoted;
+ default:
++ if (*p <= 31 || *p >= 127)
++ goto quoted;
+ p++;
+ goto loop;
+ }
+@@ -1542,12 +1544,11 @@ static void string_print(char *str, int id, snd_output_t *out)
+ snd_output_putc(out, '\\');
+ snd_output_putc(out, c);
+ break;
+- case 32 ... '\'' - 1:
+- case '\'' + 1 ... 126:
+- snd_output_putc(out, c);
+- break;
+ default:
+- snd_output_printf(out, "\\%04o", c);
++ if (c >= 32 && c <= 126 && c != '\'')
++ snd_output_putc(out, c);
++ else
++ snd_output_printf(out, "\\%04o", c);
+ break;
+ }
+ p++;
+@@ -4683,7 +4684,8 @@ static int parse_char(const char **ptr)
+ case 'f':
+ c = '\f';
+ break;
+- case '0' ... '7':
++ case '0': case '1': case '2': case '3':
++ case '4': case '5': case '6': case '7':
+ {
+ int num = c - '0';
+ int i = 1;
+--
+2.20.1
+
diff --git a/pkg/alsa-lib/patch/0004-Don-t-return-in-a-void-function.patch b/pkg/alsa-lib/patch/0004-Don-t-return-in-a-void-function.patch
@@ -0,0 +1,29 @@
+From 0188839f21a474e7a7ffcf9bddac7d6a0dd140e8 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Fri, 31 May 2019 01:15:05 -0700
+Subject: [PATCH] Don't return in a void function
+
+A return statement with an expression in a function returning void is
+a constraint violation.
+
+Signed-off-by: Michael Forney <mforney@mforney.org>
+---
+ src/pcm/pcm_hw.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/pcm/pcm_hw.c b/src/pcm/pcm_hw.c
+index 91370a88..4f104e5e 100644
+--- a/src/pcm/pcm_hw.c
++++ b/src/pcm/pcm_hw.c
+@@ -1171,7 +1171,7 @@ static void __fill_chmap_ctl_id(snd_ctl_elem_id_t *id, int dev, int subdev,
+ static void fill_chmap_ctl_id(snd_pcm_t *pcm, snd_ctl_elem_id_t *id)
+ {
+ snd_pcm_hw_t *hw = pcm->private_data;
+- return __fill_chmap_ctl_id(id, hw->device, hw->subdevice, pcm->stream);
++ __fill_chmap_ctl_id(id, hw->device, hw->subdevice, pcm->stream);
+ }
+
+ static int is_chmap_type(int type)
+--
+2.20.1
+
diff --git a/pkg/alsa-lib/patch/0005-Make-sure-parameter-qualifiers-match-between-declara.patch b/pkg/alsa-lib/patch/0005-Make-sure-parameter-qualifiers-match-between-declara.patch
@@ -0,0 +1,90 @@
+From a10d0b074483dc20ddd3678442a15bc47a63f549 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Fri, 31 May 2019 15:52:45 -0700
+Subject: [PATCH] Make sure parameter qualifiers match between declaration and
+ definition
+
+Signed-off-by: Michael Forney <mforney@mforney.org>
+---
+ src/pcm/pcm.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c
+index 3a71d79b..c58f5933 100644
+--- a/src/pcm/pcm.c
++++ b/src/pcm/pcm.c
+@@ -1997,7 +1997,7 @@ static const char *const snd_pcm_tstamp_type_names[] = {
+ * \param stream PCM stream type
+ * \return ascii name of PCM stream type
+ */
+-const char *snd_pcm_stream_name(snd_pcm_stream_t stream)
++const char *snd_pcm_stream_name(const snd_pcm_stream_t stream)
+ {
+ if (stream > SND_PCM_STREAM_LAST)
+ return NULL;
+@@ -2009,7 +2009,7 @@ const char *snd_pcm_stream_name(snd_pcm_stream_t stream)
+ * \param acc PCM access type
+ * \return ascii name of PCM access type
+ */
+-const char *snd_pcm_access_name(snd_pcm_access_t acc)
++const char *snd_pcm_access_name(const snd_pcm_access_t acc)
+ {
+ if (acc > SND_PCM_ACCESS_LAST)
+ return NULL;
+@@ -2021,7 +2021,7 @@ const char *snd_pcm_access_name(snd_pcm_access_t acc)
+ * \param format PCM sample format
+ * \return ascii name of PCM sample format
+ */
+-const char *snd_pcm_format_name(snd_pcm_format_t format)
++const char *snd_pcm_format_name(const snd_pcm_format_t format)
+ {
+ if (format > SND_PCM_FORMAT_LAST)
+ return NULL;
+@@ -2033,7 +2033,7 @@ const char *snd_pcm_format_name(snd_pcm_format_t format)
+ * \param format PCM sample format
+ * \return ascii description of PCM sample format
+ */
+-const char *snd_pcm_format_description(snd_pcm_format_t format)
++const char *snd_pcm_format_description(const snd_pcm_format_t format)
+ {
+ if (format > SND_PCM_FORMAT_LAST)
+ return NULL;
+@@ -2072,7 +2072,7 @@ snd_pcm_format_t snd_pcm_format_value(const char* name)
+ * \param subformat PCM sample subformat
+ * \return ascii name of PCM sample subformat
+ */
+-const char *snd_pcm_subformat_name(snd_pcm_subformat_t subformat)
++const char *snd_pcm_subformat_name(const snd_pcm_subformat_t subformat)
+ {
+ if (subformat > SND_PCM_SUBFORMAT_LAST)
+ return NULL;
+@@ -2084,7 +2084,7 @@ const char *snd_pcm_subformat_name(snd_pcm_subformat_t subformat)
+ * \param subformat PCM sample subformat
+ * \return ascii description of PCM sample subformat
+ */
+-const char *snd_pcm_subformat_description(snd_pcm_subformat_t subformat)
++const char *snd_pcm_subformat_description(const snd_pcm_subformat_t subformat)
+ {
+ if (subformat > SND_PCM_SUBFORMAT_LAST)
+ return NULL;
+@@ -2128,7 +2128,7 @@ link_warning(snd_pcm_xrun_mode_name, "Warning: xrun_mode is deprecated, consider
+ * \param mode PCM tstamp mode
+ * \return ascii name of PCM tstamp mode setting
+ */
+-const char *snd_pcm_tstamp_mode_name(snd_pcm_tstamp_t mode)
++const char *snd_pcm_tstamp_mode_name(const snd_pcm_tstamp_t mode)
+ {
+ if (mode > SND_PCM_TSTAMP_LAST)
+ return NULL;
+@@ -2152,7 +2152,7 @@ const char *snd_pcm_tstamp_type_name(snd_pcm_tstamp_type_t type)
+ * \param state PCM state
+ * \return ascii name of PCM state
+ */
+-const char *snd_pcm_state_name(snd_pcm_state_t state)
++const char *snd_pcm_state_name(const snd_pcm_state_t state)
+ {
+ if (state > SND_PCM_STATE_LAST)
+ return NULL;
+--
+2.20.1
+
diff --git a/pkg/alsa-lib/patch/0006-Remove-unused-empty-struct.patch b/pkg/alsa-lib/patch/0006-Remove-unused-empty-struct.patch
@@ -0,0 +1,26 @@
+From b2c26e9b2ef3899b640fa5a70124b0a0ce42f011 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Fri, 31 May 2019 17:48:37 -0700
+Subject: [PATCH] Remove unused empty struct
+
+Signed-off-by: Michael Forney <mforney@mforney.org>
+---
+ src/pcm/pcm_direct.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/pcm/pcm_direct.h b/src/pcm/pcm_direct.h
+index da5e280e..6e66b47d 100644
+--- a/src/pcm/pcm_direct.h
++++ b/src/pcm/pcm_direct.h
+@@ -181,8 +181,6 @@ struct snd_pcm_direct {
+ mix_areas_24_t *remix_areas_24;
+ mix_areas_u8_t *remix_areas_u8;
+ } dmix;
+- struct {
+- } dsnoop;
+ struct {
+ unsigned long long chn_mask;
+ } dshare;
+--
+2.20.1
+
diff --git a/pkg/alsa-lib/patch/0007-Avoid-pointer-arithmetic-on-void.patch b/pkg/alsa-lib/patch/0007-Avoid-pointer-arithmetic-on-void.patch
@@ -0,0 +1,50 @@
+From e2b979b53e605b91b8e7612e4aae8e023402c86d Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Tue, 4 Jun 2019 18:59:28 -0700
+Subject: [PATCH] Avoid pointer arithmetic on `void *`
+
+The pointer operand to the binary `+` operator must be to a complete
+object type.
+
+Signed-off-by: Michael Forney <mforney@mforney.org>
+---
+ src/pcm/pcm_rate.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/pcm/pcm_rate.c b/src/pcm/pcm_rate.c
+index 5dc8a927..fdcaa8de 100644
+--- a/src/pcm/pcm_rate.c
++++ b/src/pcm/pcm_rate.c
+@@ -300,10 +300,10 @@ static int snd_pcm_rate_hw_params(snd_pcm_t *pcm, snd_pcm_hw_params_t * params)
+ rate->sareas = rate->pareas + channels;
+ rate->sareas[0].addr = (char *)rate->pareas[0].addr + ((cwidth * channels * cinfo->period_size) / 8);
+ for (chn = 0; chn < channels; chn++) {
+- rate->pareas[chn].addr = rate->pareas[0].addr + (cwidth * chn * cinfo->period_size) / 8;
++ rate->pareas[chn].addr = (char *)rate->pareas[0].addr + (cwidth * chn * cinfo->period_size) / 8;
+ rate->pareas[chn].first = 0;
+ rate->pareas[chn].step = cwidth;
+- rate->sareas[chn].addr = rate->sareas[0].addr + (swidth * chn * sinfo->period_size) / 8;
++ rate->sareas[chn].addr = (char *)rate->sareas[0].addr + (swidth * chn * sinfo->period_size) / 8;
+ rate->sareas[chn].first = 0;
+ rate->sareas[chn].step = swidth;
+ }
+@@ -513,14 +513,14 @@ static void do_convert(const snd_pcm_channel_area_t *dst_areas,
+ const int16_t *src;
+ int16_t *dst;
+ if (! rate->src_buf)
+- src = src_areas->addr + src_offset * 2 * channels;
++ src = (int16_t *)src_areas->addr + src_offset * channels;
+ else {
+ convert_to_s16(rate, rate->src_buf, src_areas, src_offset,
+ src_frames, channels);
+ src = rate->src_buf;
+ }
+ if (! rate->dst_buf)
+- dst = dst_areas->addr + dst_offset * 2 * channels;
++ dst = (int16_t *)dst_areas->addr + dst_offset * channels;
+ else
+ dst = rate->dst_buf;
+ rate->ops.convert_s16(rate->obj, dst, dst_frames, src, src_frames);
+--
+2.20.1
+
diff --git a/pkg/alsa-lib/ver b/pkg/alsa-lib/ver
@@ -1 +1 @@
-1.1.9 r0
+1.1.9 r1