home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-06-12 | 62.6 KB | 1,510 lines |
- This is the HISTORY file for Expect. Modifications made by Cygnus
- support are in ChangeLog. - Don
-
- Date Version Description
- ------- ------- ------------------------------------------------------
- 6/12/93 4.7.3 fnf@fishpond.cygnus.com noted minor type problems. Rob Savoye
- noted trap SIGINT overrode debugger handler. Default should
- be reverse.
-
- 6/8/93 4.7.2 Added debugger to public release.
-
- 6/7/93 4.7.1 Ed Oskiewicz <eo@ansa.co.uk> noted prototype botch - exp_cook.
- Owen Rees <rtor@ansa.co.uk> noted missing decl - tclRegexpError
-
- 6/6/93 4.7.0 Gert Bultman <bultman@dgw.rws.nl> exposed a bug in interact's
- -update.
-
- 5/27/93 4.6.0 Rick Sladkey <jrs@world.std.com> fixed a bug in send_log -
- checking a master needlessly and indexing off the end of an
- array.
-
- Rob Savoye made change for detecting libpt.a, modified
- autoconf for better handling of X, exec_prefix, and ranlib.
-
- Kris Woeppel <krisw@cs.athabascau.ca> said SVR3 doesn't have
- wait.h.
-
- Made libexpect.a understand regexp. Reorganized code. It
- now requires Tcl to be installed first, although it uses only
- a few utility routines. Hopefully this isn't a problem for
- anyone.
-
- Zack Xu <zack@cs.wisc.edu> noted exp_main.h needed C++ support.
-
- Pascal Meheut <pascal@cnam.cnam.fr> gave fix for skipping over
- null bytes while interact is pattern matching.
-
- Added "--" to expect, interact, and send.
-
- Added support for associating multiple -i's with a single
- pattern, and -i's with no pattern for use with spawn_id_any.
-
- Made interact work with systems that lack select/poll.
-
- Added code and #defines for debugger. Debugger itself is not
- yet available.
-
- 4/19/93 4.5.2 Achim Flammenkamp <achim@HRZ.Uni-Bielefeld.DE> noted that I
- documented full_buffer as buffer_full.
-
- Ted Stockwell <ted@sirius.aggregate.com> noted that wait arg
- was missing an & in configure test.
-
- Scott Hess noted that systems can have wait4 without waitpid.
-
- Jonathan Kamens <jik@gza.com> noted/fixed some things that
- weren't autoconf'd correctly: pid_t, RETSIGTYPE, malloc.
-
- Gary Shea noted that a recent change to expectk made it not
- default to interactive.
-
- 4/12/93 4.5.1 At request of Rusty Wilson <zrlw05@hou.amoco.com>, added
- "-console" to spawn.
-
- Pang Wai Man Raymond <wmpang@cuse1.se.cuhk.hk> reported that
- passmass didn't grok DEC's passwd prompts for root.
-
- 4/7/93 4.5.0 Fixed bug in interact regexp preventing match of multichar
- literals.
-
- 4/6/93 4.4.3 Bennett Todd <bet@sbi.com> noted missing example scripts
- timed-read and time-run.
-
- 3/29/93 4.4.2 Bill Houle <Bill.House@SanDiego.NCR.COM reported fixes
- for SVR4 pty support to compile.
-
- Made string matcher understand *$. Documented tty_spawn_id.
- Made command line -i override -f.
-
- For Tuan Doan <tdoan@bnr.ca> on HP, make kibitz use domainname
- as fallback and used whoami instead of env(USER).
-
- Fixed bug in the generic pty code that could report out of ptys
- because an earlier slave slowly deleted the lock file.
-
- 3/25/93 4.4.1 Stephen House <sdhouse@bnr.ca> reported exp_tk.c wouldn't
- compile on HP. Fixed.
-
- 3/24/93 4.4.0 Added back SVR4-style pty allocation which got omitted in the
- autoconfig process. Fixed bug in interact's -update handling.
- Fixed bug in weather script that cut off long reports.
-
- 3/15/93 4.3.0 Cleaned up /tmp files used during pty locking.
-
- Added command "parity" to enable parity stripping. Fixed
- match_max to do -i correctly.
-
- 3/15/93 4.2.4 Fixed to work on new SGI which returns slave-close via excep
- (select) or POLLERR (poll) rather than thru read(). Why do you
- people do things like this?
-
- 3/12/93 4.2.3 Fixed to work on AIX (using /dev/ptc) and UTS (using getpty).
-
- 3/11/93 4.2.1-2 Fixed numerous bugs relating to HP ptys. It's amazing that for
- their bewildering complexity, they couldn't support generation
- of EOF to the master (or at least enable trapping of just
- close), rather than forcing the code to know about opens, too.
-
- 3/8/93 4.2.0 Integrated Rob Savoye's autoconfig code.
-
- Interact mishandled new -eof flag. Added -update.
-
- Gary Shea <shea@cs.ukans.edu> noted that tkwait hung if
- expect had been called. Rewrote most of tk_event.c and fixed
- some other problems related to efficiency & multiple timeouts.
-
- E Beck <beck@qtp.ufl.edu> suggested mods to more easily support
- Extended Tcl.
-
- Bill Mitchell <mitchell@mdd.comm.mot.com> reported problems on
- 4.3+BSD. Added support for TIOCSCTTY.
-
- Dana Burd <dana@wrs.com> noted that "exit" caused by ^C during
- expect didn't work - just returning to expect. Fixed, and then
- removed "feature" of ^C to abort a timeout. This feature
- proved a lot less useful than I thought it would.
-
- 2/21/93 4.1.0 Bill Tierney <wtierney@leland.stanford.edu> noted that double
- close dumped core. Rewrote fd_to_f and close/adjust functions.
-
- Interactive interpreter() didn't properly wait in
- get_next_event, so Tk stopped responding to events.
- Wrote version of interpreter that shares expect's input buffers
- but can't think of a use. Left as an ifdef SHARE_CMD_BUFFER.
-
- 1/26/93 4.0.1 Added eof check to xpstat. Removed incorrect and unnec.
- #includes from exp_main_exp.c
-
- Chip Rosenthal <chip@chinacat.unicom.com> found my refs to
- tclRegexpError need externs on systems that don't use Tcl's
- string.h. string.h should probably be changed not to refer to
- tclInt.h.
-
- Added FAQ about Expect's copyright status.
-
- Mark Christopher <christo@bnr.ca> pointed out some really
- stupid errors in the HP support for select.
-
- 12/16/92 4.0.0 Rewrote interact. Made re-entrant thru event-handler for Tk.
- (Same for Expect.) Abstracted out common code so that
- remainder is specific to select vs poll vs tk (although
- "simple" was impossible to handle). Added timeouts, regexps
- (at request of numerous people), ability to set up arbitrary
- graphs of process flows, and some miscellaneous but useful
- functionality. New flags are: -input, -output, -re, -echo,
- -flush, -eof.
-
- Added "-noecho" to spawn command.
-
- Added getpid command. Something with this functionality should
- be added to the Tcl core. When it is, this function will go
- away.
-
- Removed assumption of global "interp" handle. Rewrote init
- and other routines for use as libraries. Added appropriate
- glue to Makefile.
-
- At request of Rob Savoye <rob@cygnus.com> added "send_log" and
- disabled buffering on all output. The only affect unbuffered
- output will cause users is if they pass large strings in
- multiple args to send.
-
- Ray Davis <rdavis@masschaos.de.convex.com> reported Convex
- could not do job control from spawned procs. I added a symbol
- DO_SETSID to force this.
-
- Martin Leisner modified rftp to understand iftp. I added it
- to the publicly donated scripts directory.
-
- 11/17/92 3.24.1 Martin Leisner suggested Makefile use $(MAKE) and support Tcl
- as a Sun shared library.
-
- Seth Perlman <seth@welchgate.welch.jhu.edu> suggested interact
- support timeout. I've added this as "-timeout" in inter_select
- but left undocumented while we experiment with interface.
-
- Joe VanAndel <vanandel@ncar.ucar.edu> pointed out that su2
- script still used old syntax. Fixed.
-
- Konrad Haedener <haedener@iacrs1.unibe.ch> fixed a bug in
- POSIX tty handling on AIX. Surprisingly, we discovered AIX
- worked just fine when pty_bsd is used and without -DPOSIX!
-
- Doug (George Jetson) <pynq@midway.uchicago.edu> pointed out
- that a spawn_id for /dev/tty would be really handy. I added
- tty_spawn_id for this purpose.
-
- 11/4/92 3.24.0 After problem reported by James Ward <jew@sunquest.com> added
- to man page describing delays required by hardware such as for
- UART switching.
-
- Recoded all \C sequences as \### in examples and man page in
- anticipation of them going away in next version of Tcl.
-
- Switched to printing errorInfo during errors instead of the
- command and only the top-level error message. Since this
- includes entire stack, this should be very helpful.
-
- J. Cazander <cazander:pasichva via serigate@phcoms.seri.
- philips.nl> reported that purify found a write beyond the end
- of an input buffer. Lucked, it was just before a double-word
- boundary, so it probably isn't a problem. I fixed it anyway.
-
- 10/9/92 3.23.1 Tor Lillqvist <tml@tik.vtt.fi> supplied support for HP 8.0.7 in
- POSIX-mode, and a bugfix for POSIX tty mode switching
-
- 10/8/92 3.23.0 Larry Rogers <lrr@Princeton.EDU> reported that "weather" blew
- up in spawn. I'll add a catch-all to the script to report
- similar problems (out of ptys, processes, etc.)
-
- Ting Leung <tleung@bnr.ca> notes that log() in human_write can
- receive a 0 (domain error). Fixed unit_random to avoid that.
-
- Tony Primavera <aprima@xox.ssc.af.mil> notes that the sample
- archie script needs to understand mcgill's limit of 10 users.
- Tor Lillqvist <tml@tik.vtt.fi> noted that a lesser-used pattern
- ("unknown...") is incorrect.
-
- Grant Taylor <gat@pecan.cray.com> found a problem when forking
- (using Expect's fork) multiple processes, each of which spawned
- something. In the BSD pty support, I had used the pid to build
- a temporary file for testing the pty before actual use. When
- multiple processes tried to use the same tempfile, it blew up.
-
- 8/12/92 3.22.13 Corey Satten pointed out that -u on cat caused kibitz to slow
- down on Ultrix. I see the same behavior on SunOS. I added an
- option to fix it for systems that need it. Corey also noted
- arg miscounting in kibitz, and pointed out that world-readable
- fifos could be a security problem. He gave a fix for this and
- also a fix to force ptys to be put into raw mode.
-
- Terrence Brannon <tb06@pl122e.eecs.lehigh.edu> reported rftp
- referenced the undefined variable 'transfer'. Turned out to be
- a bug in the code to handle symbolic links.
-
- 7/20/92 3.22.12 Added O_NOCTTY (if defined) in pty_bsd.c to avoid gaining
- control terminal while testing pty when running as daemon.
-
- At request of Michael D. Riley <riley@mbeya.research.att.com>
- added explanation to man page - how expect_after/before deal
- with spawn_id.
-
- Charles Hannum discovered the problem with AIX (see earlier)
- was a missing "extern" in the errno declaration. Also, the
- compiler was sensitive to a lack of access to the defn of
- struct expect_special.
-
- Dave Coombs gave me yet another fix for the weather server to
- accomodate its ever continual change.
-
- 7/2/92 3.22.11 Yet more work. Discovered that SunOS and Ultrix really like
- setpgrp(0,0) much better than setpgrp(0,getpid()) but the
- manual doesn't describe well why this seems to work better.
- (The old call worked inconsistently.)
-
- 6/30/92 3.22.10 Did more work on modifications to dissolve connection between
- stdio and devtty. Eventually, I'd like to add a separate
- spawn_id for devtty (expect_devtty?).
-
- 6/5/92 3.22.9 Hansel Wan <hhw0@gte.com> noted that $errorInfo was clobbered
- by prompt1. To prevent this, I added a default definition
- for prompt1 (and prompt2 while I was at it).
-
- Unnati Amin <uxa@po.cwru.edu> noted that the example scripts
- checked for $ in prompts which didn't work. This bug was
- created when $ was turned into a "match end-of-input" char
- in the transition from v2 to v3. Solution: backslash the $.
-
- A few parts of code assumed spawn_id was always stdin, which
- caused "send" to send to stdout, which meant succeeding
- expect's hung, waiting forever. Fixed is_user macro.
- This was a problem with scripts that redirected stdin or
- somehow reused fd 0. Surprising that no one ever did that
- before - also surprising that it didn't bother cron jobs.
-
- 6/2/92 3.22.8 Man pages fixes from Matt Crawford crawdad@fncent.fnal.gov.
-
- 5/12/92 3.22.7 Missing ; in Makefile, screwed up chmod.
-
- Fixed bug that caused interact to think the modes had changed
- when they hadn't.
-
- 5/11/92 3.22.6 Added regression paper to ftp archive - published in the 1992
- USENIX San Antonio Proceedings.
-
- Swapped setpgrp and fork in disconnect command for sysV88.
- According to Dave Schmitt <daves@techmpc.csg.gss.mot.com>,
- original code (right out of Stevens) starts the child with
- closed stdio fds.
-
- Fixed bug in interact that changed /dev/tty modes even if
- interact was used to connect two completely different ttys.
- Had never been a problem before, but today I wrote some code
- that actually calls interact from cron! Also, copied the
- experimental fix from 3.22.5 to inter_poll.
-
- Jeremy Nussbaum <jeremy@world.std.com> says cat needs "-u" in
- kibitz for his HP 8.0 system to work. I wonder why this has
- never been a problem on earlier HP and other systems?
-
- Forced Makefile to mark scripts executable.
-
- 4/12/92 3.22.5 Fixed bugs reported by Matt Ranney <mjr@uther.Calvin.EDU>
- including a syntax error (!) in expect.c on ecases_inuse.
- I didn't even compile this before pushing out? He also noted
- some # were not in column 1.
-
- I put in an experimental fix to interact (only in select
- version currently) to fix when pattern matching from master
- and user needs to continue typing in order to complete match.
-
- 4/3/92 3.22.4 Charles Hannum (mycroft@gnu.ai.mit.edu) pointed out that I
- screwed up a comment in the brand new pty_aix3.c. He also gave
- me a fix for an arg-less expect, which did a malloc(0). And
- he said that AIX ptys return EOF in yet a new way - read()
- returns -1 with errno == 0. Yuck.
-
- 3/29/92 3.22.3 Jay Schmidgall gave me yet another pty_aix3.c. He also gave
- ifdefs for POSIX terminal support.
-
- 3/18/92 3.22.2 Jay Schmidgall <shmdgljd+@rchland.ibm.com> modified pty_sgi3.c
- to make a pty interface for recent versions of AIX.
-
- Steve Summit <scs@adam.mit.edu> noted that "trap 0" could
- actually call signal(0...)
-
- Martin Leisner <Martin_A._Leisner.Henr801C@xerox.com> noted
- that rftp was broken. It seems I never handled symlinks. They
- are interesting. You can't tell from the listing whether they
- are files or directories, so you just have to blindly go ahead
- and assume it's one or the other and see what happens!
-
- 3/11/92 3.22.1 In talking to Dave Schmitt ,daves@techmpc.csg.gss.mot.com>,
- realized the documentation for wait had never been updated
- from the way it used to work in v2 (returning any pid).
-
- 3/11/92 3.22.0 Another question from Ron, prompted me to find another bug.
- interact -o wrongly manipulated the user buffer at one point.
-
- 3/10/92 3.21.0 Ron Young <ron@nevada.edu> found that spawn failed on a
- DECstation 3100 running Ultrix 4.2. I had forgotten to test
- that cmdfile was valid before comparing against stdin in fix
- related to fflush in 3.20.0.
-
- While I was on a DECstation, I noticed that it does not accept
- setpgrp(...,0). Changed 2nd arg to getpid().
-
- 3/6/92 3.20.2 Stefan Farestam <farestam@orion.cerfacs.fr> provided a new
- version of pty_sgi.c which uses _getpty. I renamed the old
- one pty_sgi3.c
-
- 3/3/92 3.20.1 Brian Woodson requested I update the dates and version numbers.
-
- 3/1/92 3.20.0 Prompted by a question from Ken Mandelberg, added -raw to
- noidle and kibitz script.
-
- Fixed fflush(cmdfile) again, having been authoritatively told
- by net wisdom that there is no way to portably fflush a shared
- read-stream. (I take back my claim about a bug in HP's fclose!)
-
- John Sellens gave me some more fixes for non-DEC MIPS OS.
-
- 2/22/92 3.19.1 John Sellens <jmsellen@watmath.waterloo.edu> gave me a bug
- fix for NOWAITPID.
-
- 2/21/92 3.19.0 Found a bug in HPUX fclose!! It moves the I/O pointer in the
- shared file table entry! This explains the symptoms I reported
- earlier. Fortunately, it's easy to code around (by me - it is
- no longer necessary to fudge the scripts).
-
- Added some stuff to the man page to explain why expect behaves
- the way it does in an emacs shell window and how to live with
- it.
-
- 2/21/92 3.18.0 Worked on the HP port some more. The HP causes a real problem
- by insisting SIGCLD be delivered in order for wait to return
- a status. This royally complicated the code, partly because
- of the special casing all over the place in the trap command,
- the asynchronous delivery of SIGCLD and also because Tcl itself
- is not prepared to have system calls be interrupted. Cleverly,
- the HP also defines both CLD and CHLD which threw my macros
- off at first. Thanks, but I don't this kind of help!
-
- Anyway, the end result is that on the HP, SIGCLD is ignored.
- The manual claims wait status will not be delivered but it
- seems to be anyway. Good grief! (Even if it were ignored,
- it would not be such a calamity, since wait is used mainly
- to discard zombies on other systems.)
-
- A remaining problem is that there appears to be some odd
- interaction, perhaps with fork, such that the script is rolled
- back at eof if a spawned process happens to exit at the same
- time. The solution for now is to exit all scripts via exit
- rather than letting exit be called implicitly. There must be
- some real bug, but I'm unable to find anything after lots of
- testing, line and Saber. At the moment, I'm highly suspicious
- of the HP itself rather than expect.
-
- Bob Proulx and Jeff Okamoto supplied me with patches for
- inter_select.c. HP transmits some pty interactions via the
- exception field in select.
-
- Michael Grant gave me a mod to grok ~ in the logfile and
- debug commands.
-
- 2/17/92 3.17.1 Brian Keves <keves@meaddata.com> pointed out that the man page
- still referred to "expect_match" instead of "expect_out".
-
- 2/12/92 3.17.0 Eric Arnold <Eric.Arnold@corp.sun.com> ran into a problem
- when running in the background. interact did ioctl(0...)s to
- change the terminal mode, ignoring the -u flag.
-
- Fixed a bug in kibitz which blew up when asking for a password
- due to a spelling error. The drawbacks of interpreters...
-
- 2/4/92 3.16.3 Dongchul Lim <lim@doctor.chem.yale.edu> noted that scripts can
- hang in the background. I had assumed isatty(0) was enough to
- contrast bg/fg but it returns 1 if the script was started with
- a & from the terminal. I added code to watch if any ioctl(0)s
- were done. If so, than it is safe to do more, in particular
- in the exit handler to reset the terminal modes.
-
- 1/28/92 3.16.2 Fixed a bug on SV systems causing errors when trying to do
- further reads after a SIGCLD had already arrived on a spawn_id.
-
- Peter Funk <pf@artcom0.north.de> gave mods for SCO XENIX 386.
-
- 1/24/92 3.16.1 Oops. Forgot to add pty_svr4.c to shar.
-
- 1/13/92 3.16.0 Karl Lehenbauer <karl@sugar.NeoSoft.Com> a tiny change for
- getting a clean compile on SCO 3.2.2.
-
- My getimeofday-avoidance code wasn't right, sigh. Kibitz
- noticed. Fixed two other bugs in kibitz - password request
- was for wrong user and it timed out but shouldn't have.
-
- Note: seems to work fine with new version of Tcl: 6.2
-
- 1/13/92 3.15.1 Added a bit of code to avoid gettimeofday system calls when
- timeout == -1. Fixed minor bugs in kibitz relating to cleaning
- up and returning error messages.
-
- Redid support for stdlib.h including making it default to fix
- problem in Ultrix 4.2 reported by Oliver Kretzschmar <viskretz
- @ikesg1.energietechnik.uni-stuttgart.de>.
-
- Ian Johnstone <ianj@sequent.com> said his system (DYNIX 3.2)
- needed an additional include <ctype.h> in inter_select.
-
- Dave Coombs <cme.nist.gov> added logic to test/weather to
- accomodate a new feature in the weather server.
-
- Hal Peterson fixed some SV code that I just added for handling
- SIGCLD properly. He made the Cray-extra-child timeout in half
- the normal timeout to allow distinguishing between eof and real
- timeout. Finished rest of Jeff Okamoto's fixes for HPUX.
-
- Wally Strzelec <packman@tamuts.tamu.edu> provided mods for
- Amdahl which has its own pty-handling functions. Ifdef'd into
- pty_usg.
-
- 12/30/91 3.15.0 Fixed a bug that struck when eof occurred when reading from
- multiple processes simultaneously and no user-supplied eof
- handler.
-
- 12/26/91 3.14.1 Ted Gibson <tgibson@logdis11.hq.aflc.af.mil> gave me some mods
- for a 3B2 having to do with termio vs termios, etc.
-
- 12/24/91 3.14.0 Deprecated expect 2. Expect 3 is now the official version.
-
- Parag Patel <parag@netcom.netcom.com> gave me some #includes
- necessary for A/UX 2.
-
- Brian Woodson noticed "send a b" generates incorrect debug
- output.
-
- Working with Jeff Okamoto to run expect on HP/UX 8.0, we fixed
- SIGCLD catching (he says HPUX doesn't ignore them by default?),
- obviating longjmp from stomping locals, fixed a bug in cmdWait
- that would prevent the wait status from being collected in
- rare situations.
-
- 12/17/91 3.13.1 James Davis suggested fixing Makefile to handle case where no
- example scripts should be installed. I added similar logic
- for script man pages.
-
- Pete Siemsen fixed a bunch of things in the Makefile including
- where to get expect when invoking fixline1. He suggested defs
- for supporting install and multiple MAN targets.
-
- 12/12/91 3.13.0 Matthew Freedman <mattf@cac.washington.edu> noted mismatch
- between lib man page (said "stty_init") and lib code (said
- "exp_stty"). He also found a screwup in the library such that
- the pty slave wasn't being set up correctly.
-
- Added note to kibitz man page on how to kibitz with 3 or more.
-
- 12/12/91 3.12.0 "expect *" worked incorrectly if it was first expect after
- spawn, due to buffer not being initialized.
-
- Added a good example for "expect -continue" to man page.
- Added an FAQ about a gcc problem that seems to be common.
-
- 12/11/91 3.11.2 James Davis noted I forgot to put kibitz.man in distribution.
- I changed kibitz to read domain from resolv.conf instead of
- calling domainname(1) for systems upon which NIS domainname
- differs from Internet.
-
- Pete Siemsen <siemsen@barnard.usc.edu> noted slight error in
- libexpect man page.
-
- 12/10/91 3.11.1 A couple tiny mods to the Makefile courtesy of James B. Davis
- and Michael Grant (guest worker from Sun, temporarily at
- <mgrant@xdr.ncsl.nist.gov>. Both of them also noted a problem
- caused by incorrect installation of gcc that caused expect to
- say "ioctl(set): Invalid something or other" upon exit.
-
- Fixed complaint about exit() while compiling without STDC.
-
- 12/9/91 3.11.0 beta!
-
- Hal Peterson provided fixes for UNICOS 6.1 and 7.0 on both
- CRAY-2 and CRAY Y-MP. He also fixed a problem in interact
- where malloc(0) could've occurred.
-
- Added support for allowing user to set interpreter prompt.
-
- Added forgotten -d flag to match_max in rftp script.
- Made kibitz understand user@host.
-
- Expect's internal buffer-full-handling incorrectly copied
- the latter buffer half beginning from the end of the buffer.
-
- 12/5/91 3.10.1 Massaged Makefile to allow for more flexibility in
- installation, especially with regards to scripts. #! is now
- reset.
-
- Added "kibitz", a really cute script to let two people control
- one program. Example users are for one person to help another
- remotely, logging a conversation (run emacs or whatever inside
- kibitz and your conversation can be logged, scrolled backwards,
- etc., or of course, playing games together.
-
- 12/4/91 3.10.0 Tightened up arg checking for "wait" - it core dumped when it
- should've said "syntax error".
-
- Rick Cady <rickc@nsd.3com.com> noted minor inconsistency in man
- page describing strace.
-
- I fixed a bug that prevented "system stty -echo raw" from
- working. The raw data was clobbering the -echo data.
-
- 12/3/91 3.9.0 Brian Woodson noted that "close -i ..." evoked a syntax error.
- I had parsed the arguments incorrectly.
-
- After the nth request, I finally set up pub/expect/scripts as
- a directory for scripts.
-
- 12/2/91 3.8.0 Phil Sheperd <pshepher@loki.uni.edu.au> fixed a major bug in
- exp_spawnv() preventing one side of the pty from being set up
- correctly. Thus nothing worked! He also reported that his
- system didn't have strdup, so I added an explicit defn of it.
-
- James B. Davis fixed a couple nroff-bugs on the man page, and
- said someone already gave him a dump script (see below).
-
- Richard (R.C.) Vieregge <richv@bnr.ca> found a $ was missing
- from test/ftp.exp.
-
- 11/22/91 3.7.2 James B. Davis <james@solbourne.com> straightened out a couple
- things in the Makefile and asked if anyone had written a script
- for dump.
-
- Jeff Okamoto <okamoto@hpcc25.corp.hp.com> had a couple changes
- for HPUX 7 and 8 compat, involving termio stuff.
-
- Prompted by Andy Norman, added note to man page describing how
- to disable all argv processing while using #!.
-
- Converted passmass and rftp over to new version.
-
- 11/15/91 3.7.1 Brian Woodson asked me about the Tcl_WaitPids "got unknown
- process" panic. This is a Tcl bug that John has promised
- to fix. I'll document how to avoid it in the man page.
-
- Incidentally, I'm going under the knife tomorrow for three
- torn cartilage in my wrist. The doctors say it may be a couple
- days to couple months. Until I get back, hang in there.
-
- 11/13/91 3.7.0 Yet another bug discovered (and fixed). "expect eof" was
- failing to remember the buffer, and expect_out(buffer) was
- empty upon return.
-
- Brian Woodson noted I forgot to document the -i flag of close.
-
- 11/12/91 3.6.0 Sean Cunningham <sean@moorenet.com> reported that he couldn't
- open /dev/tty from 'at'. 'spawn' was incorrectly not executing
- code to claim it was a controlling tty. BSD only.
-
- 11/11/91 3.5.1 Brian Woodson notes that version 2 and 3 treat the following
- differently.
-
- proc p {} {spawn s}; expect
-
- In v3, spawn_id is locallized by the proc, and thrown away when
- p returns. Unfortunately, in v2 due to some sloppy coding on
- my part, spawn always affected the global value of spawn_id.
- This differed from the handling of other variables, and in v3,
- this unusual behavior had to go, because the multiprocess
- handling and the large number of variables implicitly set
- (especially by the expect command) demanded that I be more
- systematic about how this was done.
-
- Since I never depended on this behavior, I never documented it
- as being something you should rely upon. Alas. To fix it, add
- the line
-
- global spawn_id
-
- to the beginning of any proc that calls spawn and needs the
- value of spawn_id implicitly defined outside of the proc.
-
- 11/6/91 3.5.0 Drew Whitehouse <Drew.Whitehouse@anu.edu.au> hit a bad pointer.
- I forgot an initialization in expect.c which caused problems
- when an EOF occurred which had no eof pattern.
-
- 11/2/91 3.4.0 Added FAQ from various questions people have sent me and my
- replies. Made CONVERTING file on converting from 2 to 3.
-
- Nelson H. F. Beebe <beebe@math.utah.edu> found a missing
- declaration for exp_tty_original in bye() of main.c. How come
- the Sun C compiler doesn't complain about this!?!!?
-
- Nelson also reported that SunOS 4.0.3 had a problem including
- varargs. It turned out that old varargs had check for
- reinclusion, and tclInt.h also includes it. So I added an
- #ifdef va_dcl and put my inclusion after tclInt.h.
-
- 10/31/91 3.3.0 Converted most of the examples. Three more to go.
- Worked on man page some more.
-
- Modified expect so that if timeout > 0, and nothing in the
- buffer matched, it will force a read, no matter how long the
- preceeding code took. This may be hard to understand, but is
- the intuitive behavior that I always desired.
-
- 10/30/91 3.2.0 Fixed bug in eof handling. Converted some more of the
- examples, and added to Makefile.
-
- 10/29/91 3.1.0 Fixed slight bugs in tty mode switching, pty initialization
- (via stty).
-
- Fixed expect library. Fixed compatibility code for non-BSD
- systems. As usual, I could only test it so far, not having
- all these systems at my disposal. I don't expect major
- problems though, since the basic functions I depend on haven't
- changed.
-
- Completely rewrote handling of continue, return, etc in
- expect, interact, interpreter. It's actually systematic now.
-
- Checked with John O. about some code to bounce wild return
- codes, which he said was a mistake and would remove, so now I
- can pass my own return codes different from Tcl's.
-
- To get | to return -> TCL_RETURN TCL_OK (no return)
- V
- expect return default continue -expect
- interact return -tcl return default
- interpreter return -tcl return default
-
- What this table says is, to get "interpreter" (for example) to
- return TCL_RETURN to its caller, you must say "return -tcl",
- because "return" makes it return TCL_OK.
-
- The "argumented" versions are considered to be the uncommon
- form. In particular, I'd be surprised if anyone ever uses
- the -tcl argument, but it's there for completeness and
- consistency now.
-
- Put together a FAQ. Needs more work, but hopefully worthwhile
- as is.
-
- Computing Systems with Expect article appeared a couple days
- ago. How ironic that it describes the old version of Expect.
- Nonetheless, it looks ok.
-
- 10/25/91 3.0.0 alpha!
- First release of Tcl-6.0-ready code.
- It might fly for a couple seconds.
-
- Here is a quick list of changes. Besides Tcl incompatibilities, Expect
- incompatibilities are flagged below as:
-
- ** major - scripts definitely won't run if they depend on this
- * minor - scripts probably will run but there is some subtle
- change that should be examined).
-
- ** Select renamed 'ready' and undocumented. Seems pointless now.
-
- Added support to expect command for waiting on patterns from
- different processes. The old version implemented this via
- 'select' but but it is much simpler via expect. Added -i to
- a number of commands to signify a spawn_id which overrides
- the variable.
-
- Added any_spawn_id to match any spawn_id.
- An explicit null pattern, forces a spawn_id to be considered
- when all it can possibly match are any_spawn_id patterns.
-
- * output is no longer flushed to expect_match upon timeout.
- May be multiple buffers now, so it doesn't make sense to
- flush just one.) -n was added to disable transfers from input
- buffer to expect_match var. I suspect it will only be used
- for experimentation.
-
- Added expect -re for regular expressions. Added expect_out
- array to retain indices and strings of partial matches for
- ** for both glob and re. expect_match has been renamed
- expect_out(buffer).
-
- A la Tcl, added -nocase for both types of patterns. (Oddly,
- Tcl's case only does it for regexps.)
-
- By popular demand, unanchored glob patterns. Old patterns
- will continue to work, since earlier interpretation was much
- stricter. Unfortunately, unanchored matches make certain user
- errors easier. For instance, people will send answers before
- seeing all of the question. Typically, output can 'look'
- ugly, as answers land in the middle of other things.
-
- To anchor patterns, use ^ in beginning and/or $ at end.
-
- Added expect_out(spawn_id) to report which spawn_id was read.
-
- Made expect and variants understand all args as one arg.
-
- Added 'default' pattern.
-
- Added continue_expect command.
-
- Added expect_before, expect_after commands which take same
- args as expect, but continue to stay in effect for all expects.
-
- ** Added match_max command, deleted it as a variable. The old
- way was too coarse for use over multiple spawn_ids. With no
- arg, returns current max. Takes -i flag and -d for default.
-
- Added globbing to spawn command.
-
- Added optional -i spawn_id to wait.
-
- Added optional -i to send (and all it's variants).
-
- Renamed trace to 'strace' since it conflicts with Tcl's new
- trace command. Since 'trace' traces variables, I figured
- 'strace' wasn't too bad (for "statement trace"). I felt
- obliged to make it short and not as obliged to make it as
- meaningful since it will probably invariably be typed by hand.
-
- Made timeout == -1 mean infinity.
-
- Made interact do pattern matching in both directions via
- use of -o flag.
-
- Added -F flag for convenience. If -f or -F used, interact
- can no longer be overrun. In particular, if more characters
- arrive then match a pattern, remaining characters will be
- buffered rather than thrown away (old behavior).
-
- Patterns may now be substrings of one another.
-
- Made interact optionally take all args as one.
-
- Default action is now 'interpreter' (see below).
- interpreter now forces cooked mode, and echos results
- so you don't have to constantly say "send_user [...]\n"
-
- * Interact reads characters that have been buffered but not
- matched by expect. And vice versa. Does anyone care?
- (My rogue script did.)
-
- From discussion with John Conti, I decided to make
- 'interpreter' a separate command to start up interactive
- command processor. Changed default action in interact to this.
- Added eval depth and event id to prompt to interpreter.
-
- Added expect_library which contains path for commonly
- sourced expect scripts. Automatically source expect.rc
- out of expect_library unless -N given. Automatically source
- ~/.expect.rc unless -n given.
-
- Added expect_version command to print and/or verify script
- is compatible with running expect. Tcl version is also tested.
- Felt it was worth making this a command because it's such a
- pain to tear apart version strings.
-
- Tcl's close and exit are both subsumed by expect's commands
- of the same name.
-
- Rewrote mode switching code so that "system stty" is handled
- specially. This allows interact and interpret to get the modes
- they want, without burning the user. It is now much easier
- to leave expect in raw mode all the time, but the choice is
- up to the user.
-
- Added vgrindefs, courtesy of Brian Fitzgerald.
-
- 9/23/91 Tcl 6.0 released. This new Tcl has some incompatibilities
- with the old Tcl, so as long as everyone is changing their
- scripts already, I'm taking the opportunity to make some
- incompatible changes to Expect that I've wanted to do for a
- long time.
-
- 9/11/91 2.67 Ed Klein <eklein@syrinx.umd.edu> added support for SVR4 in the
- form of pty_svr4.c and mods to command.c.
-
- Added explanation to man page of how to create unreadable but
- executable scripts. (No, chmod 111 doesn't work.)
-
- Mark Diekhans <markd@grizzly.COM> pointed out to me that there
- is a potential problem with the trap command:
-
- "There is no control over when the signal will cause Tcl_Eval
- to be executed. There is a chance that code in the Tcl library
- will be executing when the signal comes in and the interpreter
- data structure will be in an inconsistent state. This could
- cause all sorts of nasty things to happen. In our Extended Tcl
- (4.0) we added signal handling. but the way we implemented it
- was to have the signal handler set a global flag. We modified
- Tcl_Eval to check the flag after it finishs executing each
- command. If the signal came in, Tcl_Eval then returns an error
- such as: "SIGINT signal received". Signals may then be caught
- with the catch command and processed."
-
- 9/10/91 2.66 Don Jackson <Don.Jackson@Eng.Sun.COM> found a syntax error in
- the usage error message of the example ftp-rfc script.
-
- Marty Olevitch <marty%cosray@wuphys.wustl.edu> provided mods to
- support MORE/bsd. Namely, added #include types.h to expect.c
- and extern int errno to a number of files.
-
- Scott Hess <scott@nic.gac.edu> noted a potential problem in
- interact. Since interact only checks patterns at beginning
- of reads, user can conceivably type fast enough so that
- patterns are typed in the middle of a read. In reality this
- doesn't happen, but Scott was driving one expect with another
- expect and in this way provoked the behavior.
-
- The solution is to read chars one at a time, either by
- read(,,1) or buffering in a stdio-like way, but I'm not going
- to do that because the code should really be rewritten entirely
- and it just isn't worth it, since it is so easy to get around
- at the user level.
-
- Steve Legowik found that spawn-disconnect sequences fail. The
- pty testing I added in version 2.55 causes expect to regain the
- slave as a controlling tty, which generated SIGHUPs. If anyone
- knows a clean way to avoid regain controlling ttys, let me
- know. For now, I just set SIGHUP to SIG_IGN in the disconnect
- command.
-
- 8/14/91 2.65 Old passmass script changed root password. I renamed it to
- passmass.old, and made a new one which works for any account.
- It also supports yppasswd, telnet/rlogin, different names for
- accounts on different machines. Handles VMS machines, too.
-
- Added Computing Systems paper to expect distribution and moved
- all expect-related things to separate expect directory in our
- ftp directory.
-
- 8/5/91 2.64 Achille Petrilli <achille@miss.cern.ch> found that on an SGI,
- the expect command ocassionally returned "no more processes".
- He traced the problem back to O_NDELAY in the open, which was
- taken as-is from the man page, by someone else who's code I
- didn't look at too closely at the time. The result works now.
- Oddly I thought I fixed this error myself when the SGI support
- was first installed, but I cannot find it. I evidentally
- screwed up.
-
- 7/31/91 2.63 Steve Legowik <legowik@cme.nist.gov> wanted to implement
- callback by having a modem dial out and NOT go away, but
- interact in the reverse direction. I added "interact -u" to
- support the idea of changing the user from the default stdio
- to a second spawned process. The result is that we can now
- write a modem callback program that doesn't depend on the cute
- trick of having getty recognize DTR which only worked when the
- modem was directly connected to the computer. In Steve's case,
- there were several network switches in the way.
-
- Added "overlay" function which is similar to plain "exec" in
- shell. (Too bad Tcl took the name already.)
-
- Added robohunt scripts to the test directory. I wrote these
- back in January, '91 and forgot about them til now. But I
- suppose they are illustrative (at the very least of how to
- generate truly random numbers). Ha.
-
- 7/20/91 2.62 Carl Witty <cwitty@jessica.stanford.edu> pointed out my fdset
- implementation (for systems that don't have it) wasted some
- space. I had commented it correctly, however, making the
- incorrect code obvious (except to me).
-
- Robert Howland <howland@rahjr.ame.nd.edu> pointed out that
- expect complained about not running from a real terminal under
- cron. Oops! So I added a test to skip saving/restoring
- terminal modes when fd 0 is not a tty, since this is obviously
- pointless.
-
- 7/19/91 2.61 Oops. Forgot to include getline and getline.exp examples even
- though they have been documented!
-
- 7/17/91 2.60 UMich changed interface to weather system necessitating change
- to weather script.
-
- 7/9/91 2.59 Didn't correctly comment things right in Makefile. Fixed.
-
- Changed 'close' in gethostbyaddr example to 'catch close'.
-
- 6/22/91 2.58 Made new file (pty_sgi.c) for supporting Silicon Graphics ptys.
- Silicon Graphics select fails to see eof immediately but poll
- works ok. Unfortunately, there was an error in inter_poll
- (bad_io was uninitialized). Silicon Graphics works now.
-
- Andy Norman <ange@hplb.hpl.hp.com> notes that linking expect
- with the BSD compatibility library under HP-UX, libc.a must
- be loaded before libBSD.a. Modified Makefile to reflect this.
- He notes that there is a problem with expect not reading an EOF
- from the current process. This should go away with HP-UX 8.0
- when select has been enhanced to flag exceptions in the readfds
- argument. Probably inter_poll would work.
-
- Edward Haines <haines@bbn.com> notes that close returns EPERM
- ("Not owner") on his Sun 4.0.3. This is rather startling!
- (That's what I get for checking the return value of close!)
- He said it is possible that they have modified things (viz.
- DDN X.25 is loaded), but it still sounds incredible. For now,
- I told him to either "catch" all closes or to remove the check
- in the source code.
-
- Added example scripts: ftp-rfc retrieves an RFC from uunet
- via ftp. archie mails back a listing from the archie server.
-
- Add the rest of Hal Peterson's changes for Cray support, 1)
- fixing a problem where spawned processes flushed unread I/O
- upon process exit, and 2) creating processes with the correct
- uid. See his comments in command.c for more info.
-
- 6/6/91 2.57 (On Cray) made signal handler declarations right. Added
- missing #endif. Added includes to pty_unicos.c. Fixed bug
- in two bugs in CmdSend, one involving send_stderr, the other
- send_user. All of these are from Hal Peterson.
-
- Added gethostbyaddr as example script. Given an internet
- address, it returns the domain name. By querying neighboring
- hosts if the name server fails, a much higher probability of
- returning the name is obtained.
-
- 5/30/91 2.56 Mispelled "match_max" as "max_match" in rftp script. This
- caused files after the 2000 byte mark (per directory) to be
- skipped.
-
- 5/21/91 2.55 Revisited BSD pty code to reject ptys that have either slave or
- master side already open. This fixes problems rare problems
- such as expect not being able to see EOFs from the child proc.
- (because another process still has the pty slave side open).
- USG and Cray pty code could probably use this code, too.
-
- Fixed bug in expect library (lib_exp.c) which caused output to
- be copied to stderr instead of logfile when logfile_all was
- set. Per Sreedhar Muppala <muppalla@nssdca.gsfc.nasa.gov>.
-
- 5/16/91 2.54 Fixed weather script to accomodate occasional Weather Watch
- that would cause an unexpected initial question to pop up.
-
- 5/15/91 2.53 Added comment to BUG section of man page describing pty
- misbehavior with non-interactive programs (search for "553061"
- below), as per Hal Peterson <hrp@cray.com>.
-
- Removed note from README about asking Ousterhout for SV TCL
- at his request.
-
- 5/11/91 2.52 Fixed a syntax error that Bruce Larson <ires@kaspar.ires.com>
- found in inter_poll.c
-
- 4/23/91 Computing Systems accepted paper on Expect for issue 4.2.
-
- 4/18/91 2.51 Added some example scripts:
- weather - retrieves weather forecasts from National Weather
- Service via University of Michigan server.
- rftp - ftp a directory hierarchy (i.e., recursively).
-
- 4/18/91 2.50 Changed timeout to apply to total time in expect rather than
- per read(). Original behavior hung forever when my modem test
- script started listening to a modem than spit out 1 spurious
- character every 10 seconds (very consistently).
-
- Hal Peterson <hrp@pecan.cray.com> noted that exp_spawnv's args
- didn't match documentation. Fixed in favor of documentation.
- Several other funcs don't match header file (but typechecking
- is avoided during compilation), because it was too hard for me
- to make the header file ANSI compliant and support varargs
- (which is undeniably more portable than stdargs at this point).
- Fixed prototype declarations (again) in expect.h for C++ and
- Standard C. Verified with GNU, G++ and Sun C (proto-less).
-
- Added exp_disconnect to library. Moved alarm calls closer
- to read() to tighten windows.
-
- 4/11/91 2.49 Changed passmass script to use timeout of 1000000 instead of
- 10000000000 after discovering that Ultrix sleep(3) doesn't
- sleep at all for large values!
-
- Added support for systems without dup2 (SVR2) per
- <elston@edwards-tems.af.mil>.
-
- Added test/Makefile to shar as per Chris Pribe
- <cpribe@park.bu.edu>.
-
- 4/4/91 2.48 Fixed possible problem with poll in inter_poll.c for systems
- that check for a valid address even though no members are used.
-
- 3/27/91 2.47 Added support for Cray Unicos 6.0, which of course is different
- from Unicos 5.1 (which was different from everything else)!
- This and other minor bugs fixed courtesy of Pete Termaat.
-
- 3/19/91 2.46 Removed a "feature" which caused patterns with no whitespace
- not to be run through SplitList. While not documented not to
- do so, this was mystifying even to me when I saw it. For
- William Waite. The result actually simplified the internal
- handling of multiple patterns, removing some excessively
- complex logic that I thought would be helpful for speed, but
- that in retrospect, was not that important.
-
- 3/16/91 2.45 Added my own definition of FD_SET, fd_set, etc, test for
- SIGABRT, and support different types of signal arg func
- definitions to support SunOS 3.5 as requested by William Waite
- <waite@scotty.colorado.edu>.
-
- 3/14/91 2.44 Removed redundant def'n of pty_stty in pty_usg.c, redef of
- sprintf and added signal.h to command.c to make compiles
- cleaner on SV3 and HPUX machines. All compliments of Mike
- Gourlay.
-
- 3/10/91 2.43 Added -s (for slow) and -h (for human) flags to send. This
- had been requested by several people including Frank Terhaar-
- Yonkers (who actually wrote and tested a "send_slow" command),
- and Steve Simmons who suggested the "human" option (over a year
- ago), and Brian Woodson (brianw@swqa-sun.ESD.3com.com), who
- requested both! Thanks to NIST statistician, Keith Eberhardt,
- who taught me about the Weibull Distribution.
-
- According to Jim Thomas <jthomas@nmsu.edu>, 3b2 requires
- defines for R_OK and W_OK. Added to pty_usg.c.
-
- Added support for "-" as file name on command line to mean
- stdin as requested by Steve Clark <clark@cme.nist.gov>.
-
- Wrote passmass (change root password on a set of machines) as
- requested by Ken Manheimer <klm@cme.nist.gov>. Added to test
- directory.
-
- 2/21/91 2.42 Removed reinstallation of signal 0 in signal handler.
-
- Added hook for setting initial pty parameters when started in
- the background. Should've done this a long time ago, but I
- was never really happy with my solution and had hoped I would
- think of a nicer method. I only hope this is clean enough.
-
- 2/10/91 2.41 Added buffer_full keyword to solve Brian Fitzgerald's problem.
- It disables "forgetfullness" so that when expect's internal
- buffer hits match_max, whatever it has returns at that point.
- Didn't add this to the library version, because I want to think
- for awhile about the cleanest way to do it.
-
- 2/4/91 2.40 Per Brian Fitzgerald (fitz@mml0.meche.rpi.edu), fixed error in
- interact example on man page which incorrectly implied that
- "kill" was built-in.
-
- Added fork/disconnect functions. This solved the problem of
- Jerry Friesen (jafries@snll-arpagw.llnl.gov) who wanted to run
- an expect script that asks for a password and then goes to
- sleep for awhile before waking up to run in the background (to
- run a program using Kerberos).
-
- 1/30/91 2.39 Per Jim Johnson (jaj@mlb.semi.harris.com), added declaration
- and documentation for exp_pid in libexpect.
-
- 1/10/91 2.38 More mods from Frank Terhaar-Yonkers. Also, some requests
- from Pete TerMaat (pete@willow.cray.com) for features:
-
- 1) a single-step facility. Yeah, that would be nice. No
- ideas on how to do this easily.
-
- 2) Generate scripts automatically after watching a session.
- This is hard. Read more about this in the FAQ.
-
- 1/10/91 2.37 Added support for Cray Unicos 5.1, all courtesy of Frank
- Terhaar-Yonkers (fty@sunvis.rtpnc.epa.gov). Most of it had to
- do with pty support.
-
- 1/8/91 2.36 Modified expect.h to support C++ and ANSI prototypes. Added
- appropriate example in test directory based on chesslib.c.
-
- 1/7/91 2.35 At the request of Jan Norden (jano@imdpy1.im.se) added
- NO_MEMCPY and NO_STRING_H defines for Pyramid.
-
- 1/3/91 2.34 Added a check to protect against a longjmp occurring between
- i_read and alarm(0). Didn't think this would be a problem but
- evidentally a function return modifies the stack, so it cannot
- be returned to again. Drat! This appeared in the robohunt
- script I wrote which plays hunt automatically and uses 1
- second timeouts.
-
- 12/19/90 2.33 Add signal to sighandler, to reinstall signal for those systems
- that need it.
-
- 12/12/90 2.32 Removed test for args to expect. I only recently realized that
- no args still allows a valid way to check for timeout and eof!
-
- 12/6/90 2.30-1 Mike Gourlay (mike@penguin.gatech.edu) found and fixed quite a
- few SV-related problems that I had introduced since Clem's
- fixes. We eventually got it to run on his HPUX machine, a
- mixed breed of BSD/USG stuff. But spawning a shell worked but
- always produced a complaint about "no access to tty" which we
- were never able to get rid of, and he had a problem with
- exp_fexpect (but not exp_expect), although it still isn't clear
- if that was expect's fault. He said he would speak to some HP
- engineers about what he found.
-
- 12/5/90 2.29 Fixed a malloc off-by-one bug in new C library. After
- contemplation, revised interfaces. Decided that rather than
- following the original 'expect' style, it should be more like
- what a C programmer is used to, so I made the file descriptors
- be parameters to exp_expect rather than globals, added an
- exp_popen which is a popen equivalent, and added exp_fexpect
- versions which are stream equivalents.
-
- Am not happy with exp_fexpect. It is much less efficient than
- exp_expect, because there is no way to (portably) get fread()
- to return the way read() does, with less then the number of
- characters you supplied a buffer for. Instead, I have to call
- fgetc for every char. Ugh.
-
- Add a couple new examples, including lpunlock, time.exp,
- chesslib.c (using file descriptors) and chesslib2.c (which uses
- stream pointers).
-
- 12/3/90 2.28 Created C library version of expect.
-
- 11/29/90 2.27 Fixed bug in interact - when no string actions were defined,
- the mapping table length wasn't set at all.
-
- Made interact call printify when debugging so that crlf and
- other nonprintables are visible. Fixed bug in printify which
- interpreted some characters wrong due to parity.
-
- Added some more examples to the distribution (lpunlock, dvorak,
- timed_read) and put in another tip in the TCL HINTS section of
- the man page.
-
- 11/18/90 2.26 Fixed mismatched comment per Craig Warren (ccw@deakin.oz.au).
- Also improved man page entry for "interact".
-
- 11/17/90 2.25 Added -f (fast) on interact options, and made default case a
- little more efficient. Added explicit support for SIG_IGN and
- SIG_DFL in trap command. Added ability to specify signals
- symbolically for portability.
-
- 11/15/90 2.24 Craig Warren (ccw@deakin.oz.au) wanted to exit expect while in
- interact with a single character. Dan Bernstein
- (brnstnd@kramden.acf.nyu.edu) wanted to suspend with a single
- character. So I generalized interact's escape character to
- string-action pairs.
-
- 11/7/90 2.23 Tired of getting reports that various (Ultrix 3.1, BSD4.3) C
- compilers can't handle ternary conditionals returning ptr to
- func returning void. Made all (2) such statements into
- if-then-elses. Per Steve Simmons (scs@iti.org).
-
- 10/8/90 2.22 Allow "log_file" even when no log is open. This makes user
- programming a little simpler - they don't have to remember
- whether they opened the log or not.
-
- 9/27/90 2.21 Fixed bug, v2.19 introduced. debuglog(unknown string) requires
- a "%s" as formatting for protection against %'s in the unknown
- string.
-
- 9/17/90 2.20 4 syntax errors in interact_poll.c, vik@sequent.com. Added
- quotes to all the sends (now that this is more efficient) in
- the examples and man pages. Also removed a misstatement in the
- man page about the behavior of double quotes.
-
- 9/15/90 2.19 Removed buffering from send command. Originally, I buffered
- the args, so I could do it all in one write. But to send
- variables bigger than the buffer didn't work. I didn't think
- about this before. But Joe Gorman
- (Joe.Gorman@elab-runit.sintef.no) asked me if you could "send"
- a file in one command, and of course you can using [exec cat]
- as the argument to send, but the damn buffering prevented big
- files from being sent. Anyway, now it works.
-
- 9/14/90 Fixed the declarations of nflog and nferrlog. Added a #define
- so lack of pid_t could be controlled from the Makefile. Per
- Andy Holyer (and@ux.rfhsm.lon.ac.uk)
-
- 9/4/90 2.18 Added trap command to catch signals. This is nice as (among
- other things) it allows you to turn off the conversion of ^C to
- timeout which was requested by John Conti <jconti@cisco.com>.
-
- 8/21/90 2.17 Fixed bug in printify. Forgot to reset ptr to beginning of
- print buffer. Made debugging info wrong. Possibly screwing up
- other things on overflow.
-
- Paper accepted into USENIX LISA!
-
- 8/15/90 libes Cleaned up man page. Made tabs line things up
- correctly, finally.
-
- Found another problem with ptys (at least under SunOS 4.1 and
- earlier). When last pty-slave fd closed, any unread output is
- lost after a short window of time (around 10 seconds on a
- Sun 3/60). Sent example ptybug.c to Sun demonstrating this and
- EIO problem found earlier. (Service Order #553061)
-
- 8/6/90 2.16 Added -f to debug command, -a to log_file command. This
- required significant changes, including revisiting all the
- logging routines, plus miscellaneous output done in special
- places. Noted that it cannot be done with getopt, since it
- could be called during main's getopt, and getopt is not
- reentrant! (Guess how I discovered this!!)
-
- I'm not particularly happy with the design, but maybe others
- won't be. In any case, I like the benefit of it and am now
- glad that -a was asked for. Per Harry Bochner and Ira Fuchs
- (fuchs@pucc.bitnet).
-
- Changed behavior of argv, so that 0 == [length $argv] when no
- script/args supplied.
-
- 8/4/90 2.15 Added debug command, so -d-ness could be changed while expect
- is running.
-
- 7/20/90 2.14 Fixed small bug in -d output from expect, which printed ^Z as
- ^:
-
- 7/18/90 2.13 Added wait command. A waitpid/waitspawnid would be nice and
- cleaner, too, but since csh doesn't need it, it is probably not
- worth much.
-
- Consequently, removed SIGCHLD handling from command.c. It
- worked under SV but not BSD. By forcing users to explicitly
- code waits, resulting scripts are more portable.
-
- Rewrote rogue example. rogue sometimes misses EOF (generated
- by close on our side) and continues reading.
-
- 7/16/90 2.12 Removed buffering from variadic log routines. This was
- faulting when the buffers overflowed.
-
- Cleaned up the -d output from expect, so it is much more
- readable. For example, control characters are now visible.
-
- 7/14/90 2.11 Added declaration for errno, to support 4.3BSD. Per Alan
- Crosswell. Added -i flag and related behavior.
-
- 7/12/90 2.10 Fixed bug where timeout = 0 waited forever rather than not
- waiting at all.
-
- 7/11/90 Fixed man page example which didn't include the blank on the
- end of an ftp prompt.
-
- 7/9/90 2.9 Fixed bug in send when spawn_id = $user_spawn_id.
-
- 6/27/90 2.8 Integrated some mods from clem cole (clemc@ccc.com) to support
- System V.3 (386/ix Version 2.02). Unfortunately, he didn't do
- "select".
-
- 6/25/90 2.7 Test that cmdfile and logfile are open before fclosing in child
- while spawning. Per Corey Satten <corey@cac.washington.edu>
-
- 6/24/90 2.6 Pty master returns EIO instead of EOF when pty slave closes.
- Bug in pty driver? Until I figure this out, I have put in code
- to interpret EIO to EOF.
-
- 6/21/90 Added new section to expect man page - Tcl hints.
-
- 6/14/90 Spoke at USENIX. Went well. Added USENIX paper as separate
- ftp archive.
-
- 6/4/90 2.5 Fixed bug in ^C catching during expect. Changed man page to
- accurately describe what ^C does. Fixed bug that caused "send"
- to screw up when handed 0 arguments. All per Harry Bochner.
-
- 6/1/90 2.4 Made trailing empty action in expect optional, primarily to
- make straightline code easier to read.
-
- 5/15/90 2.3 Changed expect to strip nulls from program output since there
- is no way for Tcl to handle them, per Harry Bochner.
-
- 5/5/90 Added "send_error" command.
-
- 4/26/90 Got USENIX paper back from Kolstad to proof. Am depressed at
- how awfully they formatted it.
-
- 4/25/90 2.2 Eric Newton found that expect's special variables weren't being
- found inside of user subroutines. Had to do with new Tcl,
- which now differentiates between variables that are undefined
- vs. empty.
-
- 4/24/90 Upgraded Tcl from 2.1 to 3.3.
-
- 4/22/90 Added special behaviors of ^C in expect, and when profiling.
- Profiled rogue (at urging of Ousterhout).
-
- 4/10/90 2.1 Added select command. Added support for user_spawn_id so that
- you could treat user just like another process (i.e. with send
- and expect). Decided to leave send_user/expect, since scripts
- are more readable with them.
-
- 4/2/90 2.0 Changed syntax of expect to provide alternatives (a la Tcl
- case), per suggestion of John Ousterhout. Note that this
- breaks pre-2.0 scripts.
-
- 3/31/90 Got great comments from Ousterhout. (This time he said that he
- really liked the idea. Maybe he realizes how much it will
- promote Tcl!)
-
- 3/30/90 Got comments from dpk. Made me think more about Perl.
-
- 3/28/90 Evi said I should turn the paper in unformatted and they will
- format it. (She's kidding, I hope.)
-
- 3/27/90 1.8 Rewrote interface so that raw arguments can be passed in like a
- shell. I'd been thinking about this for some time, but Eric
- Newton finally prodded me into action.
-
- 3/25/90 Got first corrections for paper - from Sue Mulroney!
-
- 3/24/90 Observed that it is possible to use the #! syntax with expect.
- I asked John O. about this (his choice of # as a comment
- character), and he said it was pure coincidence. Deprecated
- request to end scripts in ".exp".
-
- Ted Hopp volunteered to be my Center WERB reader.
-
- 3/23/90 Finished 1st draft of USENIX paper and sent copies to John
- Ousterhout and panel chair, dpk@morgan.com.
-
- 3/20/90 1.7 Deprecated "stty", and added more general "system" command.
-
- Sent Evi some complaints about the business of not allowing
- camera-ready at USENIX.
-
- 3/17/90 Sent copies of man page to Doug Gwyn and Larry Wall for
- comments. Note that gwyn downloaded it.
-
- 3/16/90 Am really irritated by USENIX. My paper has been put in a
- session against another session, the BSD people. Furthermore,
- they called my paper an application, when it is no more so than
- any other shell or language. Better I should be in "lessons
- learned". Mashey said take a hike, i.e., it was too late to
- change the schedule. On top of that, our session has four
- people in it, so I'll have very little time to speak. Grrrr.
-
- 3/13/90 1.6 Added "stty", because without it you can't do things like
- turning off echo to accept a password.
-
- 3/8/90 1.5 Abstract was accepted into USENIX!!!! Time to start writing
- it! Sent man page to Ousterhout. He didn't seem too
- impressed.
-
- Added "send_user/expect_user" after listening to Ken complain
- about how shell could not do timed reads. Actually it can, but
- expect does it much more naturally. Deprecated echo. Now, I
- realize that expect can be viewed as a shell!
-
- Changed logfile/loguser to log_file/log_user to match all the
- variables with underscores in them.
-
- Barry Warsaw asked if there was any way one could execute any
- command from interact (apparently without any reason in mind).
- Nonetheless, it is a wonderful idea, and I changed the "abort
- character" in interact to an "escape mechanism". After
- escaping, you may execute any command. return duplicates the
- old action of the abort character. Now you can do interactive
- job control, recursive interacts, etc. You can bet I didn't
- get this right the first time!
-
- At Scott's request, fixed bug related to pty initializing.
- Scott was putting expect in the background which disassociated
- it from a tty, and I was blindly copying the tty parameters
- without checking to see if they were meaningful or not.
-
- Tightened up exit code. Fixed bug in spawn so it would print
- error messages when it failed. Spawn sends back the error
- message in the pty, if the fork succeeds but exec fails. Cute!
-
- Added "close" command. Makes scripts much shorter and cleaner.
-
- Return string matched by expect directly, rather than setting a
- special variable.
-
- Added "match_max" feature. Probably no one will ever use it.
-
- Added trace command.
-
- 3/6/90 1.4 Rob Densock was the second user, and suggested (demanded?) the
- idea of the loguser command. I added it and changed "log" to
- "logfile" making the first incompatibility with existing
- scripts (sorry, Steve).
-
- 3/1/90 1.3 Trying to make pty code more robust. Many questions unanswered
- by manuals. Did a lot of guessing. While debugging, looked
- through pty code in gnuemacs to see if I might increase
- portability somehow. I almost barfed when I saw all the funky
- ifdefs on weird ioctls. Found lots of comments like "this
- might work".
-
- 2/28/90 Sent a short Tcl bug list to John Ousterhout. He thanked me!
-
- 2/22-3/90 1.2 Hooked my first user, Steve Ray. Surprisingly, he only found
- one bug in the code (exit didn't handle args correctly), but it
- was obvious that I need to put more explanation in the man
- page. Many of the examples in the man page are based upon his
- probl.. questions. Thanks, Steve!
-
- 2/20/90 Posted news about expect to "general" newsgroup locally.
-
- 2/15-20/90 Talked to local POSIX reps and then to Steve Albert (AT&T)
- about portability of select, wait and other system calls. I'm
- not impressed by 1003.1.
-
- 2/9/90 John Ousterhout answered some questions I had about Tcl syntax.
- I like this language!
-
- 2/8/90 1.1 Sandy Ressler suggested the idea of being able to spawn
- multiple programs at the same time although he didn't say how.
-
- It took about a day to design and code the spawn_id hook.
- Extremely difficult to support this with uucp-style kludge.
- Switched to using select. So much for portability.
-
- I investigated how to do this portably, and spent some time
- talking to NIST & AT&T POSIX representatives. Unfortunately,
- portability (especially when it comes to select()) remains a
- dream. Provided multiple versions of "interact" depending upon
- what OS you are running.
-
- 2/7/90 1.0 Completed first cut of "sex" (for "Smart EXec" or
- "Send/EXpect"). Supports send, expect, echo, log, spawn,
- interact.
-
- Spent a lot of time making "log" write to log in just the right
- order (across fork and while debug flag enabled). Ended up
- writing a bunch of variadic log routines.
-
- Fooled around with uucp-style multiple processes versus one
- process doing select() to read asynchronously. Using
- uucp-style for now, since it is more portable.
-
- Gave up on pipes, and switched to ptys. Pipes seem to be
- messed up by ftp, perhaps because it goes into raw mode? Ptys
- are more efficient and cleaner to program albeit less
- well-documented and portable from system to system.
-
- Ken Manheimer helped me explain what the program does. I kept
- saying it does "send/expect" processing, and he kept insisting
- that was meaningless to everyone. (In fact, it comes from
- uucp, and I guess uucp hackers are indeed a dying breed.) Ken
- gave me an elegant enough sentence that I expanded it into an
- abstract and sent it in to the USENIX conference the following
- day (two days after the deadline).
-
- I noted that the uucp documentation I referenced in the
- submission is dated October 31, 1978!
-
- 1/30/90 0.0 Got a copy of Tcl and went to work. Tcl was exactly what I
- need. Plus, it is easy to use, AND it is documented.
-
- 1/25/90 Attended Winter 1990 USENIX in DC, with the goal of banging
- heads with some other gurus in hopes of finding a good
- send/expect language for a generalized stelnet. Had looked at
- uucp and kermit but found nothing general enough.
-
- Listened to John Ousterhout's presentation on Tcl. By the
- middle of the talk, I had found religion. At the end when he
- said it was public-domain, I was ready to orgasm.
-
- */*/88-89 Spent a lot of time telling Scott how useful his program could
- be if he made it more general. I thought it wouldn't be that
- difficult to make more generic. Scott was interested but not
- enough to do it.
-
- 9/25/87 Helped Scott Paisley write a program called stelnet, that
- forked a telnet and did very simple send/expect processing.
- It used pipes, not ptys. It had no pattern matching, and only
- straight-line control without error handling. Nonetheless,
- this got me to thinking about making stelnet more generic.
-