diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-12-02 11:00:10 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-12-02 11:00:10 +0000 |
commit | 4c506c69909bdb43fda5e36c79b165e404d3b86b (patch) | |
tree | b0f9d49fd462021c82f6ebbbbafb92e1a0eae3da /dev-tcltk | |
parent | 81f73a84efe20818880d8c52c55a3bd067115b06 (diff) |
gentoo auto-resync : 02:12:2023 - 11:00:10
Diffstat (limited to 'dev-tcltk')
-rw-r--r-- | dev-tcltk/Manifest.gz | bin | 5487 -> 5488 bytes | |||
-rw-r--r-- | dev-tcltk/expect/Manifest | 2 | ||||
-rw-r--r-- | dev-tcltk/expect/expect-5.45.4-r5.ebuild | 81 | ||||
-rw-r--r-- | dev-tcltk/expect/files/expect-5.45-warnings.patch | 684 |
4 files changed, 767 insertions, 0 deletions
diff --git a/dev-tcltk/Manifest.gz b/dev-tcltk/Manifest.gz Binary files differindex dd8edd1d8085..d62c34407f66 100644 --- a/dev-tcltk/Manifest.gz +++ b/dev-tcltk/Manifest.gz diff --git a/dev-tcltk/expect/Manifest b/dev-tcltk/expect/Manifest index 50d363c72dc1..fb14e0f6a9ce 100644 --- a/dev-tcltk/expect/Manifest +++ b/dev-tcltk/expect/Manifest @@ -3,10 +3,12 @@ AUX expect-5.45-darwin-install_name.patch 727 BLAKE2B fca6df8c6d01bd54f26e6a2311 AUX expect-5.45-format-security.patch 428 BLAKE2B 98e4d1da9f790bb1ab1b0b8481c5c0a747823f0998fff7993316d44cd5b29659467901c9f2e78d6b77342a9f0cb9072730a8600240fa37f240e10cc677162f63 SHA512 b85f0985b908f72d960eeb00567caab048874806c68d259835dc4564e33032524e9026e07ece3ad5f8669d67f7976019efb5dd763ba84b4cc13571ca999c7f06 AUX expect-5.45-gfbsd.patch 996 BLAKE2B 46183afae664e2995403e36b423e0576022063d8acfb681dd98d6e98e54c86588f0e74067b929fe105bc477fedd8709b749857dcdaf5e57fa28445dad34c4139 SHA512 4fa7c4723c9ad2f5811c5762abe202f1d7584a6050c75cab277fe1b6c697809204a9adcf6f6f6c3c215c8df32f3ac9b083da907777b1ea02e1a4e64b8bf91242 AUX expect-5.45-headers.patch 2280 BLAKE2B 6326615eee52aaa7307b32d048af21d657cb308e737995944b7e081a06a4d6b6f3409836b28835e6534ef57215542b524061cb731be3b419b23ab2ba38184079 SHA512 ac55ec9d65e87d5c64327d802fa16eab9f218f71e760090b2afc00b5fdb791859e6d1f35b0d1a5f52e7ff6ffb21e538581a1782976754fe8ae3ca5950c8db55c +AUX expect-5.45-warnings.patch 18021 BLAKE2B 6223588f347ba4ac5c679fbe0fabc5d4a6ac72603768cef4a166f5bcd0632392d0d8d4d80d747c985b2451cee30cec84a32f219ae19b99add91988d35f3c0dd8 SHA512 5ea67f4a481e9930998297896c31daefbf663cb6a4cae0421bf1d40906e7112a4c0c46da3cfb6a05dc4efd7ddb0543c05db086b7bf59901a1dea75ab9b73fc37 AUX expect-5.45.4-configure-clang16.patch 5377 BLAKE2B dd8a65e98e269f3b3ca086099b1c0cc62fda2357f7441c59f7cad8c168a4d8417bb05ba4e58fd9d2018d01ba66cd72ca0d63fc45e728363032412deb7f5283fb SHA512 34fd8c2a4986a0e085f69a2cb34afeeab3b6e2689cf88793149c8a8d98c1700f15df3b9ad27c74555572928c3e6a577ae44fa4af0b5b82afc7f1e5539d66c6e7 AUX expect-5.45.4-configure-in.patch 2408 BLAKE2B d198b599eeff18833e9532945aaf921779229ddecfbe478f985f2d742a39875e68cdca97fbca6aa5ca572f4c31c3a2491c8ddf473042952213232d3bfd070eee SHA512 7b60a268c6e4c0875978a619a451eb669a519f74623fbcecd90299b22e0ba73f6884177a16367e5ee94828c55636dba2f70c324576c1cc077d389912f4d7409d AUX expect-5.45.4-examples.patch 935 BLAKE2B df87d211f6693b836e2e8ca2b63c56a9dd073a8e2ab3f71b38523d4797da0c54411d51bd38e5568c0b850b30ce89d7c984945e704486eb61ca5077709de514fc SHA512 0cad9007f82d2e9fb1994e7b8a84858603cca471f34dbbaddadc30b4594c5cb31cb29749629bcea47b1da4abe3526ddc1c5ea36fb816571bc9c6ffadc120667c DIST expect5.45.4.tar.gz 632363 BLAKE2B a3a936e7644c922fdd474fa08c45926396ccce9a63e5f65f4d5e157f5160cfe4de47688734b39d13281d9548aac492810f19236e06563903d3d8081e4661048d SHA512 a8dc25e8175f67e029e15cbcfca1705165c1c4cb2dd37eaaaebffb61e3ba132d9519cd73ca5add4c3358a2b0b7a91e878279e8d0b72143ff2c287fce07e4659a EBUILD expect-5.45.4-r3.ebuild 2338 BLAKE2B 4ef237c10d7619323dabc86f100ed340a93d7a8de8c202e7a6b4a473f7d2b03ac9aff2dcc9916019a367777464d1eae42765e0f380e97b0d7ad1c0bed451a358 SHA512 0056240387a1b491d0b6723150ccc607bb679d7546865f40ff753bb2a95c70dd7eeb39c1c0bc4c86c1307315ad222d6fce00e6a30fde0568f7c453859c91ff8b EBUILD expect-5.45.4-r4.ebuild 2153 BLAKE2B fc8b22a4a98f18a81a7c441d8919c6d6cd3643c9ec74594a3e88d52aaae581341d9f2b91aba24ef52aee3a231e775fcf6f9f264f02f3855a5d9d87ba2264b939 SHA512 8ce792ca6c6b3d49f58217cd44c555456d3f49991ea30782f279b5d76c53fce5c694361096f416a9d1b44bf40b89adba22307de25ea12830691ab603c3c4c0b2 +EBUILD expect-5.45.4-r5.ebuild 2202 BLAKE2B 8451f06a2b945cb4080d475e6eb205b0f1cbd88a143a87d830334137f23e59c820efd376226286f169c35cc7040ff60108438d87e2564001cc0b927bec101629 SHA512 6a4ee9ee88543ba3f45351d810cbd4d91c66db3472e5270bab36a22b00a53c112c179c46430ac4e1c6ec8f15c20c91da733ce33091d1292e098283b60e2f17cc MISC metadata.xml 330 BLAKE2B 4e561b8ea0a607e2fde49595d4808e51b2df54c2d8f3d65c47a4e592e7d7897db71a6677b0330c7c32a8e5773b9571de0e4c8d33c4f8a5c3f0e0f7192082b177 SHA512 fec72aa15126bbe40bc5277bb743acf07203a6153ee52e69f1e828dfc53757b3d11a8e09175397a06bdb4f2c5e683db1ec74de254a6b36926192e5868f2e5ec6 diff --git a/dev-tcltk/expect/expect-5.45.4-r5.ebuild b/dev-tcltk/expect/expect-5.45.4-r5.ebuild new file mode 100644 index 000000000000..51205dad779f --- /dev/null +++ b/dev-tcltk/expect/expect-5.45.4-r5.ebuild @@ -0,0 +1,81 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit autotools edo flag-o-matic + +MY_P="${PN}${PV}" +DESCRIPTION="tool for automating interactive applications" +HOMEPAGE="https://core.tcl-lang.org/expect/" +SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tar.gz" +S="${WORKDIR}"/${MY_P} + +LICENSE="BSD" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +IUSE="debug doc test threads" +RESTRICT="!test? ( test )" + +DEPEND=">=dev-lang/tcl-8.2:=[threads?]" +RDEPEND="${DEPEND}" +BDEPEND="test? ( dev-util/dejagnu )" + +PATCHES=( "${FILESDIR}"/${P}-examples.patch ) + +src_prepare() { + default + sed -i "s:/usr/local/bin:${EPREFIX}/usr/bin:" expect.man || die + + eapply "${FILESDIR}"/${PN}-5.45-gfbsd.patch + eapply "${FILESDIR}"/${PN}-5.44.1.15-ldflags.patch + eapply "${FILESDIR}"/${PN}-5.45-headers.patch #337943 + eapply "${FILESDIR}"/${PN}-5.45-format-security.patch + eapply "${FILESDIR}"/${PN}-5.45.4-configure-in.patch + eapply "${FILESDIR}"/${PN}-5.45.4-configure-clang16.patch + eapply "${FILESDIR}"/${PN}-5.45-warnings.patch + + sed -i 's:ifdef HAVE_SYS_WAIT_H:ifndef NO_SYS_WAIT_H:' *.c || die + + # fix install_name on darwin + [[ ${CHOST} == *-darwin* ]] && \ + eapply "${FILESDIR}"/${P}-darwin-install_name.patch + + mv configure.{in,ac} || die + + eautoconf +} + +src_configure() { + # bug #881687 + append-flags -std=gnu89 + + # the 64bit flag is useless ... it only adds 64bit compiler flags + # (like -m64) which the target toolchain should already handle + econf \ + --cache-file="${S}"/config.cache \ + --with-tcl="${EPREFIX}/usr/$(get_libdir)" \ + --disable-64bit \ + --enable-shared \ + $(use_enable threads) \ + $(use_enable debug symbols mem) +} + +expect_make_var() { + touch pkgIndex.tcl-hand || die + printf 'all:;echo $('$1')\ninclude Makefile' | emake --no-print-directory -s -f - + rm -f pkgIndex.tcl-hand || die +} + +src_install() { + default + + if use doc ; then + docinto examples + + edo dodoc \ + example/README \ + $(printf 'example/%s ' $(expect_make_var _SCRIPTS)) \ + $(printf 'example/%s.man ' $(expect_make_var _SCRIPTS_MANPAGES)) + fi +} diff --git a/dev-tcltk/expect/files/expect-5.45-warnings.patch b/dev-tcltk/expect/files/expect-5.45-warnings.patch new file mode 100644 index 000000000000..31c3809be374 --- /dev/null +++ b/dev-tcltk/expect/files/expect-5.45-warnings.patch @@ -0,0 +1,684 @@ +https://bugs.gentoo.org/918972 +https://core.tcl-lang.org/expect/info/35d0b2bdfecd634d +--- a/Dbg.c ++++ b/Dbg.c +@@ -173,12 +173,12 @@ Tcl_Obj *objPtr; + } + } + +-/* return 1 to break, 0 to continue */ ++/* return 1 to break, 0 to continue ++ * cmd: command about to be executed ++ * bp: breakpoint to test ++ */ + static int +-breakpoint_test(interp,cmd,bp) +-Tcl_Interp *interp; +-char *cmd; /* command about to be executed */ +-struct breakpoint *bp; /* breakpoint to test */ ++breakpoint_test(Tcl_Interp *interp,const char *cmd,struct breakpoint *bp) + { + if (bp->re) { + int found = 0; +@@ -239,7 +239,7 @@ TclGetFrame2(interp, origFramePtr, string, framePtrPtr, dir) + { + Interp *iPtr = (Interp *) interp; + int level, result; +- CallFrame *framePtr; /* frame currently being searched */ ++ CallFrame *framePtr = NULL; /* frame currently being searched */ + + CallFrame *curFramePtr = iPtr->varFramePtr; + +@@ -302,7 +302,6 @@ TclGetFrame2(interp, origFramePtr, string, framePtrPtr, dir) + return result; + } + +- + static char *printify(s) + char *s; + { +@@ -658,6 +657,8 @@ debugger_trap(clientData,interp,level,command,commandInfo,objc,objv) + if (goalFramePtr != iPtr->varFramePtr) goto finish; + goto start_interact; + /* DANGER: unhandled cases! none, up, down, where */ ++ default: ++ break; /* Silence compiler warning */ + } + + start_interact: +@@ -716,6 +717,8 @@ end_interact: + case where: + PrintStack(interp,iPtr->varFramePtr,viewFramePtr,objc,objv,level_text); + break; ++ default: ++ break; /* Silence compiler warning */ + } + + /* restore view and restart interactor */ +--- a/exp_chan.c ++++ b/exp_chan.c +@@ -58,17 +58,14 @@ static int ExpGetHandleProc _ANSI_ARGS_((ClientData instanceData, + */ + + Tcl_ChannelType expChannelType = { +- "exp", /* Type name. */ +- ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ +- ExpCloseProc, /* Close proc. */ +- ExpInputProc, /* Input proc. */ +- ExpOutputProc, /* Output proc. */ +- NULL, /* Seek proc. */ +- NULL, /* Set option proc. */ +- NULL, /* Get option proc. */ +- ExpWatchProc, /* Initialize notifier. */ +- ExpGetHandleProc, /* Get OS handles out of channel. */ +- NULL, /* Close2 proc */ ++ .typeName = "exp", /* Type name. */ ++ .version = TCL_CHANNEL_VERSION_2, ++ .blockModeProc = ExpBlockModeProc, /* Set blocking/nonblocking mode.*/ ++ .closeProc = ExpCloseProc, /* Close proc. */ ++ .inputProc = ExpInputProc, /* Input proc. */ ++ .outputProc = ExpOutputProc, /* Output proc. */ ++ .watchProc = ExpWatchProc, /* Initialize notifier. */ ++ .getHandleProc = ExpGetHandleProc /* Get OS handles out of channel. */ + }; + + typedef struct ThreadSpecificData { +@@ -437,10 +434,10 @@ ExpGetHandleProc(instanceData, direction, handlePtr) + ExpState *esPtr = (ExpState *) instanceData; + + if (direction & TCL_WRITABLE) { +- *handlePtr = (ClientData) esPtr->fdin; ++ *handlePtr = (ClientData)(intptr_t)esPtr->fdin; + } + if (direction & TCL_READABLE) { +- *handlePtr = (ClientData) esPtr->fdin; ++ *handlePtr = (ClientData)(intptr_t)esPtr->fdin; + } else { + return TCL_ERROR; + } +--- a/exp_clib.c ++++ b/exp_clib.c +@@ -56,6 +56,10 @@ would appreciate credit if this program or parts of it are used. + # endif + #endif + ++#ifdef HAVE_UNISTD_H ++#include <unistd.h> ++#endif ++ + #include <signal.h> + /*#include <memory.h> - deprecated - ANSI C moves them into string.h */ + #include "string.h" +@@ -122,6 +126,7 @@ extern unsigned long strtoul _ANSI_ARGS_((CONST char *string, + + #include <tcl.h> + #include "expect.h" ++#include "exp_command.h" + #define TclRegError exp_TclRegError + + /* +@@ -1814,6 +1819,13 @@ int fd; + + } + ++/* ultrix (at least 4.1-2) fails to obtain controlling tty if setsid */ ++/* is called. setpgrp works though. */ ++#if defined(POSIX) && !defined(ultrix) || defined(__convex__) ++#define DO_SETSID ++#endif ++ ++#if !defined(DO_SETSID) && (!defined(SYSV3) || defined(CRAY)) /* { */ + static + void + exp_setpgrp() +@@ -1830,6 +1842,7 @@ exp_setpgrp() + (void) setpgrp(0,0); + #endif + } ++#endif /* } */ + + /* returns fd of master side of pty */ + int +@@ -1840,7 +1853,9 @@ char *argv[]; /* some compiler complains about **argv? */ + int cc; + int errorfd; /* place to stash fileno(stderr) in child */ + /* while we're setting up new stderr */ ++#if defined(TIOCNOTTY) && !defined(SYSV3) && !defined(DO_SETSID) + int ttyfd; ++#endif + int sync_fds[2]; + int sync2_fds[2]; + int status_pipe[2]; +@@ -2015,15 +2030,6 @@ when trapping, see below in child half of fork */ + (void) close(exp_pty[0]); + #endif + +-/* ultrix (at least 4.1-2) fails to obtain controlling tty if setsid */ +-/* is called. setpgrp works though. */ +-#if defined(POSIX) && !defined(ultrix) +-#define DO_SETSID +-#endif +-#ifdef __convex__ +-#define DO_SETSID +-#endif +- + #ifdef DO_SETSID + setsid(); + #else +@@ -2451,7 +2457,7 @@ struct exp_case *ecases; + int return_val; + int sys_error = 0; + #define return_normally(x) {return_val = x; goto cleanup;} +-#define return_errno(x) {sys_error = x; goto cleanup;} ++#define return_errno(x) {sys_error = x; return_val = -1; goto cleanup;} + + f = fdfp2f(fd,fp); + if (!f) return_errno(ENOMEM); +@@ -2860,7 +2866,9 @@ char *program; + int + exp_disconnect() + { ++#if defined(TIOCNOTTY) && !defined(SYSV3) && !defined(POSIX) + int ttyfd; ++#endif + + #ifndef EALREADY + #define EALREADY 37 +--- a/exp_command.c ++++ b/exp_command.c +@@ -532,6 +532,13 @@ set_pgrp(int fd) + } + #endif + ++/* ultrix (at least 4.1-2) fails to obtain controlling tty if setsid */ ++/* is called. setpgrp works though. */ ++#if defined(POSIX) && !defined(ultrix) || defined(__convex__) ++#define DO_SETSID ++#endif ++ ++#if !defined(DO_SETSID) && (!defined(SYSV3) || defined(CRAY)) /* { */ + static + void + expSetpgrp() +@@ -548,7 +555,7 @@ expSetpgrp() + (void) setpgrp(0,0); + #endif + } +- ++#endif /* } */ + + /*ARGSUSED*/ + static void +@@ -581,9 +588,7 @@ Exp_SpawnObjCmd( + ExpState *esPtr = 0; + int slave; + int pid; +-#ifdef TIOCNOTTY +- /* tell Saber to ignore non-use of ttyfd */ +- /*SUPPRESS 591*/ ++#if defined(TIOCNOTTY) && !defined(SYSV3) && !defined(DO_SETSID) + int ttyfd; + #endif /* TIOCNOTTY */ + int errorfd; /* place to stash fileno(stderr) in child */ +@@ -903,13 +908,17 @@ Exp_SpawnObjCmd( + if (TCL_ERROR == Tcl_GetChannelHandle(channel, TCL_READABLE, &rfdc)) { + return TCL_ERROR; + } +- rfd = (int)(long) rfdc; ++ rfd = (int)(intptr_t) rfdc; ++ } else { ++ rfd = -1; + } + if (mode & TCL_WRITABLE) { + if (TCL_ERROR == Tcl_GetChannelHandle(channel, TCL_WRITABLE, &wfdc)) { + return TCL_ERROR; + } +- wfd = (int)(long) wfdc; ++ wfd = (int)(intptr_t) wfdc; ++ } else { ++ wfd = -1; + } + master = ((mode & TCL_READABLE)?rfd:wfd); + +@@ -1126,15 +1135,6 @@ Exp_SpawnObjCmd( + (void) close(master); + #endif + +-/* ultrix (at least 4.1-2) fails to obtain controlling tty if setsid */ +-/* is called. setpgrp works though. */ +-#if defined(POSIX) && !defined(ultrix) +-#define DO_SETSID +-#endif +-#ifdef __convex__ +-#define DO_SETSID +-#endif +- + #ifdef DO_SETSID + setsid(); + #else +@@ -1976,7 +1976,7 @@ Exp_SendObjCmd( + #define SEND_STYLE_BREAK 0x20 + int send_style = SEND_STYLE_PLAIN; + int want_cooked = TRUE; +- char *string; /* string to send */ ++ char *string = NULL; /* string to send */ + int len = -1; /* length of string to send */ + int zeros; /* count of how many ascii zeros to send */ + +@@ -3114,9 +3114,7 @@ Exp_DisconnectObjCmd( + { + ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey); + +-#ifdef TIOCNOTTY +- /* tell CenterLine to ignore non-use of ttyfd */ +- /*SUPPRESS 591*/ ++#if defined(TIOCNOTTY) && !defined(SYSV3) && !defined(DO_SETSID) + int ttyfd; + #endif /* TIOCNOTTY */ + +--- a/exp_event.c ++++ b/exp_event.c +@@ -24,6 +24,7 @@ NIST would appreciate credit if this program or parts of it are used. + #include "exp_prog.h" + #include "exp_command.h" /* for ExpState defs */ + #include "exp_event.h" ++#include "exp_log.h" + + typedef struct ThreadSpecificData { + int rr; /* round robin ptr */ +@@ -120,6 +121,9 @@ exp_unblock_background_channelhandler(esPtr) + case disarm_req_while_blocked: + exp_disarm_background_channelhandler_force(esPtr); + break; ++ default: ++ expDiagLog("Unexpected value %d of bg-handler in %s", ++ esPtr->bg_status, __func__); + } + } + +--- a/exp_inter.c ++++ b/exp_inter.c +@@ -404,8 +404,8 @@ intEcho( + int matchBytes) + { + int seenBytes; /* either printed or echoed */ +- int echoBytes; +- int offsetBytes; ++ int echoBytes = 0; ++ int offsetBytes = 0; + + /* write is unlikely to fail, since we just read from same descriptor */ + seenBytes = esPtr->printed + esPtr->echoed; +@@ -706,9 +706,6 @@ inter_updateproc( + + #define finish(x) { status = x; goto done; } + +-static char return_cmd[] = "return"; +-static char interpreter_cmd[] = "interpreter"; +- + /*ARGSUSED*/ + int + Exp_InteractObjCmd( +@@ -1344,15 +1341,15 @@ Exp_InteractObjCmd( + int rc; /* return code from ready. This is further refined by matcher. */ + int cc; /* # of chars from read() */ + struct action *action = 0; +- time_t previous_time; ++ time_t previous_time = 0; + time_t current_time; +- int matchLen; /* # of chars matched */ ++ int matchLen = 0; /* # of chars matched */ + int skip; /* # of chars not involved in match */ + int print; /* # of chars to print */ + int oldprinted; /* old version of u->printed */ + int change; /* if action requires cooked mode */ + int attempt_match = TRUE; +- struct input *soonest_input; ++ struct input *soonest_input = NULL; + int timeout; /* current as opposed to default_timeout */ + Tcl_Time temp_time; + +--- a/exp_log.c ++++ b/exp_log.c +@@ -90,6 +90,8 @@ expWriteBytesAndLogIfTtyU(esPtr,buf,lenChars) + + if (esPtr->valid) + wc = expWriteCharsUni(esPtr,buf,lenChars); ++ else ++ wc = -1; + + if (tsdPtr->logChannel && ((esPtr->fdout == 1) || expDevttyIs(esPtr))) { + Tcl_DString ds; +--- a/exp_pty.c ++++ b/exp_pty.c +@@ -135,7 +135,9 @@ int timeout; + } + + static RETSIGTYPE (*oldAlarmHandler)(); ++#ifndef O_NOCTTY + static RETSIGTYPE (*oldHupHandler)(); ++#endif + static time_t current_time; /* time when testing began */ + + /* if TRUE, begin testing, else end testing */ +--- a/exp_trap.c ++++ b/exp_trap.c +@@ -298,11 +298,10 @@ char *s; + + /*ARGSUSED*/ + int +-Exp_TrapObjCmd(clientData, interp, objc, objv) +-ClientData clientData; +-Tcl_Interp *interp; +-int objc; +-Tcl_Obj *CONST objv[]; ++Exp_TrapObjCmd(ClientData clientData, ++ Tcl_Interp *interp, ++ int objc, ++ Tcl_Obj *CONST objv[]) + { + char *action = 0; + int n; /* number of signals in list */ +@@ -320,7 +319,9 @@ Tcl_Obj *CONST objv[]; + + objc--; objv++; + +- while (objc) { ++ if (objc <= 0) goto usage_error; ++ ++ do { + arg = Tcl_GetString(*objv); + + if (streq(arg,"-code")) { +@@ -339,7 +340,7 @@ Tcl_Obj *CONST objv[]; + objc--; objv++; + show_max = TRUE; + } else break; +- } ++ } while(objc); + + if (show_name || show_number || show_max) { + if (objc > 0) goto usage_error; +--- a/exp_tty.c ++++ b/exp_tty.c +@@ -585,18 +585,20 @@ Exp_SystemCmd( + int total_len = 0, arg_len; + + int stty_args_recognized = TRUE; +- int cmd_is_stty = FALSE; ++ int cmd_is_stty; + int cooked = FALSE; +- int was_raw, was_echo; ++ const char *was_raw = "-raw", *was_echo = "-echo"; + + if (argc == 1) return TCL_OK; + +- if (streq(argv[1],"stty")) { ++ cmd_is_stty = streq(argv[1],"stty"); ++ if (cmd_is_stty) { + expDiagLogU("system stty is deprecated, use stty\r\n"); + +- cmd_is_stty = TRUE; +- was_raw = exp_israw(); +- was_echo = exp_isecho(); ++ if (exp_israw()) ++ was_raw++; ++ if (exp_isecho()) ++ was_echo++; + } + + if (argc > 2 && cmd_is_stty) { +@@ -635,11 +637,7 @@ Exp_SystemCmd( + return(TCL_ERROR); + } + if (cmd_is_stty) { +- char buf [11]; +- sprintf(buf,"%sraw %secho", +- (was_raw?"":"-"), +- (was_echo?"":"-")); +- Tcl_SetResult (interp, buf, TCL_VOLATILE); ++ Tcl_AppendResult (interp, was_raw, " ", was_echo, NULL); + } + return(TCL_OK); + } +@@ -699,11 +697,7 @@ Exp_SystemCmd( + } + + if (cmd_is_stty) { +- char buf [11]; +- sprintf(buf,"%sraw %secho", +- (was_raw?"":"-"), +- (was_echo?"":"-")); +- Tcl_SetResult (interp, buf, TCL_VOLATILE); ++ Tcl_AppendResult (interp, was_raw, " ", was_echo, NULL); + } + + /* following macros stolen from Tcl's tclUnix.h file */ +--- a/exp_win.c ++++ b/exp_win.c +@@ -78,9 +78,9 @@ typedef struct { + static exp_winsize winsize = {0, 0}; + static exp_winsize win2size = {0, 0}; + +-int exp_window_size_set(fd) +-int fd; ++int exp_window_size_set(int fd) + { ++ return + #ifdef TIOCSWINSZ + ioctl(fd,TIOCSWINSZ,&winsize); + #endif +@@ -89,9 +89,9 @@ int fd; + #endif + } + +-int exp_window_size_get(fd) +-int fd; ++int exp_window_size_get(int fd) + { ++ return + #ifdef TIOCGWINSZ + ioctl(fd,TIOCGWINSZ,&winsize); + #endif +@@ -105,8 +105,7 @@ int fd; + } + + void +-exp_win_rows_set(rows) +-char *rows; ++exp_win_rows_set(const char *rows) + { + winsize.rows = atoi(rows); + exp_window_size_set(exp_dev_tty); +@@ -122,8 +121,7 @@ exp_win_rows_get() + } + + void +-exp_win_columns_set(columns) +-char *columns; ++exp_win_columns_set(const char *columns) + { + winsize.columns = atoi(columns); + exp_window_size_set(exp_dev_tty); +@@ -142,8 +140,8 @@ exp_win_columns_get() + * separate copy of everything above - used for handling user stty requests + */ + +-int exp_win2_size_set(fd) +-int fd; ++static void ++exp_win2_size_set(int fd) + { + #ifdef TIOCSWINSZ + ioctl(fd,TIOCSWINSZ,&win2size); +@@ -153,8 +151,8 @@ int fd; + #endif + } + +-int exp_win2_size_get(fd) +-int fd; ++static void ++exp_win2_size_get(int fd) + { + #ifdef TIOCGWINSZ + ioctl(fd,TIOCGWINSZ,&win2size); +@@ -165,9 +163,7 @@ int fd; + } + + void +-exp_win2_rows_set(fd,rows) +-int fd; +-char *rows; ++exp_win2_rows_set(int fd,const char *rows) + { + exp_win2_size_get(fd); + win2size.rows = atoi(rows); +@@ -175,8 +171,7 @@ char *rows; + } + + char* +-exp_win2_rows_get(fd) +-int fd; ++exp_win2_rows_get(int fd) + { + static char rows [20]; + exp_win2_size_get(fd); +@@ -189,9 +184,7 @@ int fd; + } + + void +-exp_win2_columns_set(fd,columns) +-int fd; +-char *columns; ++exp_win2_columns_set(int fd,const char *columns) + { + exp_win2_size_get(fd); + win2size.columns = atoi(columns); +@@ -199,8 +192,7 @@ char *columns; + } + + char* +-exp_win2_columns_get(fd) +-int fd; ++exp_win2_columns_get(int fd) + { + static char columns [20]; + exp_win2_size_get(fd); +--- a/exp_win.h ++++ b/exp_win.h +@@ -11,12 +11,12 @@ would appreciate credit if you use this file or parts of it. + int exp_window_size_set(); + int exp_window_size_get(); + +-void exp_win_rows_set _ANSI_ARGS_ ((char* rows)); ++void exp_win_rows_set _ANSI_ARGS_ ((const char* rows)); + char* exp_win_rows_get _ANSI_ARGS_ ((void)); +-void exp_win_columns_set _ANSI_ARGS_ ((char* columns)); ++void exp_win_columns_set _ANSI_ARGS_ ((const char* columns)); + char* exp_win_columns_get _ANSI_ARGS_ ((void)); + +-void exp_win2_rows_set _ANSI_ARGS_ ((int fd, char* rows)); ++void exp_win2_rows_set _ANSI_ARGS_ ((int fd, const char* rows)); + char* exp_win2_rows_get _ANSI_ARGS_ ((int fd)); +-void exp_win2_columns_set _ANSI_ARGS_ ((int fd, char* columns)); ++void exp_win2_columns_set _ANSI_ARGS_ ((int fd, const char* columns)); + char* exp_win2_columns_get _ANSI_ARGS_ ((int fd)); +--- a/expect.c ++++ b/expect.c +@@ -2537,7 +2537,7 @@ Exp_ExpectObjCmd( + struct exp_state_list *state_list; /* list of ExpStates to watch */ + struct exp_state_list *slPtr; /* temp for interating over state_list */ + ExpState **esPtrs; +- int mcount; /* number of esPtrs to watch */ ++ int mcount = 0; /* number of esPtrs to watch */ + + struct eval_out eo; /* final case of interest */ + +@@ -2546,7 +2546,7 @@ Exp_ExpectObjCmd( + time_t start_time_total; /* time at beginning of this procedure */ + time_t start_time = 0; /* time when restart label hit */ + time_t current_time = 0; /* current time (when we last looked)*/ +- time_t end_time; /* future time at which to give up */ ++ time_t end_time = 0; /* future time at which to give up */ + + ExpState *last_esPtr; /* for differentiating when multiple f's */ + /* to print out better debugging messages */ +@@ -2554,7 +2554,7 @@ Exp_ExpectObjCmd( + int first_time = 1; /* if not "restarted" */ + + int key; /* identify this expect command instance */ +- int configure_count; /* monitor exp_configure_count */ ++ int configure_count = 0; /* monitor exp_configure_count */ + + int timeout; /* seconds */ + int remtime; /* remaining time in timeout */ +@@ -2947,12 +2947,14 @@ process_di ( + } else { + esPtr = expStateFromChannelName(interp,chan,0,0,0,(char*)cmd); + } +- if (!esPtr) return(TCL_ERROR); ++ if (!esPtr) ++ return(TCL_ERROR); ++ ++ *esOut = esPtr; + } + + *at = i; + *Default = def; +- *esOut = esPtr; + return TCL_OK; + } + +--- a/pty_termios.c ++++ b/pty_termios.c +@@ -71,6 +71,14 @@ with openpty which supports 4000 while ptmx supports 60. */ + #endif + #include <sys/types.h> + #include <sys/stat.h> ++#if defined(HAVE_OPENPTY) ++#include <termios.h> ++#if defined(HAVE_LIBUTIL_H) ++#include <libutil.h> ++#else ++#include <pty.h> ++#endif ++#endif + + #ifdef NO_STDLIB_H + #include "../compat/stdlib.h" +@@ -381,11 +389,14 @@ exp_init_pty() + int + exp_getptymaster() + { ++#if !defined(HAVE_CONVEX_GETPTY) && !defined(HAVE_PTYM) && !defined(HAVE_SCO_CLIST_PTYS) && defined(TEST_PTY) + char *hex, *bank; +- struct stat stat_buf; ++#endif + int master = -1; + int slave = -1; ++#ifdef HAVE_SCO_CLIST_PTYS + int num; ++#endif + + exp_pty_error = 0; + +@@ -438,6 +449,7 @@ exp_getptymaster() + master = open("/dev/ptc", O_RDWR); + if (master >= 0) { + int ptynum; ++ struct stat stat_buf; + + if (fstat(master, &stat_buf) < 0) { + close(master); +@@ -644,8 +656,10 @@ exp_getptyslave( + int ttyinit, + CONST char *stty_args) + { +- int slave, slave2; ++ int slave; ++#if defined(HAVE_PTMX_BSD) + char buf[10240]; ++#endif + + if (0 > (slave = open(slave_name, O_RDWR))) { + static char buf[500]; |