From patchwork Fri May 2 10:16:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Tremer X-Patchwork-Id: 8690 Return-Path: Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R10" (verified OK)) by web04.haj.ipfire.org (Postfix) with ESMTPS id 4Zpn1B4SK6z3xTJ for ; Fri, 2 May 2025 10:17:50 +0000 (UTC) Received: from mail02.haj.ipfire.org (mail02.haj.ipfire.org [172.28.1.201]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature ECDSA (secp384r1)) (Client CN "mail02.haj.ipfire.org", Issuer "E5" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4Zpn0z13bVz6F5 for ; Fri, 2 May 2025 10:17:39 +0000 (UTC) Received: from mail02.haj.ipfire.org (localhost [127.0.0.1]) by mail02.haj.ipfire.org (Postfix) with ESMTP id 4Zpn0K6H8tz38Mm for ; Fri, 2 May 2025 10:17:05 +0000 (UTC) X-Original-To: development@lists.ipfire.org Received: from mail01.ipfire.org (mail01.haj.ipfire.org [172.28.1.202]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) client-signature RSA-PSS (4096 bits)) (Client CN "mail01.haj.ipfire.org", Issuer "R10" (verified OK)) by mail02.haj.ipfire.org (Postfix) with ESMTPS id 4Zpmzz20sdz34LP for ; Fri, 2 May 2025 10:16:47 +0000 (UTC) Received: from michael.haj.ipfire.org (michael.haj.ipfire.org [172.28.1.242]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) client-signature ECDSA (secp384r1)) (Client CN "michael.haj.ipfire.org", Issuer "E6" (verified OK)) by mail01.ipfire.org (Postfix) with ESMTPS id 4Zpmzy5Vj3z370; Fri, 2 May 2025 10:16:46 +0000 (UTC) Received: by michael.haj.ipfire.org (Postfix, from userid 0) id 4Zpmzx6kNFzV5x5; Fri, 2 May 2025 10:16:45 +0000 (UTC) From: Michael Tremer To: development@lists.ipfire.org Cc: Michael Tremer Subject: [PATCH 37/42] expect: Update to 5.45.4 Date: Fri, 2 May 2025 10:16:27 +0000 Message-Id: <20250502101632.1082010-37-michael.tremer@ipfire.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250502101632.1082010-1-michael.tremer@ipfire.org> References: <20250502101632.1082010-1-michael.tremer@ipfire.org> Precedence: list List-Id: List-Subscribe: , List-Unsubscribe: , List-Post: List-Help: Sender: Mail-Followup-To: MIME-Version: 1.0 Also fix build with GCC 15. Signed-off-by: Michael Tremer --- lfs/expect | 9 +- src/patches/expect-5.45.4-gcc14-1.patch | 288 ----------------- src/patches/expect-5.45.4-gcc15-1.patch | 411 ++++++++++++++++++++++++ 3 files changed, 417 insertions(+), 291 deletions(-) delete mode 100644 src/patches/expect-5.45.4-gcc14-1.patch create mode 100644 src/patches/expect-5.45.4-gcc15-1.patch diff --git a/lfs/expect b/lfs/expect index d698b3f29..e5638f9f5 100644 --- a/lfs/expect +++ b/lfs/expect @@ -24,7 +24,7 @@ include Config -VER = 5.45 +VER = 5.45.4 THISAPP = expect$(VER) DL_FILE = $(THISAPP).tar.gz @@ -32,6 +32,9 @@ DL_FROM = $(URL_IPFIRE) DIR_APP = $(DIR_SRC)/$(THISAPP) TARGET = $(DIR_INFO)/$(THISAPP)-tools +# Fix build with GCC 15 +CFLAGS += -std=gnu17 + ############################################################################### # Top-level Rules ############################################################################### @@ -40,7 +43,7 @@ objects=$(DL_FILE) $(DL_FILE) = $(DL_FROM)/$(DL_FILE) -$(DL_FILE)_BLAKE2 = d7260d3b2ce1bcd72deef121e1f994f45bfa5397291692d794c9b8ad627d7ac183689ba00ba22f728853ac03b6b083fb6f283dc5c453aa991e04263c217be552 +$(DL_FILE)_BLAKE2 = a3a936e7644c922fdd474fa08c45926396ccce9a63e5f65f4d5e157f5160cfe4de47688734b39d13281d9548aac492810f19236e06563903d3d8081e4661048d install : $(TARGET) @@ -71,7 +74,7 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects)) @$(PREBUILD) @rm -rf $(DIR_APP) $(DIR_SRC)/tcl* && cd $(DIR_SRC) && tar zxf $(DIR_DL)/$(DL_FILE) $(UPDATE_AUTOMAKE) - cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/expect-5.45.4-gcc14-1.patch + cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/expect-5.45.4-gcc15-1.patch cd $(DIR_APP) && ./configure \ --prefix=$(TOOLS_DIR) \ --build=$(BUILDTARGET) \ diff --git a/src/patches/expect-5.45.4-gcc14-1.patch b/src/patches/expect-5.45.4-gcc14-1.patch deleted file mode 100644 index e2a34df2e..000000000 --- a/src/patches/expect-5.45.4-gcc14-1.patch +++ /dev/null @@ -1,288 +0,0 @@ -Submitted By: Xi Ruoyao -Date: 2024-04-07 -Initial Package Version: 5.45.4 -Upstream Status: Submitted (for a long time), but the upstream seems - inactive -Origin: Fedora & Self: - - Fedora expect-5.45.4-covscan-fixes.patch - - Fedora expect-c99.patch - - Fedora expect-configure-c99.patch - - We are directly patching configure instead of - patching configure.in like Fedora. It's - generally not a good idea, but better than - adding autoconf into chapter 7 or bloating this - patch into 100+ KiB (with a full regeneration - of the configure script). -Description: Fix some build failure caused by the pre-C99 syntax - no longer allowed by GCC 14 in the default C99 - mode. - ---- a/configure 2018-02-04 18:43:58.000000000 +0800 -+++ b/configure 2024-04-08 01:19:29.253548373 +0800 -@@ -7994,7 +7994,6 @@ - { - extern long timezone; - timezone += 1; -- exit (0); - ; - return 0; - } -@@ -8030,7 +8029,6 @@ - { - extern time_t timezone; - timezone += 1; -- exit (0); - ; - return 0; - } -@@ -8791,7 +8789,7 @@ - $as_echo_n "checking for memcpy... " >&6; } - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ -- -+#include - int - main () - { -@@ -8831,7 +8829,7 @@ - /* end confdefs.h. */ - - #include --main() { -+int main() { - #ifndef WNOHANG - return 0; - #else -@@ -8867,7 +8865,7 @@ - - #include - #include --main() { -+int main() { - #ifdef WNOHANG - FILE *fp = fopen("wnohang","w"); - fprintf(fp,"%d",WNOHANG); -@@ -8935,7 +8933,9 @@ - /* end confdefs.h. */ - - #include --#define RETSIGTYPE $retsigtype -+#include -+#include -+#include - - int signal_rearms = 0; - -@@ -8952,7 +8952,7 @@ - signal_rearms++; - } - --main() -+int main() - { - signal(SIGINT,parent_sigint_handler); - -@@ -9234,10 +9234,9 @@ - /* end confdefs.h. */ - - #include --main() -+int main() - { - struct sgttyb tmp; -- exit(0); - } - _ACEOF - if ac_fn_c_try_run "$LINENO"; then : -@@ -9274,10 +9273,9 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - #include -- main() -+ int main() - { - struct termio tmp; -- exit(0); - } - _ACEOF - if ac_fn_c_try_run "$LINENO"; then : -@@ -9312,10 +9310,9 @@ - # include - # endif - # include -- main() -+ int main() - { - struct termios tmp; -- exit(0); - } - _ACEOF - if ac_fn_c_try_run "$LINENO"; then : -@@ -9350,7 +9347,7 @@ - #include - #endif - #include --main() { -+int main() { - #if defined(TCGETS) || defined(TCGETA) - return 0; - #else -@@ -9388,7 +9385,7 @@ - #include - #endif - #include --main() { -+int main() { - #ifdef TIOCGWINSZ - return 0; - #else -@@ -9423,7 +9420,7 @@ - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - --main(){ -+int main(){ - #ifdef CRAY - return 0; - #else -@@ -9565,12 +9562,10 @@ - - extern char *tzname[2]; - extern int daylight; --main() -+int main() - { - int *x = &daylight; - char **y = tzname; -- -- exit(0); - } - _ACEOF - if ac_fn_c_try_run "$LINENO"; then : ---- a/exp_chan.c 2018-02-03 03:15:52.000000000 +0800 -+++ b/exp_chan.c 2024-04-07 21:56:43.663163369 +0800 -@@ -58,7 +58,7 @@ - - Tcl_ChannelType expChannelType = { - "exp", /* Type name. */ -- ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ -+ TCL_CHANNEL_VERSION_2, - ExpCloseProc, /* Close proc. */ - ExpInputProc, /* Input proc. */ - ExpOutputProc, /* Output proc. */ -@@ -68,6 +68,7 @@ - ExpWatchProc, /* Initialize notifier. */ - ExpGetHandleProc, /* Get OS handles out of channel. */ - NULL, /* Close2 proc */ -+ ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ - }; - - typedef struct ThreadSpecificData { - -diff -up expect5.45.4/exp_chan.c.orig expect5.45.4/exp_chan.c ---- expect5.45.4/exp_chan.c.orig 2018-02-02 20:15:52.000000000 +0100 -+++ expect5.45.4/exp_chan.c 2018-10-09 14:14:44.851965292 +0200 -@@ -51,6 +51,8 @@ static void ExpWatchProc _ANSI_ARGS_((C - int mask)); - static int ExpGetHandleProc _ANSI_ARGS_((ClientData instanceData, - int direction, ClientData *handlePtr)); -+void exp_background_channelhandler _ANSI_ARGS_((ClientData, -+ int)); - - /* - * This structure describes the channel type structure for Expect-based IO: -diff -up expect5.45.4/exp_clib.c.orig expect5.45.4/exp_clib.c ---- expect5.45.4/exp_clib.c.orig 2018-10-09 14:14:44.841965281 +0200 -+++ expect5.45.4/exp_clib.c 2018-10-09 14:14:44.873965319 +0200 -@@ -37,6 +37,14 @@ would appreciate credit if this program - # endif - #endif - -+#ifdef HAVE_UNISTD_H -+# include -+#endif -+ -+//#ifdef HAVE_SYS_WAIT_H -+# include -+//#endif -+ - #ifdef HAVE_SYS_FCNTL_H - # include - #else -@@ -2196,6 +2204,7 @@ int exp_getptyslave(); - #define sysreturn(x) return(errno = x, -1) - - void exp_init_pty(); -+void exp_init_tty(); - - /* - The following functions are linked from the Tcl library. They -@@ -2715,6 +2724,7 @@ exp_spawnl TCL_VARARGS_DEF(char *,arg1) - argv[i] = va_arg(args,char *); - if (!argv[i]) break; - } -+ va_end(args); - i = exp_spawnv(argv[0],argv+1); - free((char *)argv); - return(i); -@@ -3188,6 +3198,7 @@ exp_expectl TCL_VARARGS_DEF(int,arg1) - /* Ultrix 4.2 compiler refuses enumerations comparison!? */ - if ((int)type < 0 || (int)type >= (int)exp_bogus) { - fprintf(stderr,"bad type (set %d) in exp_expectl\n",i); -+ va_end(args); - sysreturn(EINVAL); - } - -@@ -3253,6 +3264,7 @@ exp_fexpectl TCL_VARARGS_DEF(FILE *,arg1 - /* Ultrix 4.2 compiler refuses enumerations comparison!? */ - if ((int)type < 0 || (int)type >= (int)exp_bogus) { - fprintf(stderr,"bad type (set %d) in exp_expectl\n",i); -+ va_end(args); - sysreturn(EINVAL); - } - -diff -up expect5.45.4/exp_log.c.orig expect5.45.4/exp_log.c ---- expect5.45.4/exp_log.c.orig 2018-10-09 14:14:44.838965277 +0200 -+++ expect5.45.4/exp_log.c 2018-10-09 14:14:44.852965294 +0200 -@@ -174,7 +174,10 @@ expStdoutLog TCL_VARARGS_DEF(int,arg1) - force_stdout = TCL_VARARGS_START(int,arg1,args); - fmt = va_arg(args,char *); - -- if ((!tsdPtr->logUser) && (!force_stdout) && (!tsdPtr->logAll)) return; -+ if ((!tsdPtr->logUser) && (!force_stdout) && (!tsdPtr->logAll)) { -+ va_end(args); -+ return; -+ } - - (void) vsnprintf(bigbuf,sizeof(bigbuf),fmt,args); - expDiagWriteBytes(bigbuf,-1); -diff -up expect5.45.4/exp_main_sub.c.orig expect5.45.4/exp_main_sub.c ---- expect5.45.4/exp_main_sub.c.orig 2018-10-09 14:14:44.848965289 +0200 -+++ expect5.45.4/exp_main_sub.c 2018-10-09 14:14:44.852965294 +0200 -@@ -57,6 +57,7 @@ int exp_cmdlinecmds = FALSE; - int exp_interactive = FALSE; - int exp_buffer_command_input = FALSE;/* read in entire cmdfile at once */ - int exp_fgets(); -+int exp_tty_cooked_echo(Tcl_Interp *interp, exp_tty *tty_old, int *was_raw, int *was_echo); - - Tcl_Interp *exp_interp; /* for use by signal handlers who can't figure out */ - /* the interpreter directly */ -diff -up expect5.45.4/pty_termios.c.orig expect5.45.4/pty_termios.c ---- expect5.45.4/pty_termios.c.orig 2018-10-09 14:17:00.132127498 +0200 -+++ expect5.45.4/pty_termios.c 2018-10-09 14:33:59.393315570 +0200 -@@ -105,6 +105,7 @@ with openpty which supports 4000 while p - - void expDiagLog(); - void expDiagLogPtr(); -+char *expErrnoMsg(int errorNo); - - #include - /*extern char *sys_errlist[];*/ -@@ -189,6 +190,7 @@ static char slave_name[MAXPTYNAMELEN]; - #endif /* HAVE_SCO_CLIST_PTYS */ - - #ifdef HAVE_OPENPTY -+#include - static char master_name[64]; - static char slave_name[64]; - #endif diff --git a/src/patches/expect-5.45.4-gcc15-1.patch b/src/patches/expect-5.45.4-gcc15-1.patch new file mode 100644 index 000000000..7838746c6 --- /dev/null +++ b/src/patches/expect-5.45.4-gcc15-1.patch @@ -0,0 +1,411 @@ +Submitted By: Xi Ruoyao +Date: 2025-04-21 +Initial Package Version: 5.45.4 +Upstream Status: The C99-compatibility part has been submitted + for a long time, but the upstream seems inactive. + The C23-compatibility part is not submitted. +Origin: Fedora & Self: + - Fedora expect-5.45.4-covscan-fixes.patch + - Fedora expect-c99.patch + - Fedora expect-configure-c99.patch + - We are directly patching configure instead of + patching configure.in like Fedora. It's + generally not a good idea, but better than + adding autoconf into chapter 7 or bloating this + patch into 100+ KiB (with a full regeneration + of the configure script). + - Self-made C23-compatibility fixes + - Add a parameter list for various function + declerations. +Description: Fix some build failure caused by the pre-C23 syntax + no longer allowed by GCC 15 in the default C23 + mode. + +diff --color -Naur expect5.45.4.orig/configure expect5.45.4/configure +--- expect5.45.4.orig/configure 2018-02-04 18:43:58.000000000 +0800 ++++ expect5.45.4/configure 2025-04-22 11:16:42.221990368 +0800 +@@ -7994,7 +7994,6 @@ + { + extern long timezone; + timezone += 1; +- exit (0); + ; + return 0; + } +@@ -8030,7 +8029,6 @@ + { + extern time_t timezone; + timezone += 1; +- exit (0); + ; + return 0; + } +@@ -8791,7 +8789,7 @@ + $as_echo_n "checking for memcpy... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ +- ++#include + int + main () + { +@@ -8831,7 +8829,7 @@ + /* end confdefs.h. */ + + #include +-main() { ++int main() { + #ifndef WNOHANG + return 0; + #else +@@ -8867,7 +8865,7 @@ + + #include + #include +-main() { ++int main() { + #ifdef WNOHANG + FILE *fp = fopen("wnohang","w"); + fprintf(fp,"%d",WNOHANG); +@@ -8935,7 +8933,9 @@ + /* end confdefs.h. */ + + #include +-#define RETSIGTYPE $retsigtype ++#include ++#include ++#include + + int signal_rearms = 0; + +@@ -8952,7 +8952,7 @@ + signal_rearms++; + } + +-main() ++int main() + { + signal(SIGINT,parent_sigint_handler); + +@@ -9234,10 +9234,9 @@ + /* end confdefs.h. */ + + #include +-main() ++int main() + { + struct sgttyb tmp; +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +@@ -9274,10 +9273,9 @@ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + #include +- main() ++ int main() + { + struct termio tmp; +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +@@ -9312,10 +9310,9 @@ + # include + # endif + # include +- main() ++ int main() + { + struct termios tmp; +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +@@ -9350,7 +9347,7 @@ + #include + #endif + #include +-main() { ++int main() { + #if defined(TCGETS) || defined(TCGETA) + return 0; + #else +@@ -9388,7 +9385,7 @@ + #include + #endif + #include +-main() { ++int main() { + #ifdef TIOCGWINSZ + return 0; + #else +@@ -9423,7 +9420,7 @@ + cat confdefs.h - <<_ACEOF >conftest.$ac_ext + /* end confdefs.h. */ + +-main(){ ++int main(){ + #ifdef CRAY + return 0; + #else +@@ -9565,12 +9562,10 @@ + + extern char *tzname[2]; + extern int daylight; +-main() ++int main() + { + int *x = &daylight; + char **y = tzname; +- +- exit(0); + } + _ACEOF + if ac_fn_c_try_run "$LINENO"; then : +diff --color -Naur expect5.45.4.orig/exp_chan.c expect5.45.4/exp_chan.c +--- expect5.45.4.orig/exp_chan.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_chan.c 2025-04-22 11:16:42.222758025 +0800 +@@ -51,6 +51,8 @@ + int mask)); + static int ExpGetHandleProc _ANSI_ARGS_((ClientData instanceData, + int direction, ClientData *handlePtr)); ++void exp_background_channelhandler _ANSI_ARGS_((ClientData, ++ int)); + + /* + * This structure describes the channel type structure for Expect-based IO: +@@ -58,7 +60,7 @@ + + Tcl_ChannelType expChannelType = { + "exp", /* Type name. */ +- ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ ++ TCL_CHANNEL_VERSION_2, + ExpCloseProc, /* Close proc. */ + ExpInputProc, /* Input proc. */ + ExpOutputProc, /* Output proc. */ +@@ -68,6 +70,7 @@ + ExpWatchProc, /* Initialize notifier. */ + ExpGetHandleProc, /* Get OS handles out of channel. */ + NULL, /* Close2 proc */ ++ ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ + }; + + typedef struct ThreadSpecificData { +diff --color -Naur expect5.45.4.orig/exp_clib.c expect5.45.4/exp_clib.c +--- expect5.45.4.orig/exp_clib.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_clib.c 2025-04-22 11:22:35.735989675 +0800 +@@ -37,6 +37,14 @@ + # endif + #endif + ++#ifdef HAVE_UNISTD_H ++# include ++#endif ++ ++//#ifdef HAVE_SYS_WAIT_H ++# include ++//#endif ++ + #ifdef HAVE_SYS_FCNTL_H + # include + #else +@@ -1727,13 +1735,14 @@ + int exp_loguser = TRUE; /* if TRUE, user sees interactions on stdout */ + + +-char *exp_printify(); ++char *exp_printify(char *); + int exp_getptymaster(); +-int exp_getptyslave(); ++int exp_getptyslave(int, int, CONST char *); + + #define sysreturn(x) return(errno = x, -1) + + void exp_init_pty(); ++void exp_init_tty(); + + /* + The following functions are linked from the Tcl library. They +@@ -2253,6 +2262,7 @@ + argv[i] = va_arg(args,char *); + if (!argv[i]) break; + } ++ va_end(args); + i = exp_spawnv(argv[0],argv+1); + free((char *)argv); + return(i); +@@ -2726,6 +2736,7 @@ + /* Ultrix 4.2 compiler refuses enumerations comparison!? */ + if ((int)type < 0 || (int)type >= (int)exp_bogus) { + fprintf(stderr,"bad type (set %d) in exp_expectl\n",i); ++ va_end(args); + sysreturn(EINVAL); + } + +@@ -2791,6 +2802,7 @@ + /* Ultrix 4.2 compiler refuses enumerations comparison!? */ + if ((int)type < 0 || (int)type >= (int)exp_bogus) { + fprintf(stderr,"bad type (set %d) in exp_expectl\n",i); ++ va_end(args); + sysreturn(EINVAL); + } + +diff --color -Naur expect5.45.4.orig/exp_command.h expect5.45.4/exp_command.h +--- expect5.45.4.orig/exp_command.h 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_command.h 2025-04-22 11:15:02.579293854 +0800 +@@ -222,8 +222,8 @@ + + EXTERN void exp_strftime(char *format, const struct tm *timeptr,Tcl_DString *dstring); + +-#define exp_deleteProc (void (*)())0 +-#define exp_deleteObjProc (void (*)())0 ++#define exp_deleteProc NULL ++#define exp_deleteObjProc NULL + + EXTERN int expect_key; + EXTERN int exp_configure_count; /* # of times descriptors have been closed */ +@@ -321,7 +321,7 @@ + EXTERN void exp_init_most_cmds _ANSI_ARGS_((Tcl_Interp *)); + EXTERN void exp_init_trap_cmds _ANSI_ARGS_((Tcl_Interp *)); + EXTERN void exp_init_interact_cmds _ANSI_ARGS_((Tcl_Interp *)); +-EXTERN void exp_init_tty_cmds(); ++EXTERN void exp_init_tty_cmds _ANSI_ARGS_((Tcl_Interp *)); + + EXTERN ExpState * expStateCheck _ANSI_ARGS_((Tcl_Interp *,ExpState *,int,int,char *)); + EXTERN ExpState * expStateCurrent _ANSI_ARGS_((Tcl_Interp *,int,int,int)); +diff --color -Naur expect5.45.4.orig/exp_log.c expect5.45.4/exp_log.c +--- expect5.45.4.orig/exp_log.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_log.c 2025-04-22 11:16:42.223164242 +0800 +@@ -174,7 +174,10 @@ + force_stdout = TCL_VARARGS_START(int,arg1,args); + fmt = va_arg(args,char *); + +- if ((!tsdPtr->logUser) && (!force_stdout) && (!tsdPtr->logAll)) return; ++ if ((!tsdPtr->logUser) && (!force_stdout) && (!tsdPtr->logAll)) { ++ va_end(args); ++ return; ++ } + + (void) vsprintf(bigbuf,fmt,args); + expDiagWriteBytes(bigbuf,-1); +diff --color -Naur expect5.45.4.orig/exp_main_sub.c expect5.45.4/exp_main_sub.c +--- expect5.45.4.orig/exp_main_sub.c 2018-02-04 18:43:58.000000000 +0800 ++++ expect5.45.4/exp_main_sub.c 2025-04-22 11:17:05.635391610 +0800 +@@ -49,14 +49,15 @@ + #define NEED_TCL_MINOR 5 + + char *exp_argv0 = "this program"; /* default program name */ +-void (*exp_app_exit)() = 0; +-void (*exp_event_exit)() = 0; ++void (*exp_app_exit) _ANSI_ARGS_((Tcl_Interp *)) = 0; ++void (*exp_event_exit) _ANSI_ARGS_((Tcl_Interp *)) = 0; + FILE *exp_cmdfile = 0; + char *exp_cmdfilename = 0; + int exp_cmdlinecmds = FALSE; + int exp_interactive = FALSE; + int exp_buffer_command_input = FALSE;/* read in entire cmdfile at once */ + int exp_fgets(); ++int exp_tty_cooked_echo(Tcl_Interp *interp, exp_tty *tty_old, int *was_raw, int *was_echo); + + Tcl_Interp *exp_interp; /* for use by signal handlers who can't figure out */ + /* the interpreter directly */ +@@ -920,7 +921,6 @@ + char file[200]; + char *home; + int fd; +- char *getenv(); + + if ((NULL != (home = getenv("DOTDIR"))) || + (NULL != (home = getenv("HOME")))) { +diff --color -Naur expect5.45.4.orig/exp_pty.c expect5.45.4/exp_pty.c +--- expect5.45.4.orig/exp_pty.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_pty.c 2025-04-22 11:17:41.627176185 +0800 +@@ -134,8 +134,8 @@ + return(cc); + } + +-static RETSIGTYPE (*oldAlarmHandler)(); +-static RETSIGTYPE (*oldHupHandler)(); ++static RETSIGTYPE (*oldAlarmHandler)(int); ++static RETSIGTYPE (*oldHupHandler)(int); + static time_t current_time; /* time when testing began */ + + /* if TRUE, begin testing, else end testing */ +diff --color -Naur expect5.45.4.orig/exp_trap.c expect5.45.4/exp_trap.c +--- expect5.45.4.orig/exp_trap.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_trap.c 2025-04-22 11:19:10.154722359 +0800 +@@ -53,7 +53,8 @@ + + int sigchld_count = 0; /* # of sigchlds caught but not yet processed */ + +-static int eval_trap_action(); ++static int ++eval_trap_action(Tcl_Interp *, int, struct trap *, int); + + static int got_sig; /* this records the last signal received */ + /* it is only a hint and can be wiped out */ +diff --color -Naur expect5.45.4.orig/exp_tty.c expect5.45.4/exp_tty.c +--- expect5.45.4.orig/exp_tty.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_tty.c 2025-04-22 11:12:33.066206967 +0800 +@@ -572,7 +572,7 @@ + char **argv) + { + int result = TCL_OK; +- RETSIGTYPE (*old)(); /* save old sigalarm handler */ ++ RETSIGTYPE (*old)(int); /* save old sigalarm handler */ + #define MAX_ARGLIST 10240 + int i; + +diff --color -Naur expect5.45.4.orig/exp_win.h expect5.45.4/exp_win.h +--- expect5.45.4.orig/exp_win.h 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/exp_win.h 2025-04-22 11:21:03.990362077 +0800 +@@ -8,8 +8,8 @@ + + #include /* For _ANSI_ARGS_ */ + +-int exp_window_size_set(); +-int exp_window_size_get(); ++int exp_window_size_set _ANSI_ARGS_ ((int)); ++int exp_window_size_get _ANSI_ARGS_ ((int)); + + void exp_win_rows_set _ANSI_ARGS_ ((char* rows)); + char* exp_win_rows_get _ANSI_ARGS_ ((void)); +diff --color -Naur expect5.45.4.orig/pty_termios.c expect5.45.4/pty_termios.c +--- expect5.45.4.orig/pty_termios.c 2018-02-03 03:15:52.000000000 +0800 ++++ expect5.45.4/pty_termios.c 2025-04-22 11:23:56.897369591 +0800 +@@ -105,6 +105,7 @@ + + void expDiagLog(); + void expDiagLogPtr(); ++char *expErrnoMsg(int errorNo); + + #include + /*extern char *sys_errlist[];*/ +@@ -189,6 +190,7 @@ + #endif /* HAVE_SCO_CLIST_PTYS */ + + #ifdef HAVE_OPENPTY ++#include + static char master_name[64]; + static char slave_name[64]; + #endif +@@ -204,7 +206,7 @@ + { + #define MAX_ARGLIST 10240 + char buf[MAX_ARGLIST]; /* overkill is easier */ +- RETSIGTYPE (*old)(); /* save old sigalarm handler */ ++ RETSIGTYPE (*old)(int); /* save old sigalarm handler */ + int pid; + + old = signal(SIGCHLD, SIG_DFL); +@@ -264,7 +266,7 @@ + { + #define MAX_ARGLIST 10240 + char buf[MAX_ARGLIST]; /* overkill is easier */ +- RETSIGTYPE (*old)(); /* save old sigalarm handler */ ++ RETSIGTYPE (*old)(int); /* save old sigalarm handler */ + + #ifdef STTY_READS_STDOUT + sprintf(buf,"%s %s > %s",STTY_BIN,s,name);