From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS6130 216.105.38.0/24 X-Spam-Status: No, score=-3.1 required=3.0 tests=BAYES_00,DKIM_ADSP_ALL, DKIM_INVALID,DKIM_SIGNED,HTML_MESSAGE,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=no autolearn_force=no version=3.4.2 Received: from lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 7AB821F8C6 for ; Wed, 8 Sep 2021 21:23:19 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Cc:Reply-To:From:List-Subscribe:List-Help: List-Post:List-Archive:List-Unsubscribe:List-Id:Subject:Content-Type:To: Message-ID:Date:MIME-Version:Sender:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=1Z0A9UnMwG53k9oba2MJ25/Gl6I+E88hOe9uIO2nJnE=; b=DCm9atwa78n10SodAqbB7KM6EC GaLZP1Z+FKzuc+JaPblJMFxr4HtOuqPXojGiym27OveJxGNsyJozE3gTZZ26+LhwSeIYjPDEGnZ3u RI+LOZ1Dfnu7mhxVNuBAS/XrmQKOwMzq8/f5qVMh4vW04h1i7m3yW/bexGG88T90gd/4=; Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.92.3) (envelope-from ) id 1mO52F-0002Bc-OG; Wed, 08 Sep 2021 21:23:11 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.3) (envelope-from ) id 1mO52E-0002BV-8N for sox-devel@lists.sourceforge.net; Wed, 08 Sep 2021 21:23:10 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Type:To:Subject:Message-ID:Date:From: MIME-Version:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=fhTuERKU3wx+gnQMIB3SlIklJArsmj4V+AHwP484LV4=; b=Kcr17Om1YA6rDXVfOimDM9tQ91 V0bKVBvGpelZPPxRWB7UXRa5geJdzJSIgGYJEyfQBhrKcrBOg8hN2azSK/7JNuLWBhuJxpTGlknEz rzuMFTthNz4YxJvXECzVpeXizbPMgxh4DOUMwmaM0JTUY5r75nHqExL5qp5FNP/Xnmtg=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Type:To:Subject:Message-ID:Date:From:MIME-Version:Sender:Reply-To :Cc:Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=fhTuERKU3wx+gnQMIB3SlIklJArsmj4V+AHwP484LV4=; b=L SIZIrYb1YUpRHGkvDq6mbQoY8I0eu9jWB23qb4bfQJR9jojKRm1A0/55aDeAIsDypRJiWynjSMgh/ okVZAqR3LEh0awELJdQoVqa3v/nsqSPZ5FFg4S5voKjvlwF+HfrplFu9phaSGAu8sBJJxQPU7B1Mk jIa1ioUlerSbElNY=; Received: from mail-qk1-f179.google.com ([209.85.222.179]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.92.3) id 1mO52B-0001bh-NB for sox-devel@lists.sourceforge.net; Wed, 08 Sep 2021 21:23:10 +0000 Received: by mail-qk1-f179.google.com with SMTP id a10so3913127qka.12 for ; Wed, 08 Sep 2021 14:23:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:from:date:message-id:subject:to; bh=fhTuERKU3wx+gnQMIB3SlIklJArsmj4V+AHwP484LV4=; b=gijtHF9sStKX9XHUaxMRHdXHfNxLCYBvNazeaZ0xP4Kx0QnnokU3p7c//x8zTrVjTh Ckc+HAQ5/heB/+TH3qwl1uC2wI/hL2qvleuYJNZQwZYtrs5+tZZ+8jTMA3wxWL2pRSMC PsPnduR8ryTwbFUhGRDo2b1H5PuSfzeju5E31x0ccNEmtK/+WSTKc6EMFwz92XEUURXi VHKAFiLt3ihvs+9E6Duekrb5nRPqAZfz2M3BDkhWMro2bhfsT4D5eHTPK31pxPFo4Mjj ZXLwM3dPIrCC1fQx5d7CmHvx9QdeAKoITLxyWbjviOUJxvXjhdFHRHddleFScNlIKtSN eYvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=fhTuERKU3wx+gnQMIB3SlIklJArsmj4V+AHwP484LV4=; b=yUQOY1M0JhxNUiEdvs/WhF8XI+OearbBfUKNnhOq+8a8gDUy5+H8BcFsOt/v+Dhk2d y5F6vPq93Sd1eLJ5BEfUvuU/1bNoaREj8leV4rLBrdbu9k6eXLTtxCpbc11ShUSlZzES P2T2ldc14cKSugZdn/fx5iyWAj/k2Yf8Mk5qTQEqf6uxX5MFSBBykwoilg3e8Mjd33ZA ZVe7XjAWF3+LZKne1d3UguAWacfl/O8x1+WMlWJTHqsMjMj7jhcN4g3dFornOdqnE7iV S5v6qBjByCndZO0ZOSq6qc1fhWtGXa+zIGPvycyGmbLViXWuCcOhdq71TYEBNiesxsz0 MJgw== X-Gm-Message-State: AOAM532gRK5xhhADpJmaI1z6kxDlISSoZzFmrzzgoE9g7SiTgquaBql3 4HUYqII6fB7x8lgp/yT0XZBly6JX9x299Tb27B6QgO34XlJXbA== X-Google-Smtp-Source: ABdhPJy3q82xx0VQ2b2NLydmzdhEFdk4PNllaSy2NLANV7QIetIkK4v9GVq1tBo8PG7xESSkvhHkiuopHhFhI1dMhB4= X-Received: by 2002:a05:6638:d11:: with SMTP id q17mr142734jaj.63.1631132638816; Wed, 08 Sep 2021 13:23:58 -0700 (PDT) MIME-Version: 1.0 Date: Wed, 8 Sep 2021 13:23:22 -0700 Message-ID: To: sox-devel@lists.sourceforge.net Content-Type: multipart/mixed; boundary="000000000000856fa805cb81a98d" X-Headers-End: 1mO52B-0001bh-NB Subject: Patch to make logging thread-frinedly X-BeenThere: sox-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: "Md. Enzam Hossain via SoX-devel" Reply-To: sox-devel@lists.sourceforge.net Cc: "Md. Enzam Hossain" Errors-To: sox-devel-bounces@lists.sourceforge.net --000000000000856fa805cb81a98d Content-Type: multipart/alternative; boundary="000000000000856fa505cb81a98b" --000000000000856fa505cb81a98b Content-Type: text/plain; charset="UTF-8" The logging functions in SoX like lsx_debug, lsx_report, etc. write to the global struct sox_globals before calling the actual print functions. Example macro: #define lsx_report sox_globals.subsystem=__FILE__,lsx_report_impl This can create *race conditions* if run parallely. For example, two lsx_report calls are called parallely. lsx_report call 1 updates sox_globals.subsystem. lsx_report call 2 updates sox_globals.subsystem. lsx_report call 1 prints, but with incorrect subsystem of call 2. lsx_report call 2 prints with the correct subsystem. I am attaching a patch file to make the calls thread-friendly. Please let me know if the patch makes sense. -- Regards, Enzam (enzam@ ) *Inlined patch (also attached as file):* >From 3be8226c8ca2b4f29b6927583641cb08ef39dddf Mon Sep 17 00:00:00 2001 From: "Md. Enzam Hossain" Date: Wed, 8 Sep 2021 12:03:02 -0700 Subject: [PATCH] Make logging thread friendly. If multiple threads tries to log together, the subsystem may get overwritten by each other. Remove the dependency on the global parameter. --- src/libsox.c | 4 ++-- src/mp3.c | 15 +++------------ src/sox.h | 32 ++++++++++++++++++-------------- src/sox_i.h | 16 ++++++++-------- 4 files changed, 31 insertions(+), 36 deletions(-) diff --git a/src/libsox.c b/src/libsox.c index 8e9ebad6..6fc0ec41 100644 --- a/src/libsox.c +++ b/src/libsox.c @@ -195,11 +195,11 @@ size_t sox_basename(char * base_buffer, size_t base_buffer_len, const char * fil } #define SOX_MESSAGE_FUNCTION(name,level) \ -void name(char const * fmt, ...) { \ +void name(char const * filename, char const * fmt, ...) { \ va_list ap; \ va_start(ap, fmt); \ if (sox_globals.output_message_handler) \ - (*sox_globals.output_message_handler)(level,sox_globals.subsystem,fmt,ap); \ + (*sox_globals.output_message_handler)(level,filename,fmt,ap); \ va_end(ap); \ } diff --git a/src/mp3.c b/src/mp3.c index 1fd144d1..552ab0db 100644 --- a/src/mp3.c +++ b/src/mp3.c @@ -680,26 +680,17 @@ static int startread(sox_format_t * ft) static void errorf(const char* fmt, va_list va) { - sox_globals.subsystem=__FILE__; - if (sox_globals.output_message_handler) - (*sox_globals.output_message_handler)(1,sox_globals.subsystem,fmt,va); - return; + lsx_fail(fmt, va); } static void debugf(const char* fmt, va_list va) { - sox_globals.subsystem=__FILE__; - if (sox_globals.output_message_handler) - (*sox_globals.output_message_handler)(4,sox_globals.subsystem,fmt,va); - return; + lsx_debug(fmt, va); } static void msgf(const char* fmt, va_list va) { - sox_globals.subsystem=__FILE__; - if (sox_globals.output_message_handler) - (*sox_globals.output_message_handler)(3,sox_globals.subsystem,fmt,va); - return; + lsx_report(fmt, va); } /* These functions are considered optional. If they aren't present in the diff --git a/src/sox.h b/src/sox.h index bac50354..b9cd9754 100644 --- a/src/sox.h +++ b/src/sox.h @@ -79,14 +79,14 @@ the variable being unused (especially in macro-generated code). /** Plugins API: -LSX_PRINTF12: Attribute applied to a function to indicate that it requires -a printf-style format string for arg1 and that printf parameters start at -arg2. +LSX_PRINTF23: Attribute applied to a function to indicate that it requires +a printf-style format string for arg2 and that printf parameters start at +arg3. */ #ifdef __GNUC__ -#define LSX_PRINTF12 __attribute__ ((format (printf, 1, 2))) /* Function has printf-style arguments. */ +#define LSX_PRINTF23 __attribute__ ((format (printf, 2, 3))) /* Function has printf-style arguments. */ #else -#define LSX_PRINTF12 /* Function has printf-style arguments. */ +#define LSX_PRINTF23 /* Function has printf-style arguments. */ #endif /** @@ -1330,7 +1330,7 @@ typedef struct sox_globals_t { char const * stdin_in_use_by; /**< Private: tracks the name of the handler currently using stdin */ char const * stdout_in_use_by; /**< Private: tracks the name of the handler currently using stdout */ - char const * subsystem; /**< Private: tracks the name of the handler currently writing an output message */ + char const * subsystem; /**< Deprecated, Private: tracks the name of the handler currently writing an output message */ char * tmp_path; /**< Private: client-configured path to use for temporary files */ sox_bool use_magic; /**< Private: true if client has requested use of 'magic' file-type detection */ sox_bool use_threads; /**< Private: true if client has requested parallel effects processing */ @@ -2273,9 +2273,10 @@ Print a fatal error in libSoX. void LSX_API lsx_fail_impl( + LSX_PARAM_IN_Z char const * filename, /**< Source code __FILE__ from which message originates. */ LSX_PARAM_IN_PRINTF char const * fmt, /**< printf-style format string. */ ...) - LSX_PRINTF12; + LSX_PRINTF23; /** Plugins API: @@ -2284,9 +2285,10 @@ Print a warning in libSoX. void LSX_API lsx_warn_impl( + LSX_PARAM_IN_Z char const * filename, /**< Source code __FILE__ from which message originates. */ LSX_PARAM_IN_PRINTF char const * fmt, /**< printf-style format string. */ ...) - LSX_PRINTF12; + LSX_PRINTF23; /** Plugins API: @@ -2295,9 +2297,10 @@ Print an informational message in libSoX. void LSX_API lsx_report_impl( + LSX_PARAM_IN_Z char const * filename, /**< Source code __FILE__ from which message originates. */ LSX_PARAM_IN_PRINTF char const * fmt, /**< printf-style format string. */ ...) - LSX_PRINTF12; + LSX_PRINTF23; /** Plugins API: @@ -2306,33 +2309,34 @@ Print a debug message in libSoX. void LSX_API lsx_debug_impl( + LSX_PARAM_IN_Z char const * filename, /**< Source code __FILE__ from which message originates. */ LSX_PARAM_IN_PRINTF char const * fmt, /**< printf-style format string. */ ...) - LSX_PRINTF12; + LSX_PRINTF23; /** Plugins API: Report a fatal error in libSoX; printf-style arguments must follow. */ -#define lsx_fail sox_get_globals()->subsystem=__FILE__,lsx_fail_impl +#define lsx_fail(...) lsx_fail_impl(__FILE__, __VA_ARGS__) /** Plugins API: Report a warning in libSoX; printf-style arguments must follow. */ -#define lsx_warn sox_get_globals()->subsystem=__FILE__,lsx_warn_impl +#define lsx_warn(...) lsx_warn_impl(__FILE__, __VA_ARGS__) /** Plugins API: Report an informational message in libSoX; printf-style arguments must follow. */ -#define lsx_report sox_get_globals()->subsystem=__FILE__,lsx_report_impl +#define lsx_report(...) lsx_report_impl(__FILE__, __VA_ARGS__) /** Plugins API: Report a debug message in libSoX; printf-style arguments must follow. */ -#define lsx_debug sox_get_globals()->subsystem=__FILE__,lsx_debug_impl +#define lsx_debug(...) lsx_debug_impl(__FILE__, __VA_ARGS__) /** Plugins API: diff --git a/src/sox_i.h b/src/sox_i.h index c8552f97..c843556c 100644 --- a/src/sox_i.h +++ b/src/sox_i.h @@ -31,10 +31,10 @@ #undef lsx_fail #undef lsx_report #undef lsx_warn -#define lsx_debug sox_globals.subsystem=effp->handler.name,lsx_debug_impl -#define lsx_fail sox_globals.subsystem=effp->handler.name,lsx_fail_impl -#define lsx_report sox_globals.subsystem=effp->handler.name,lsx_report_impl -#define lsx_warn sox_globals.subsystem=effp->handler.name,lsx_warn_impl +#define lsx_debug(...) lsx_debug_impl(effp->handler.name, __VA_ARGS__) +#define lsx_fail(...) lsx_fail_impl(effp->handler.name, __VA_ARGS__) +#define lsx_report(...) lsx_report_impl(effp->handler.name, __VA_ARGS__) +#define lsx_warn(...) lsx_warn_impl(effp->handler.name, __VA_ARGS__) #endif #define RANQD1 ranqd1(sox_globals.ranqd1) @@ -56,11 +56,11 @@ assert_static(sizeof(off_t) == _FILE_OFFSET_BITS >> 3, OFF_T_BUILD_PROBLEM); FILE * lsx_tmpfile(void); -void lsx_debug_more_impl(char const * fmt, ...) LSX_PRINTF12; -void lsx_debug_most_impl(char const * fmt, ...) LSX_PRINTF12; +void lsx_debug_more_impl(LSX_PARAM_IN_Z char const * filename, LSX_PARAM_IN_PRINTF char const * fmt, ...) LSX_PRINTF23; +void lsx_debug_most_impl(LSX_PARAM_IN_Z char const * filename, LSX_PARAM_IN_PRINTF char const * fmt, ...) LSX_PRINTF23; -#define lsx_debug_more sox_get_globals()->subsystem=__FILE__,lsx_debug_more_impl -#define lsx_debug_most sox_get_globals()->subsystem=__FILE__,lsx_debug_most_impl +#define lsx_debug_more(...) lsx_debug_more_impl(__FILE__, __VA_ARGS__) +#define lsx_debug_most(...) lsx_debug_most_impl(__FILE__, __VA_ARGS__) /* Digitise one cycle of a wave and store it as * a table of samples of a specified data-type. -- 2.33.0.153.gba50c8fa24-goog --000000000000856fa505cb81a98b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
The logging functions in SoX like lsx_debug, lsx_repo= rt, etc. write to the global struct sox_globals before calling the actual p= rint functions.

Example macro:
#define l= sx_report sox_globals.subsystem=3D__FILE__,lsx_report_impl
This can create race conditions if run parallely.
=

For example, two lsx_report calls are called paral= lely.
lsx_report call 1 updates=C2=A0sox_globals.subsystem.
=
lsx_report call 2 updates=C2=A0sox_globals.subsystem.
ls= x_report call 1 prints, but with incorrect subsystem of call 2.
l= sx_report call 2 prints with the correct subsystem.

I am attaching a patch file to make the calls thread-friendly.
<= div>Please let me=C2=A0know if the patch makes=C2=A0sense.

--

Regards,
Enzam (enzam@)
Inlined patch (also = attached as file):

From 3be8226c8ca2b4f= 29b6927583641cb08ef39dddf Mon Sep 17 00:00:00 2001
From: "Md. Enzam= Hossain" <enzam@google.com= >
Date: Wed, 8 Sep 2021 12:03:02 -0700
Subject: [PATCH] Make loggi= ng thread friendly.

If multiple threads tries to log together, the s= ubsystem may get
overwritten by each other.
Remove the dependency on = the global parameter.
---
=C2=A0src/libsox.c | =C2=A04 ++--
=C2=A0= src/mp3.c =C2=A0 =C2=A0| 15 +++------------
=C2=A0src/sox.h =C2=A0 =C2= =A0| 32 ++++++++++++++++++--------------
=C2=A0src/sox_i.h =C2=A0| 16 ++= ++++++--------
=C2=A04 files changed, 31 insertions(+), 36 deletions(-)<= br>
diff --git a/src/libsox.c b/src/libsox.c
index 8e9ebad6..6fc0ec41= 100644
--- a/src/libsox.c
+++ b/src/libsox.c
@@ -195,11 +195,11 @= @ size_t sox_basename(char * base_buffer, size_t base_buffer_len, const cha= r * fil
=C2=A0}
=C2=A0
=C2=A0#define SOX_MESSAGE_FUNCTION(name,lev= el) \
-void name(char const * fmt, ...) { \
+void name(char const * f= ilename, char const * fmt, ...) { \
=C2=A0 =C2=A0va_list ap; \
=C2=A0= =C2=A0va_start(ap, fmt); \
=C2=A0 =C2=A0if (sox_globals.output_message_= handler) \
- =C2=A0 =C2=A0(*sox_globals.output_message_handler)(level,so= x_globals.subsystem,fmt,ap); \
+ =C2=A0 =C2=A0(*sox_globals.output_messa= ge_handler)(level,filename,fmt,ap); \
=C2=A0 =C2=A0va_end(ap); \
=C2= =A0}
=C2=A0
diff --git a/src/mp3.c b/src/mp3.c
index 1fd144d1..552= ab0db 100644
--- a/src/mp3.c
+++ b/src/mp3.c
@@ -680,26 +680,17 @@= static int startread(sox_format_t * ft)
=C2=A0
=C2=A0static void err= orf(const char* fmt, va_list va)
=C2=A0{
- =C2=A0sox_globals.subsyste= m=3D__FILE__;
- =C2=A0if (sox_globals.output_message_handler)
- =C2= =A0 =C2=A0(*sox_globals.output_message_handler)(1,sox_globals.subsystem,fmt= ,va);
- =C2=A0return;
+ =C2=A0lsx_fail(fmt, va);
=C2=A0}
=C2=A0=
=C2=A0static void debugf(const char* fmt, va_list va)
=C2=A0{
- = =C2=A0sox_globals.subsystem=3D__FILE__;
- =C2=A0if (sox_globals.output_m= essage_handler)
- =C2=A0 =C2=A0(*sox_globals.output_message_handler)(4,s= ox_globals.subsystem,fmt,va);
- =C2=A0return;
+ =C2=A0lsx_debug(fmt, = va);
=C2=A0}
=C2=A0
=C2=A0static void msgf(const char* fmt, va_lis= t va)
=C2=A0{
- =C2=A0sox_globals.subsystem=3D__FILE__;
- =C2=A0if= (sox_globals.output_message_handler)
- =C2=A0 =C2=A0(*sox_globals.outpu= t_message_handler)(3,sox_globals.subsystem,fmt,va);
- =C2=A0return;
+= =C2=A0lsx_report(fmt, va);
=C2=A0}
=C2=A0
=C2=A0/* These function= s are considered optional. If they aren't present in the
diff --git = a/src/sox.h b/src/sox.h
index bac50354..b9cd9754 100644
--- a/src/sox= .h
+++ b/src/sox.h
@@ -79,14 +79,14 @@ the variable being unused (esp= ecially in macro-generated code).
=C2=A0
=C2=A0/**
=C2=A0Plugins A= PI:
-LSX_PRINTF12: Attribute applied to a function to indicate that it r= equires
-a printf-style format string for arg1 and that printf parameter= s start at
-arg2.
+LSX_PRINTF23: Attribute applied to a function to i= ndicate that it requires
+a printf-style format string for arg2 and that= printf parameters start at
+arg3.
=C2=A0*/
=C2=A0#ifdef __GNUC__<= br>-#define LSX_PRINTF12 =C2=A0__attribute__ ((format (printf, 1, 2))) /* F= unction has printf-style arguments. */
+#define LSX_PRINTF23 =C2=A0__att= ribute__ ((format (printf, 2, 3))) /* Function has printf-style arguments. = */
=C2=A0#else
-#define LSX_PRINTF12 /* Function has printf-style arg= uments. */
+#define LSX_PRINTF23 /* Function has printf-style arguments.= */
=C2=A0#endif
=C2=A0
=C2=A0/**
@@ -1330,7 +1330,7 @@ typedef= struct sox_globals_t {
=C2=A0
=C2=A0 =C2=A0char const * stdin_in_use= _by; =C2=A0/**< Private: tracks the name of the handler currently using = stdin */
=C2=A0 =C2=A0char const * stdout_in_use_by; /**< Private: tr= acks the name of the handler currently using stdout */
- =C2=A0char cons= t * subsystem; =C2=A0 =C2=A0 =C2=A0 =C2=A0/**< Private: tracks the name = of the handler currently writing an output message */
+ =C2=A0char const= * subsystem; =C2=A0 =C2=A0 =C2=A0 =C2=A0/**< Deprecated, Private: track= s the name of the handler currently writing an output message */
=C2=A0 = =C2=A0char =C2=A0 =C2=A0 =C2=A0 * tmp_path; =C2=A0 =C2=A0 =C2=A0 =C2=A0 /**= < Private: client-configured path to use for temporary files */
=C2= =A0 =C2=A0sox_bool =C2=A0 =C2=A0 use_magic; =C2=A0 =C2=A0 =C2=A0 =C2=A0/**&= lt; Private: true if client has requested use of 'magic' file-type = detection */
=C2=A0 =C2=A0sox_bool =C2=A0 =C2=A0 use_threads; =C2=A0 =C2= =A0 =C2=A0/**< Private: true if client has requested parallel effects pr= ocessing */
@@ -2273,9 +2273,10 @@ Print a fatal error in libSoX.
=C2= =A0void
=C2=A0LSX_API
=C2=A0lsx_fail_impl(
+ =C2=A0 =C2=A0LSX_PARA= M_IN_Z char const * filename, /**< Source code __FILE__ from which messa= ge originates. */
=C2=A0 =C2=A0 =C2=A0LSX_PARAM_IN_PRINTF char const * f= mt, /**< printf-style format string. */
=C2=A0 =C2=A0 =C2=A0...)
-= =C2=A0 =C2=A0LSX_PRINTF12;
+ =C2=A0 =C2=A0LSX_PRINTF23;
=C2=A0
= =C2=A0/**
=C2=A0Plugins API:
@@ -2284,9 +2285,10 @@ Print a warning i= n libSoX.
=C2=A0void
=C2=A0LSX_API
=C2=A0lsx_warn_impl(
+ =C2= =A0 =C2=A0LSX_PARAM_IN_Z char const * filename, /**< Source code __FILE_= _ from which message originates. */
=C2=A0 =C2=A0 =C2=A0LSX_PARAM_IN_PRI= NTF char const * fmt, /**< printf-style format string. */
=C2=A0 =C2= =A0 =C2=A0...)
- =C2=A0 =C2=A0LSX_PRINTF12;
+ =C2=A0 =C2=A0LSX_PRINTF= 23;
=C2=A0
=C2=A0/**
=C2=A0Plugins API:
@@ -2295,9 +2297,10 @@ = Print an informational message in libSoX.
=C2=A0void
=C2=A0LSX_API=C2=A0lsx_report_impl(
+ =C2=A0 =C2=A0LSX_PARAM_IN_Z char const * filen= ame, /**< Source code __FILE__ from which message originates. */
=C2= =A0 =C2=A0 =C2=A0LSX_PARAM_IN_PRINTF char const * fmt, /**< printf-style= format string. */
=C2=A0 =C2=A0 =C2=A0...)
- =C2=A0 =C2=A0LSX_PRINTF= 12;
+ =C2=A0 =C2=A0LSX_PRINTF23;
=C2=A0
=C2=A0/**
=C2=A0Plugins= API:
@@ -2306,33 +2309,34 @@ Print a debug message in libSoX.
=C2=A0= void
=C2=A0LSX_API
=C2=A0lsx_debug_impl(
+ =C2=A0 =C2=A0LSX_PARAM_= IN_Z char const * filename, /**< Source code __FILE__ from which message= originates. */
=C2=A0 =C2=A0 =C2=A0LSX_PARAM_IN_PRINTF char const * fmt= , /**< printf-style format string. */
=C2=A0 =C2=A0 =C2=A0...)
- = =C2=A0 =C2=A0LSX_PRINTF12;
+ =C2=A0 =C2=A0LSX_PRINTF23;
=C2=A0
=C2= =A0/**
=C2=A0Plugins API:
=C2=A0Report a fatal error in libSoX; print= f-style arguments must follow.
=C2=A0*/
-#define lsx_fail =C2=A0 =C2= =A0 =C2=A0 sox_get_globals()->subsystem=3D__FILE__,lsx_fail_impl
+#de= fine lsx_fail(...) =C2=A0 =C2=A0 =C2=A0 lsx_fail_impl(__FILE__, __VA_ARGS__= )
=C2=A0
=C2=A0/**
=C2=A0Plugins API:
=C2=A0Report a warning in= libSoX; printf-style arguments must follow.
=C2=A0*/
-#define lsx_wa= rn =C2=A0 =C2=A0 =C2=A0 sox_get_globals()->subsystem=3D__FILE__,lsx_warn= _impl
+#define lsx_warn(...) =C2=A0 =C2=A0 =C2=A0 lsx_warn_impl(__FILE__= , __VA_ARGS__)
=C2=A0
=C2=A0/**
=C2=A0Plugins API:
=C2=A0Report= an informational message in libSoX; printf-style arguments must follow.=C2=A0*/
-#define lsx_report =C2=A0 =C2=A0 sox_get_globals()->subsys= tem=3D__FILE__,lsx_report_impl
+#define lsx_report(...) =C2=A0 =C2=A0 ls= x_report_impl(__FILE__, __VA_ARGS__)
=C2=A0
=C2=A0/**
=C2=A0Plugin= s API:
=C2=A0Report a debug message in libSoX; printf-style arguments mu= st follow.
=C2=A0*/
-#define lsx_debug =C2=A0 =C2=A0 =C2=A0sox_get_gl= obals()->subsystem=3D__FILE__,lsx_debug_impl
+#define lsx_debug(...) = =C2=A0 =C2=A0 =C2=A0lsx_debug_impl(__FILE__, __VA_ARGS__)
=C2=A0
=C2= =A0/**
=C2=A0Plugins API:
diff --git a/src/sox_i.h b/src/sox_i.h
i= ndex c8552f97..c843556c 100644
--- a/src/sox_i.h
+++ b/src/sox_i.h@@ -31,10 +31,10 @@
=C2=A0#undef lsx_fail
=C2=A0#undef lsx_report=C2=A0#undef lsx_warn
-#define lsx_debug sox_globals.subsystem=3Deffp-&= gt;handler.name,lsx_debug_impl
-#def= ine lsx_fail sox_globals.subsystem=3Deffp->handler.name,lsx_fail_impl
-#define lsx_report sox_globals.subsys= tem=3Deffp->handler.name,lsx_report_= impl
-#define lsx_warn sox_globals.subsystem=3Deffp->handler.name,lsx_warn_impl
+#define lsx_debug(...) l= sx_debug_impl(effp->handler.name, __= VA_ARGS__)
+#define lsx_fail(...) lsx_fail_impl(effp->handler.name, __VA_ARGS__)
+#define lsx_report(...)= lsx_report_impl(effp->handler.name,= __VA_ARGS__)
+#define lsx_warn(...) lsx_warn_impl(effp->handler.name, __VA_ARGS__)
=C2=A0#endif
=C2= =A0
=C2=A0#define RANQD1 ranqd1(sox_globals.ranqd1)
@@ -56,11 +56,11 = @@ assert_static(sizeof(off_t) =3D=3D _FILE_OFFSET_BITS >> 3, OFF_T_B= UILD_PROBLEM);
=C2=A0
=C2=A0FILE * lsx_tmpfile(void);
=C2=A0
-v= oid lsx_debug_more_impl(char const * fmt, ...) LSX_PRINTF12;
-void lsx_d= ebug_most_impl(char const * fmt, ...) LSX_PRINTF12;
+void lsx_debug_more= _impl(LSX_PARAM_IN_Z char const * filename, LSX_PARAM_IN_PRINTF char const = * fmt, ...) LSX_PRINTF23;
+void lsx_debug_most_impl(LSX_PARAM_IN_Z char = const * filename, LSX_PARAM_IN_PRINTF char const * fmt, ...) LSX_PRINTF23;<= br>=C2=A0
-#define lsx_debug_more sox_get_globals()->subsystem=3D__FI= LE__,lsx_debug_more_impl
-#define lsx_debug_most sox_get_globals()->s= ubsystem=3D__FILE__,lsx_debug_most_impl
+#define lsx_debug_more(...) lsx= _debug_more_impl(__FILE__, __VA_ARGS__)
+#define lsx_debug_most(...) lsx= _debug_most_impl(__FILE__, __VA_ARGS__)
=C2=A0
=C2=A0/* Digitise one = cycle of a wave and store it as
=C2=A0 * a table of samples of a specifi= ed data-type.
--
2.33.0.153.gba50c8fa24-goog

--000000000000856fa505cb81a98b-- --000000000000856fa805cb81a98d Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Make-logging-thread-friendly.patch" Content-Disposition: attachment; filename="0001-Make-logging-thread-friendly.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ktby3ziz0 RnJvbSAzYmU4MjI2YzhjYTJiNGYyOWI2OTI3NTgzNjQxY2IwOGVmMzlkZGRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiTWQuIEVuemFtIEhvc3NhaW4iIDxlbnphbUBnb29nbGUuY29t PgpEYXRlOiBXZWQsIDggU2VwIDIwMjEgMTI6MDM6MDIgLTA3MDAKU3ViamVjdDogW1BBVENIXSBN YWtlIGxvZ2dpbmcgdGhyZWFkIGZyaWVuZGx5LgoKSWYgbXVsdGlwbGUgdGhyZWFkcyB0cmllcyB0 byBsb2cgdG9nZXRoZXIsIHRoZSBzdWJzeXN0ZW0gbWF5IGdldApvdmVyd3JpdHRlbiBieSBlYWNo IG90aGVyLgpSZW1vdmUgdGhlIGRlcGVuZGVuY3kgb24gdGhlIGdsb2JhbCBwYXJhbWV0ZXIuCi0t LQogc3JjL2xpYnNveC5jIHwgIDQgKystLQogc3JjL21wMy5jICAgIHwgMTUgKysrLS0tLS0tLS0t LS0tCiBzcmMvc294LmggICAgfCAzMiArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQog c3JjL3NveF9pLmggIHwgMTYgKysrKysrKystLS0tLS0tLQogNCBmaWxlcyBjaGFuZ2VkLCAzMSBp bnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvbGlic294LmMg Yi9zcmMvbGlic294LmMKaW5kZXggOGU5ZWJhZDYuLjZmYzBlYzQxIDEwMDY0NAotLS0gYS9zcmMv bGlic294LmMKKysrIGIvc3JjL2xpYnNveC5jCkBAIC0xOTUsMTEgKzE5NSwxMSBAQCBzaXplX3Qg c294X2Jhc2VuYW1lKGNoYXIgKiBiYXNlX2J1ZmZlciwgc2l6ZV90IGJhc2VfYnVmZmVyX2xlbiwg Y29uc3QgY2hhciAqIGZpbAogfQogCiAjZGVmaW5lIFNPWF9NRVNTQUdFX0ZVTkNUSU9OKG5hbWUs bGV2ZWwpIFwKLXZvaWQgbmFtZShjaGFyIGNvbnN0ICogZm10LCAuLi4pIHsgXAordm9pZCBuYW1l KGNoYXIgY29uc3QgKiBmaWxlbmFtZSwgY2hhciBjb25zdCAqIGZtdCwgLi4uKSB7IFwKICAgdmFf bGlzdCBhcDsgXAogICB2YV9zdGFydChhcCwgZm10KTsgXAogICBpZiAoc294X2dsb2JhbHMub3V0 cHV0X21lc3NhZ2VfaGFuZGxlcikgXAotICAgICgqc294X2dsb2JhbHMub3V0cHV0X21lc3NhZ2Vf aGFuZGxlcikobGV2ZWwsc294X2dsb2JhbHMuc3Vic3lzdGVtLGZtdCxhcCk7IFwKKyAgICAoKnNv eF9nbG9iYWxzLm91dHB1dF9tZXNzYWdlX2hhbmRsZXIpKGxldmVsLGZpbGVuYW1lLGZtdCxhcCk7 IFwKICAgdmFfZW5kKGFwKTsgXAogfQogCmRpZmYgLS1naXQgYS9zcmMvbXAzLmMgYi9zcmMvbXAz LmMKaW5kZXggMWZkMTQ0ZDEuLjU1MmFiMGRiIDEwMDY0NAotLS0gYS9zcmMvbXAzLmMKKysrIGIv c3JjL21wMy5jCkBAIC02ODAsMjYgKzY4MCwxNyBAQCBzdGF0aWMgaW50IHN0YXJ0cmVhZChzb3hf Zm9ybWF0X3QgKiBmdCkKIAogc3RhdGljIHZvaWQgZXJyb3JmKGNvbnN0IGNoYXIqIGZtdCwgdmFf bGlzdCB2YSkKIHsKLSAgc294X2dsb2JhbHMuc3Vic3lzdGVtPV9fRklMRV9fOwotICBpZiAoc294 X2dsb2JhbHMub3V0cHV0X21lc3NhZ2VfaGFuZGxlcikKLSAgICAoKnNveF9nbG9iYWxzLm91dHB1 dF9tZXNzYWdlX2hhbmRsZXIpKDEsc294X2dsb2JhbHMuc3Vic3lzdGVtLGZtdCx2YSk7Ci0gIHJl dHVybjsKKyAgbHN4X2ZhaWwoZm10LCB2YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGRlYnVnZihjb25z dCBjaGFyKiBmbXQsIHZhX2xpc3QgdmEpCiB7Ci0gIHNveF9nbG9iYWxzLnN1YnN5c3RlbT1fX0ZJ TEVfXzsKLSAgaWYgKHNveF9nbG9iYWxzLm91dHB1dF9tZXNzYWdlX2hhbmRsZXIpCi0gICAgKCpz b3hfZ2xvYmFscy5vdXRwdXRfbWVzc2FnZV9oYW5kbGVyKSg0LHNveF9nbG9iYWxzLnN1YnN5c3Rl bSxmbXQsdmEpOwotICByZXR1cm47CisgIGxzeF9kZWJ1ZyhmbXQsIHZhKTsKIH0KIAogc3RhdGlj IHZvaWQgbXNnZihjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgdmEpCiB7Ci0gIHNveF9nbG9iYWxz LnN1YnN5c3RlbT1fX0ZJTEVfXzsKLSAgaWYgKHNveF9nbG9iYWxzLm91dHB1dF9tZXNzYWdlX2hh bmRsZXIpCi0gICAgKCpzb3hfZ2xvYmFscy5vdXRwdXRfbWVzc2FnZV9oYW5kbGVyKSgzLHNveF9n bG9iYWxzLnN1YnN5c3RlbSxmbXQsdmEpOwotICByZXR1cm47CisgIGxzeF9yZXBvcnQoZm10LCB2 YSk7CiB9CiAKIC8qIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY29uc2lkZXJlZCBvcHRpb25hbC4gSWYg dGhleSBhcmVuJ3QgcHJlc2VudCBpbiB0aGUKZGlmZiAtLWdpdCBhL3NyYy9zb3guaCBiL3NyYy9z b3guaAppbmRleCBiYWM1MDM1NC4uYjljZDk3NTQgMTAwNjQ0Ci0tLSBhL3NyYy9zb3guaAorKysg Yi9zcmMvc294LmgKQEAgLTc5LDE0ICs3OSwxNCBAQCB0aGUgdmFyaWFibGUgYmVpbmcgdW51c2Vk IChlc3BlY2lhbGx5IGluIG1hY3JvLWdlbmVyYXRlZCBjb2RlKS4KIAogLyoqCiBQbHVnaW5zIEFQ SToKLUxTWF9QUklOVEYxMjogQXR0cmlidXRlIGFwcGxpZWQgdG8gYSBmdW5jdGlvbiB0byBpbmRp Y2F0ZSB0aGF0IGl0IHJlcXVpcmVzCi1hIHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nIGZvciBh cmcxIGFuZCB0aGF0IHByaW50ZiBwYXJhbWV0ZXJzIHN0YXJ0IGF0Ci1hcmcyLgorTFNYX1BSSU5U RjIzOiBBdHRyaWJ1dGUgYXBwbGllZCB0byBhIGZ1bmN0aW9uIHRvIGluZGljYXRlIHRoYXQgaXQg cmVxdWlyZXMKK2EgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmcgZm9yIGFyZzIgYW5kIHRoYXQg cHJpbnRmIHBhcmFtZXRlcnMgc3RhcnQgYXQKK2FyZzMuCiAqLwogI2lmZGVmIF9fR05VQ19fCi0j ZGVmaW5lIExTWF9QUklOVEYxMiAgX19hdHRyaWJ1dGVfXyAoKGZvcm1hdCAocHJpbnRmLCAxLCAy KSkpIC8qIEZ1bmN0aW9uIGhhcyBwcmludGYtc3R5bGUgYXJndW1lbnRzLiAqLworI2RlZmluZSBM U1hfUFJJTlRGMjMgIF9fYXR0cmlidXRlX18gKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKSAvKiBG dW5jdGlvbiBoYXMgcHJpbnRmLXN0eWxlIGFyZ3VtZW50cy4gKi8KICNlbHNlCi0jZGVmaW5lIExT WF9QUklOVEYxMiAvKiBGdW5jdGlvbiBoYXMgcHJpbnRmLXN0eWxlIGFyZ3VtZW50cy4gKi8KKyNk ZWZpbmUgTFNYX1BSSU5URjIzIC8qIEZ1bmN0aW9uIGhhcyBwcmludGYtc3R5bGUgYXJndW1lbnRz LiAqLwogI2VuZGlmCiAKIC8qKgpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgdHlwZWRlZiBzdHJ1Y3Qg c294X2dsb2JhbHNfdCB7CiAKICAgY2hhciBjb25zdCAqIHN0ZGluX2luX3VzZV9ieTsgIC8qKjwg UHJpdmF0ZTogdHJhY2tzIHRoZSBuYW1lIG9mIHRoZSBoYW5kbGVyIGN1cnJlbnRseSB1c2luZyBz dGRpbiAqLwogICBjaGFyIGNvbnN0ICogc3Rkb3V0X2luX3VzZV9ieTsgLyoqPCBQcml2YXRlOiB0 cmFja3MgdGhlIG5hbWUgb2YgdGhlIGhhbmRsZXIgY3VycmVudGx5IHVzaW5nIHN0ZG91dCAqLwot ICBjaGFyIGNvbnN0ICogc3Vic3lzdGVtOyAgICAgICAgLyoqPCBQcml2YXRlOiB0cmFja3MgdGhl IG5hbWUgb2YgdGhlIGhhbmRsZXIgY3VycmVudGx5IHdyaXRpbmcgYW4gb3V0cHV0IG1lc3NhZ2Ug Ki8KKyAgY2hhciBjb25zdCAqIHN1YnN5c3RlbTsgICAgICAgIC8qKjwgRGVwcmVjYXRlZCwgUHJp dmF0ZTogdHJhY2tzIHRoZSBuYW1lIG9mIHRoZSBoYW5kbGVyIGN1cnJlbnRseSB3cml0aW5nIGFu IG91dHB1dCBtZXNzYWdlICovCiAgIGNoYXIgICAgICAgKiB0bXBfcGF0aDsgICAgICAgICAvKio8 IFByaXZhdGU6IGNsaWVudC1jb25maWd1cmVkIHBhdGggdG8gdXNlIGZvciB0ZW1wb3JhcnkgZmls ZXMgKi8KICAgc294X2Jvb2wgICAgIHVzZV9tYWdpYzsgICAgICAgIC8qKjwgUHJpdmF0ZTogdHJ1 ZSBpZiBjbGllbnQgaGFzIHJlcXVlc3RlZCB1c2Ugb2YgJ21hZ2ljJyBmaWxlLXR5cGUgZGV0ZWN0 aW9uICovCiAgIHNveF9ib29sICAgICB1c2VfdGhyZWFkczsgICAgICAvKio8IFByaXZhdGU6IHRy dWUgaWYgY2xpZW50IGhhcyByZXF1ZXN0ZWQgcGFyYWxsZWwgZWZmZWN0cyBwcm9jZXNzaW5nICov CkBAIC0yMjczLDkgKzIyNzMsMTAgQEAgUHJpbnQgYSBmYXRhbCBlcnJvciBpbiBsaWJTb1guCiB2 b2lkCiBMU1hfQVBJCiBsc3hfZmFpbF9pbXBsKAorICAgIExTWF9QQVJBTV9JTl9aIGNoYXIgY29u c3QgKiBmaWxlbmFtZSwgLyoqPCBTb3VyY2UgY29kZSBfX0ZJTEVfXyBmcm9tIHdoaWNoIG1lc3Nh Z2Ugb3JpZ2luYXRlcy4gKi8KICAgICBMU1hfUEFSQU1fSU5fUFJJTlRGIGNoYXIgY29uc3QgKiBm bXQsIC8qKjwgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmcuICovCiAgICAgLi4uKQotICAgIExT WF9QUklOVEYxMjsKKyAgICBMU1hfUFJJTlRGMjM7CiAKIC8qKgogUGx1Z2lucyBBUEk6CkBAIC0y Mjg0LDkgKzIyODUsMTAgQEAgUHJpbnQgYSB3YXJuaW5nIGluIGxpYlNvWC4KIHZvaWQKIExTWF9B UEkKIGxzeF93YXJuX2ltcGwoCisgICAgTFNYX1BBUkFNX0lOX1ogY2hhciBjb25zdCAqIGZpbGVu YW1lLCAvKio8IFNvdXJjZSBjb2RlIF9fRklMRV9fIGZyb20gd2hpY2ggbWVzc2FnZSBvcmlnaW5h dGVzLiAqLwogICAgIExTWF9QQVJBTV9JTl9QUklOVEYgY2hhciBjb25zdCAqIGZtdCwgLyoqPCBw cmludGYtc3R5bGUgZm9ybWF0IHN0cmluZy4gKi8KICAgICAuLi4pCi0gICAgTFNYX1BSSU5URjEy OworICAgIExTWF9QUklOVEYyMzsKIAogLyoqCiBQbHVnaW5zIEFQSToKQEAgLTIyOTUsOSArMjI5 NywxMCBAQCBQcmludCBhbiBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UgaW4gbGliU29YLgogdm9pZAog TFNYX0FQSQogbHN4X3JlcG9ydF9pbXBsKAorICAgIExTWF9QQVJBTV9JTl9aIGNoYXIgY29uc3Qg KiBmaWxlbmFtZSwgLyoqPCBTb3VyY2UgY29kZSBfX0ZJTEVfXyBmcm9tIHdoaWNoIG1lc3NhZ2Ug b3JpZ2luYXRlcy4gKi8KICAgICBMU1hfUEFSQU1fSU5fUFJJTlRGIGNoYXIgY29uc3QgKiBmbXQs IC8qKjwgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmcuICovCiAgICAgLi4uKQotICAgIExTWF9Q UklOVEYxMjsKKyAgICBMU1hfUFJJTlRGMjM7CiAKIC8qKgogUGx1Z2lucyBBUEk6CkBAIC0yMzA2 LDMzICsyMzA5LDM0IEBAIFByaW50IGEgZGVidWcgbWVzc2FnZSBpbiBsaWJTb1guCiB2b2lkCiBM U1hfQVBJCiBsc3hfZGVidWdfaW1wbCgKKyAgICBMU1hfUEFSQU1fSU5fWiBjaGFyIGNvbnN0ICog ZmlsZW5hbWUsIC8qKjwgU291cmNlIGNvZGUgX19GSUxFX18gZnJvbSB3aGljaCBtZXNzYWdlIG9y aWdpbmF0ZXMuICovCiAgICAgTFNYX1BBUkFNX0lOX1BSSU5URiBjaGFyIGNvbnN0ICogZm10LCAv Kio8IHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nLiAqLwogICAgIC4uLikKLSAgICBMU1hfUFJJ TlRGMTI7CisgICAgTFNYX1BSSU5URjIzOwogCiAvKioKIFBsdWdpbnMgQVBJOgogUmVwb3J0IGEg ZmF0YWwgZXJyb3IgaW4gbGliU29YOyBwcmludGYtc3R5bGUgYXJndW1lbnRzIG11c3QgZm9sbG93 LgogKi8KLSNkZWZpbmUgbHN4X2ZhaWwgICAgICAgc294X2dldF9nbG9iYWxzKCktPnN1YnN5c3Rl bT1fX0ZJTEVfXyxsc3hfZmFpbF9pbXBsCisjZGVmaW5lIGxzeF9mYWlsKC4uLikgICAgICAgbHN4 X2ZhaWxfaW1wbChfX0ZJTEVfXywgX19WQV9BUkdTX18pCiAKIC8qKgogUGx1Z2lucyBBUEk6CiBS ZXBvcnQgYSB3YXJuaW5nIGluIGxpYlNvWDsgcHJpbnRmLXN0eWxlIGFyZ3VtZW50cyBtdXN0IGZv bGxvdy4KICovCi0jZGVmaW5lIGxzeF93YXJuICAgICAgIHNveF9nZXRfZ2xvYmFscygpLT5zdWJz eXN0ZW09X19GSUxFX18sbHN4X3dhcm5faW1wbAorI2RlZmluZSBsc3hfd2FybiguLi4pICAgICAg IGxzeF93YXJuX2ltcGwoX19GSUxFX18sIF9fVkFfQVJHU19fKQogCiAvKioKIFBsdWdpbnMgQVBJ OgogUmVwb3J0IGFuIGluZm9ybWF0aW9uYWwgbWVzc2FnZSBpbiBsaWJTb1g7IHByaW50Zi1zdHls ZSBhcmd1bWVudHMgbXVzdCBmb2xsb3cuCiAqLwotI2RlZmluZSBsc3hfcmVwb3J0ICAgICBzb3hf Z2V0X2dsb2JhbHMoKS0+c3Vic3lzdGVtPV9fRklMRV9fLGxzeF9yZXBvcnRfaW1wbAorI2RlZmlu ZSBsc3hfcmVwb3J0KC4uLikgICAgIGxzeF9yZXBvcnRfaW1wbChfX0ZJTEVfXywgX19WQV9BUkdT X18pCiAKIC8qKgogUGx1Z2lucyBBUEk6CiBSZXBvcnQgYSBkZWJ1ZyBtZXNzYWdlIGluIGxpYlNv WDsgcHJpbnRmLXN0eWxlIGFyZ3VtZW50cyBtdXN0IGZvbGxvdy4KICovCi0jZGVmaW5lIGxzeF9k ZWJ1ZyAgICAgIHNveF9nZXRfZ2xvYmFscygpLT5zdWJzeXN0ZW09X19GSUxFX18sbHN4X2RlYnVn X2ltcGwKKyNkZWZpbmUgbHN4X2RlYnVnKC4uLikgICAgICBsc3hfZGVidWdfaW1wbChfX0ZJTEVf XywgX19WQV9BUkdTX18pCiAKIC8qKgogUGx1Z2lucyBBUEk6CmRpZmYgLS1naXQgYS9zcmMvc294 X2kuaCBiL3NyYy9zb3hfaS5oCmluZGV4IGM4NTUyZjk3Li5jODQzNTU2YyAxMDA2NDQKLS0tIGEv c3JjL3NveF9pLmgKKysrIGIvc3JjL3NveF9pLmgKQEAgLTMxLDEwICszMSwxMCBAQAogI3VuZGVm IGxzeF9mYWlsCiAjdW5kZWYgbHN4X3JlcG9ydAogI3VuZGVmIGxzeF93YXJuCi0jZGVmaW5lIGxz eF9kZWJ1ZyBzb3hfZ2xvYmFscy5zdWJzeXN0ZW09ZWZmcC0+aGFuZGxlci5uYW1lLGxzeF9kZWJ1 Z19pbXBsCi0jZGVmaW5lIGxzeF9mYWlsIHNveF9nbG9iYWxzLnN1YnN5c3RlbT1lZmZwLT5oYW5k bGVyLm5hbWUsbHN4X2ZhaWxfaW1wbAotI2RlZmluZSBsc3hfcmVwb3J0IHNveF9nbG9iYWxzLnN1 YnN5c3RlbT1lZmZwLT5oYW5kbGVyLm5hbWUsbHN4X3JlcG9ydF9pbXBsCi0jZGVmaW5lIGxzeF93 YXJuIHNveF9nbG9iYWxzLnN1YnN5c3RlbT1lZmZwLT5oYW5kbGVyLm5hbWUsbHN4X3dhcm5faW1w bAorI2RlZmluZSBsc3hfZGVidWcoLi4uKSBsc3hfZGVidWdfaW1wbChlZmZwLT5oYW5kbGVyLm5h bWUsIF9fVkFfQVJHU19fKQorI2RlZmluZSBsc3hfZmFpbCguLi4pIGxzeF9mYWlsX2ltcGwoZWZm cC0+aGFuZGxlci5uYW1lLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgbHN4X3JlcG9ydCguLi4pIGxz eF9yZXBvcnRfaW1wbChlZmZwLT5oYW5kbGVyLm5hbWUsIF9fVkFfQVJHU19fKQorI2RlZmluZSBs c3hfd2FybiguLi4pIGxzeF93YXJuX2ltcGwoZWZmcC0+aGFuZGxlci5uYW1lLCBfX1ZBX0FSR1Nf XykKICNlbmRpZgogCiAjZGVmaW5lIFJBTlFEMSByYW5xZDEoc294X2dsb2JhbHMucmFucWQxKQpA QCAtNTYsMTEgKzU2LDExIEBAIGFzc2VydF9zdGF0aWMoc2l6ZW9mKG9mZl90KSA9PSBfRklMRV9P RkZTRVRfQklUUyA+PiAzLCBPRkZfVF9CVUlMRF9QUk9CTEVNKTsKIAogRklMRSAqIGxzeF90bXBm aWxlKHZvaWQpOwogCi12b2lkIGxzeF9kZWJ1Z19tb3JlX2ltcGwoY2hhciBjb25zdCAqIGZtdCwg Li4uKSBMU1hfUFJJTlRGMTI7Ci12b2lkIGxzeF9kZWJ1Z19tb3N0X2ltcGwoY2hhciBjb25zdCAq IGZtdCwgLi4uKSBMU1hfUFJJTlRGMTI7Cit2b2lkIGxzeF9kZWJ1Z19tb3JlX2ltcGwoTFNYX1BB UkFNX0lOX1ogY2hhciBjb25zdCAqIGZpbGVuYW1lLCBMU1hfUEFSQU1fSU5fUFJJTlRGIGNoYXIg Y29uc3QgKiBmbXQsIC4uLikgTFNYX1BSSU5URjIzOwordm9pZCBsc3hfZGVidWdfbW9zdF9pbXBs KExTWF9QQVJBTV9JTl9aIGNoYXIgY29uc3QgKiBmaWxlbmFtZSwgTFNYX1BBUkFNX0lOX1BSSU5U RiBjaGFyIGNvbnN0ICogZm10LCAuLi4pIExTWF9QUklOVEYyMzsKIAotI2RlZmluZSBsc3hfZGVi dWdfbW9yZSBzb3hfZ2V0X2dsb2JhbHMoKS0+c3Vic3lzdGVtPV9fRklMRV9fLGxzeF9kZWJ1Z19t b3JlX2ltcGwKLSNkZWZpbmUgbHN4X2RlYnVnX21vc3Qgc294X2dldF9nbG9iYWxzKCktPnN1YnN5 c3RlbT1fX0ZJTEVfXyxsc3hfZGVidWdfbW9zdF9pbXBsCisjZGVmaW5lIGxzeF9kZWJ1Z19tb3Jl KC4uLikgbHN4X2RlYnVnX21vcmVfaW1wbChfX0ZJTEVfXywgX19WQV9BUkdTX18pCisjZGVmaW5l IGxzeF9kZWJ1Z19tb3N0KC4uLikgbHN4X2RlYnVnX21vc3RfaW1wbChfX0ZJTEVfXywgX19WQV9B UkdTX18pCiAKIC8qIERpZ2l0aXNlIG9uZSBjeWNsZSBvZiBhIHdhdmUgYW5kIHN0b3JlIGl0IGFz CiAgKiBhIHRhYmxlIG9mIHNhbXBsZXMgb2YgYSBzcGVjaWZpZWQgZGF0YS10eXBlLgotLSAKMi4z My4wLjE1My5nYmE1MGM4ZmEyNC1nb29nCgo= --000000000000856fa805cb81a98d Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline --000000000000856fa805cb81a98d Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ SoX-devel mailing list SoX-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sox-devel --000000000000856fa805cb81a98d--