Fri Nov 28 2003 Jens Petersen <petersen@redhat.com> - 5.39.0-95 - new package split out from tcltk - build against installed tcl and tk - filtered changelog for expect - buildrequire autoconf213 (#110583) [mvd@mylinux.com.ua] Mon Nov 17 2003 Thomas Woerner <twoerner@redhat.com> 8.3.5-94 - fixed RPATH for expect and expectk: expect-5.39.0-libdir.patch Wed Oct 15 2003 Jens Petersen <petersen@redhat.com> - 8.3.5-93 - update expect to 5.39.0 (fixes #58317) - drop first hunk of 64bit patch and rename to expect-5.39.0-64bit-82547.patch - expect-5.32.2-weather.patch and expect-5.32.2-expectk.patch no longer needed Wed Sep 17 2003 Matt Wilson <msw@redhat.com> 8.3.5-92 - rebuild again for #91211 Wed Sep 17 2003 Matt Wilson <msw@redhat.com> 8.3.5-91 - rebuild to fix gzipped file md5sums (#91211) Fri Jul 04 2003 Jens Petersen <petersen@redhat.com> - 8.3.5-90 - make sure expect and itcl are linked against buildroot not installroot libs Tue Jan 28 2003 Jens Petersen <petersen@redhat.com> - 8.3.5-87 - bring back expect alpha patch, renamed to 64bit patch (#82547) Fri Jan 17 2003 Jens Petersen <petersen@redhat.com> - 8.3.5-85 - add some requires Tue Jan 14 2003 Jens Petersen <petersen@redhat.com> - 8.3.5-84 - drop synthetic lib provides - remove obsolete patches from srpm - update buildrequires - use buildroot instead of RPM_BUILD_ROOT - install all man pages under mandir, instead of moving some from /usr/man - introduce _genfilelist macro for clean single-sweep find filelist generation for each package - use perl to remove buildroot prefix from filelists Tue Jan 07 2003 Jeff Johnson <jbj@redhat.com> 8.3.5-80 - rebuild to generate deps for4 DSO's w/o DT_SONAME correctly. Sat Jan 04 2003 Jeff Johnson <jbj@redhat.com> 8.3.5-79 - set execute bits on library so that requires are generated. Tue Dec 10 2002 Jens Petersen <petersen@redhat.com> 8.3.5-78 - make lib symlinks to .so not .so.0 Mon Dec 09 2002 Jens Petersen <petersen@redhat.com> 8.3.5-76 - make it build on x86_64 (details below) - add 100 to expect patches - patch expect configure to get EXP_LIB_SPEC to use libdir - don't explicitly update config.{guess,sub} since %configure does it for us - added "--without check" rpmbuild option to disable running tests in future - generate filelists from datadir and not from mandir from now on Tue Dec 03 2002 Jens Petersen <petersen@redhat.com> - build without all makecfg patches for now - in particular use upstream versioned library name convention - add backward compatible lib symlinks for now - add unversioned symlinks for versioned bindir files - use make's -C option rather than jumping in and out of source dirs during install - use INSTALL_ROOT destdir-like make variable instead of makeinstall for all subpackages except tix and itcl Mon Oct 21 2002 Jens Petersen <petersen@redhat.com> - move expectk and expect-devel files out of expect into separate packages (#9832) - drop the crud compat dir symlinks in libdir - correct expect license - don't explicitly provide 64bit libs on ia64 and sparc64 Tue Aug 20 2002 Jens Petersen <petersen@redhat.com> 8.3.3-74 - fix compat symlink from /usr/lib/expect (#71606) Wed Aug 14 2002 Jens Petersen <petersen@redhat.com> 8.3.3-73 - update to expect spawn patch from hjl@gnu.org (bug 43310) Tue Aug 13 2002 Jens Petersen <petersen@redhat.com> 8.3.3-72 - update expect to 5.38.0 - fixes #71113 (reported by yarnall@lvc.edu) Mon Jan 07 2002 Florian La Roche <Florian.LaRoche@redhat.de> - quick hack to have a correct setpgrp() call in expect - fix config.guess and config.sub to newer versions Tue Aug 28 2001 Adrian Havill <havill@redhat.com> - expect's fixline1 busted for expectk scripts (tkpasswd/tknewsbiff/tkterm) Wed Aug 08 2001 Adrian Havill <havill@redhat.com> - re-enable glibc string and math inlines; recent gcc is a-ok. - optimize at -O2 instead of -O - rename "soname" patches related to makefile/autoconf changes Wed Jul 25 2001 Adrian Havill <havill@redhat.com> - fixed 64 bit RPM provides for dependencies Thu Jul 19 2001 Adrian Havill <havill@redhat.com> - used %makeinstall to brute force fix any remaining unflexible makefile dirs - improved randomness of expect's mkpasswd script via /dev/random (bug 9507) - revert --enable-threads, linux is (still) not ready (yet) (bug 49251) Sun Jul 08 2001 Adrian Havill <havill@redhat.com> - refresh all sources to latest stable (TODO: separate expect/expectk) - massage out some build stuff to patches (TODO: libtoolize hacked constants) - remove patches already rolled into the upstream - removed RPATH (bugs 45569, 46085, 46086), added SONAMEs to ELFs - changed shared object filenames to something less gross - reenable threads which seem to work now - fixed spawn/eof read problem with expect (bug 43310) - made compile-friendly for IA64 Fri Mar 23 2001 Bill Nottingham <notting@redhat.com> - bzip2 sources Mon Mar 19 2001 Bill Nottingham <notting@redhat.com> - build with -D_GNU_SOURCE - fixes expect on ia64 Mon Mar 19 2001 Preston Brown <pbrown@redhat.com> - build fix from ahavill. Wed Feb 21 2001 Tim Powers <timp@redhat.com> - fixed weather expect script using wrong server (#28505) Tue Feb 13 2001 Adrian Havill <havill@redhat.com> - rebuild so make check passes Fri Oct 20 2000 Than Ngo <than@redhat.com> - rebuild with -O0 on alpha (bug #19461) Thu Aug 17 2000 Jeff Johnson <jbj@redhat.com> - summaries from specspo. Thu Jul 27 2000 Jeff Johnson <jbj@redhat.com> - rebuild against "working" util-linux col. Fri Jun 16 2000 Jeff Johnson <jbj@redhat.com> - don't mess with %{_libdir}, it's gonna be a FHS pita. Fri Jun 02 2000 Jeff Johnson <jbj@redhat.com> - FHS packaging changes. - revert --enable-threads, linux is not ready (yet) (#11789). - expect: update to 5.31.7+ (#11595). Sat Mar 18 2000 Jeff Johnson <jbj@redhat.com> - update to (tcl,tk}-8.2.3, expect-5.31, and itcl-3.1.0, URL's as well. - use perl to drill out pre-pended RPM_BUILD_ROOT. - configure with --enable-threads (experimental). - autopasswd needs to handle password starting with hyphen (#9917). - handle 553 ftp status in rftp expect script (#7869). - remove cryptdir/decryptdir, as Linux has not crypt command (#6668). - correct hierarchy spelling (#7082). - fix "expect -d ...", format string had int printed as string (#7775). Tue Mar 07 2000 Jeff Johnson <jbj@redhat.com> - rebuild for sparc baud rates > 38400. Mon Feb 07 2000 Bill Nottingham <notting@redhat.com> - handle compressed manpages Thu Feb 03 2000 Elliot Lee <sopwith@redhat.com> - Make changes from bug number 7602 - Apply patch from bug number 7537 - Apply fix from bug number 7157 - Add fixes from bug #7601 to the runtcl patch Wed Feb 02 2000 Cristian Gafton <gafton@redhat.com> - fix descriptions - man pages are compressed (whatapain) Tue Nov 30 1999 Jakub Jelinek <jakub@redhat.com> - compile on systems where SIGPWR == SIGLOST. Thu Apr 08 1999 Jeff Johnson <jbj@redhat.com> - use /usr/bin/write in kibitz (#1320). - use cirrus.sprl.umich.edu in weather (#1926). Tue Feb 16 1999 Jeff Johnson <jbj@redhat.com> - expect does unaligned access on alpha (#989) - upgrade expect to 5.28. Tue Jan 12 1999 Cristian Gafton <gafton@redhat.com> - call libtoolize to allow building on the arm - build for glibc 2.1 - strip binaries Thu Sep 10 1998 Jeff Johnson <jbj@redhat.com> - update tcl/tk/tclX to 8.0.3, expect is updated also. Mon Jun 29 1998 Jeff Johnson <jbj@redhat.com> - expect: mkpasswd needs delay before sending password (problem #576) Thu May 07 1998 Prospector System <bugs@redhat.com> - translations modified for de, fr, tr Sat May 02 1998 Cristian Gafton <gafton@redhat.com> - fixed expect binaries exec permissions Wed Oct 22 1997 Otto Hammersmith <otto@redhat.com> - fixed src urls Mon Oct 06 1997 Erik Troan <ewt@redhat.com> - removed version numbers from descriptions Mon Sep 22 1997 Erik Troan <ewt@redhat.com> - updated to tcl/tk 8.0 and related versions of packages Tue Jun 17 1997 Erik Troan <ewt@redhat.com> - built against glibc - fixed dangling tclx/tkx symlinks
210 lines
6.6 KiB
Diff
210 lines
6.6 KiB
Diff
--- tcltk-8.3.1/expect5.31/exp_chan.c.read Fri Nov 16 00:14:15 2001
|
|
+++ tcltk-8.3.1/expect5.31/exp_chan.c Fri Nov 16 00:14:15 2001
|
|
@@ -519,6 +519,7 @@ expCreateChannel(interp,fdin,fdout,pid)
|
|
esPtr->buffer = Tcl_NewStringObj("",0);
|
|
Tcl_IncrRefCount(esPtr->buffer);
|
|
esPtr->umsize = exp_default_match_max;
|
|
+ esPtr->umsize_changed = exp_default_match_max_changed;
|
|
/* this will reallocate object with an appropriate sized buffer */
|
|
expAdjust(esPtr);
|
|
|
|
--- tcltk-8.3.1/expect5.31/exp_command.h.read Fri Nov 16 00:14:15 2001
|
|
+++ tcltk-8.3.1/expect5.31/exp_command.h Fri Nov 16 00:14:15 2001
|
|
@@ -25,6 +25,7 @@ would appreciate credit if this program
|
|
EXTERN char * exp_get_var _ANSI_ARGS_((Tcl_Interp *,char *));
|
|
|
|
EXTERN int exp_default_match_max;
|
|
+EXTERN int exp_default_match_max_changed;
|
|
EXTERN int exp_default_parity;
|
|
EXTERN int exp_default_rm_nulls;
|
|
|
|
@@ -97,6 +98,7 @@ typedef struct ExpState {
|
|
int msize; /* # of bytes that buffer can hold (max) */
|
|
int umsize; /* # of bytes (min) that is guaranteed to match */
|
|
/* this comes from match_max command */
|
|
+ int umsize_changed; /* is umsize changed by user? */
|
|
int printed; /* # of bytes written to stdout (if logging on) */
|
|
/* but not actually returned via a match yet */
|
|
int echoed; /* additional # of bytes (beyond "printed" above) */
|
|
--- tcltk-8.3.1/expect5.31/expect.c.read Fri Nov 16 00:14:15 2001
|
|
+++ tcltk-8.3.1/expect5.31/expect.c Fri Nov 16 11:09:59 2001
|
|
@@ -41,8 +41,17 @@ would appreciate credit if this program
|
|
#include "tcldbg.h"
|
|
#endif
|
|
|
|
+/* The initial length is 2000. We increment it by 2000. The maximum
|
|
+ is 8MB (0x800000). */
|
|
+#define EXP_MATCH_MAX 2000
|
|
+#define EXP_MATCH_INC 2000
|
|
+#define EXP_MATCH_STEP_LIMIT 0x700000
|
|
+#define EXP_MATCH_LIMIT 0x800000
|
|
+#define EXP_MATCH_LIMIT_QUOTE "0x800000"
|
|
+
|
|
/* initial length of strings that we can guarantee patterns can match */
|
|
-int exp_default_match_max = 2000;
|
|
+int exp_default_match_max = EXP_MATCH_MAX;
|
|
+int exp_default_match_max_changed = 0;
|
|
#define INIT_EXPECT_TIMEOUT_LIT "10" /* seconds */
|
|
#define INIT_EXPECT_TIMEOUT 10 /* seconds */
|
|
int exp_default_parity = TRUE;
|
|
@@ -1557,6 +1566,76 @@ expNullStrip(obj,offsetBytes)
|
|
Tcl_SetObjLength(obj,offsetBytes + (dest - src2));
|
|
}
|
|
|
|
+/* returns # of bytes until we see a newline at the end or EOF. */
|
|
+/*ARGSUSED*/
|
|
+static int
|
|
+expReadNewLine(interp,esPtr,save_flags) /* INTL */
|
|
+Tcl_Interp *interp;
|
|
+ExpState *esPtr;
|
|
+int save_flags;
|
|
+{
|
|
+ int size;
|
|
+ int exp_size;
|
|
+ int full_size;
|
|
+ int count;
|
|
+ char *str;
|
|
+
|
|
+ count = 0;
|
|
+ for (;;) {
|
|
+ exp_size = expSizeGet(esPtr);
|
|
+
|
|
+ /* When we reach the limit, we will only read one char at a
|
|
+ time. */
|
|
+ if (esPtr->umsize >= EXP_MATCH_STEP_LIMIT)
|
|
+ size = TCL_UTF_MAX;
|
|
+ else
|
|
+ size = exp_size;
|
|
+
|
|
+ if (exp_size + TCL_UTF_MAX >= esPtr->msize) {
|
|
+ if (esPtr->umsize >= EXP_MATCH_LIMIT) {
|
|
+ expDiagLogU("WARNING: interact buffer is full. probably your program\r\n");
|
|
+ expDiagLogU("is not interactive or has a very long output line. The\r\n");
|
|
+ expDiagLogU("current limit is " EXP_MATCH_LIMIT_QUOTE ".\r\n");
|
|
+ expDiagLogU("Dumping first half of buffer in order to continue\r\n");
|
|
+ expDiagLogU("Recommend you enlarge the buffer.\r\n");
|
|
+ exp_buffer_shuffle(interp,esPtr,save_flags,EXPECT_OUT,"expect");
|
|
+ return count;
|
|
+ }
|
|
+ else {
|
|
+ esPtr->umsize += EXP_MATCH_INC;
|
|
+ expAdjust(esPtr);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ full_size = esPtr->msize - (size / TCL_UTF_MAX);
|
|
+ size = Tcl_ReadChars(esPtr->channel,
|
|
+ esPtr->buffer,
|
|
+ full_size,
|
|
+ 1 /* append */);
|
|
+ if (size > 0) {
|
|
+ count += size;
|
|
+ /* We try again if there are more to read and we haven't
|
|
+ seen a newline at the end. */
|
|
+ if (size == full_size) {
|
|
+ str = Tcl_GetStringFromObj(esPtr->buffer, &size);
|
|
+ if (str[size - 1] != '\n')
|
|
+ continue;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ /* It is even trickier. We got an error from read. We have
|
|
+ to recover from it. Let's make sure the size of
|
|
+ buffer is correct. It can be corrupted. */
|
|
+ str = Tcl_GetString(esPtr->buffer);
|
|
+ Tcl_SetObjLength(esPtr->buffer, strlen(str));
|
|
+ }
|
|
+
|
|
+ break;
|
|
+ }
|
|
+
|
|
+ return count;
|
|
+}
|
|
+
|
|
/* returns # of bytes read or (non-positive) error of form EXP_XXX */
|
|
/* returns 0 for end of file */
|
|
/* If timeout is non-zero, set an alarm before doing the read, else assume */
|
|
@@ -1571,6 +1650,8 @@ int save_flags;
|
|
{
|
|
int cc = EXP_TIMEOUT;
|
|
int size = expSizeGet(esPtr);
|
|
+ int full_size;
|
|
+ int count;
|
|
|
|
if (size + TCL_UTF_MAX >= esPtr->msize)
|
|
exp_buffer_shuffle(interp,esPtr,save_flags,EXPECT_OUT,"expect");
|
|
@@ -1587,11 +1668,43 @@ int save_flags;
|
|
}
|
|
#endif
|
|
|
|
-
|
|
+ /* FIXME: If we ask less than what is available in the tcl buffer
|
|
+ when tcl has seen EOF, we will throw away the remaining data
|
|
+ since the next read will get EOF. Since expect is line-oriented,
|
|
+ we exand our buffer to get EOF or the next newline at the end of
|
|
+ the input buffer. I don't know if it is the right fix. H.J. */
|
|
+ count = 0;
|
|
+ full_size = esPtr->msize - (size / TCL_UTF_MAX);
|
|
cc = Tcl_ReadChars(esPtr->channel,
|
|
- esPtr->buffer,
|
|
- esPtr->msize - (size / TCL_UTF_MAX),
|
|
- 1 /* append */);
|
|
+ esPtr->buffer,
|
|
+ full_size,
|
|
+ 1 /* append */);
|
|
+ if (cc > 0) {
|
|
+ count += cc;
|
|
+ /* It gets very tricky. There are more to read. We will expand
|
|
+ our buffer and get EOF or a newline at the end unless the
|
|
+ buffer length has been changed. */
|
|
+ if (cc == full_size) {
|
|
+ char *str;
|
|
+ str = Tcl_GetStringFromObj(esPtr->buffer, &size);
|
|
+ if (str[size - 1] != '\n') {
|
|
+ if (esPtr->umsize_changed) {
|
|
+ char buf[20]; /* big enough for 64bit int in hex. */
|
|
+ snprintf(buf,sizeof(buf),"0x%x", esPtr->umsize);
|
|
+ expDiagLogU("WARNING: interact buffer is not large enough to hold\r\n");
|
|
+ expDiagLogU("all output. probably your program is not interactive or\r\n");
|
|
+ expDiagLogU("has a very long output line. The current limit is ");
|
|
+ expDiagLogU(buf);
|
|
+ expDiagLogU(".\r\n");
|
|
+ }
|
|
+ else {
|
|
+ cc = expReadNewLine(interp,esPtr,save_flags);
|
|
+ if (cc > 0)
|
|
+ count += cc;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ }
|
|
i_read_errno = errno;
|
|
|
|
#ifdef SIMPLE_EVENT
|
|
@@ -1612,7 +1725,7 @@ int save_flags;
|
|
}
|
|
}
|
|
#endif
|
|
- return cc;
|
|
+ return count > 0 ? count : cc;
|
|
}
|
|
|
|
/*
|
|
@@ -2667,8 +2780,14 @@ char **argv;
|
|
return(TCL_ERROR);
|
|
}
|
|
|
|
- if (Default) exp_default_match_max = size;
|
|
- else esPtr->umsize = size;
|
|
+ if (Default) {
|
|
+ exp_default_match_max = size;
|
|
+ exp_default_match_max_changed = 1;
|
|
+ }
|
|
+ else {
|
|
+ esPtr->umsize = size;
|
|
+ esPtr->umsize_changed = 1;
|
|
+ }
|
|
|
|
return(TCL_OK);
|
|
}
|