home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / languages / tcl / expect / HISTORY next >
Encoding:
Text File  |  1993-06-12  |  62.6 KB  |  1,510 lines

  1. This is the HISTORY file for Expect.  Modifications made by Cygnus
  2. support are in ChangeLog. - Don
  3.  
  4. Date    Version    Description
  5. -------    -------    ------------------------------------------------------
  6. 6/12/93    4.7.3    fnf@fishpond.cygnus.com noted minor type problems.  Rob Savoye
  7.         noted trap SIGINT overrode debugger handler.  Default should
  8.         be reverse.
  9.  
  10. 6/8/93    4.7.2    Added debugger to public release.
  11.  
  12. 6/7/93    4.7.1    Ed Oskiewicz <eo@ansa.co.uk> noted prototype botch - exp_cook.
  13.         Owen Rees <rtor@ansa.co.uk> noted missing decl - tclRegexpError
  14.  
  15. 6/6/93    4.7.0    Gert Bultman <bultman@dgw.rws.nl> exposed a bug in interact's
  16.         -update.
  17.  
  18. 5/27/93    4.6.0    Rick Sladkey <jrs@world.std.com> fixed a bug in send_log -
  19.         checking a master needlessly and indexing off the end of an
  20.         array.
  21.  
  22.         Rob Savoye made change for detecting libpt.a, modified
  23.         autoconf for better handling of X, exec_prefix, and ranlib.
  24.  
  25.         Kris Woeppel <krisw@cs.athabascau.ca> said SVR3 doesn't have
  26.         wait.h.
  27.  
  28.         Made libexpect.a understand regexp.  Reorganized code.  It
  29.         now requires Tcl to be installed first, although it uses only
  30.         a few utility routines.  Hopefully this isn't a problem for
  31.         anyone.
  32.  
  33.         Zack Xu <zack@cs.wisc.edu> noted exp_main.h needed C++ support.
  34.  
  35.         Pascal Meheut <pascal@cnam.cnam.fr> gave fix for skipping over
  36.         null bytes while interact is pattern matching.
  37.  
  38.         Added "--" to expect, interact, and send.
  39.  
  40.         Added support for associating multiple -i's with a single
  41.         pattern, and -i's with no pattern for use with spawn_id_any.
  42.  
  43.         Made interact work with systems that lack select/poll.
  44.  
  45.         Added code and #defines for debugger.  Debugger itself is not
  46.         yet available.
  47.  
  48. 4/19/93    4.5.2    Achim Flammenkamp <achim@HRZ.Uni-Bielefeld.DE> noted that I
  49.         documented full_buffer as buffer_full.
  50.  
  51.         Ted Stockwell <ted@sirius.aggregate.com> noted that wait arg
  52.         was missing an & in configure test.
  53.  
  54.         Scott Hess noted that systems can have wait4 without waitpid.
  55.  
  56.         Jonathan Kamens <jik@gza.com> noted/fixed some things that
  57.         weren't autoconf'd correctly: pid_t, RETSIGTYPE, malloc.
  58.  
  59.         Gary Shea noted that a recent change to expectk made it not
  60.         default to interactive.        
  61.  
  62. 4/12/93    4.5.1    At request of Rusty Wilson <zrlw05@hou.amoco.com>, added
  63.         "-console" to spawn.
  64.  
  65.         Pang Wai Man Raymond <wmpang@cuse1.se.cuhk.hk> reported that
  66.         passmass didn't grok DEC's passwd prompts for root.
  67.  
  68. 4/7/93    4.5.0    Fixed bug in interact regexp preventing match of multichar
  69.         literals.
  70.  
  71. 4/6/93    4.4.3    Bennett Todd <bet@sbi.com> noted missing example scripts
  72.         timed-read and time-run.
  73.  
  74. 3/29/93    4.4.2    Bill Houle <Bill.House@SanDiego.NCR.COM reported fixes
  75.         for SVR4 pty support to compile.        
  76.  
  77.         Made string matcher understand *$.  Documented tty_spawn_id.
  78.         Made command line -i override -f.
  79.  
  80.         For Tuan Doan <tdoan@bnr.ca> on HP, make kibitz use domainname
  81.         as fallback and used whoami instead of env(USER).
  82.  
  83.         Fixed bug in the generic pty code that could report out of ptys
  84.         because an earlier slave slowly deleted the lock file.
  85.  
  86. 3/25/93 4.4.1    Stephen House <sdhouse@bnr.ca> reported exp_tk.c wouldn't
  87.         compile on HP.  Fixed.
  88.  
  89. 3/24/93    4.4.0    Added back SVR4-style pty allocation which got omitted in the
  90.         autoconfig process.  Fixed bug in interact's -update handling.
  91.         Fixed bug in weather script that cut off long reports.
  92.  
  93. 3/15/93 4.3.0    Cleaned up /tmp files used during pty locking.
  94.  
  95.         Added command "parity" to enable parity stripping.  Fixed
  96.         match_max to do -i correctly.
  97.  
  98. 3/15/93    4.2.4    Fixed to work on new SGI which returns slave-close via excep
  99.         (select) or POLLERR (poll) rather than thru read().  Why do you
  100.         people do things like this?
  101.  
  102. 3/12/93    4.2.3    Fixed to work on AIX (using /dev/ptc) and UTS (using getpty).
  103.  
  104. 3/11/93 4.2.1-2    Fixed numerous bugs relating to HP ptys.  It's amazing that for
  105.         their bewildering complexity, they couldn't support generation
  106.         of EOF to the master (or at least enable trapping of just
  107.         close), rather than forcing the code to know about opens, too.
  108.  
  109. 3/8/93    4.2.0    Integrated Rob Savoye's autoconfig code.
  110.  
  111.         Interact mishandled new -eof flag.  Added -update.
  112.  
  113.         Gary Shea <shea@cs.ukans.edu> noted that tkwait hung if
  114.         expect had been called.  Rewrote most of tk_event.c and fixed
  115.         some other problems related to efficiency & multiple timeouts.
  116.  
  117.         E Beck <beck@qtp.ufl.edu> suggested mods to more easily support
  118.         Extended Tcl.
  119.  
  120.         Bill Mitchell <mitchell@mdd.comm.mot.com> reported problems on
  121.         4.3+BSD.  Added    support for TIOCSCTTY.
  122.  
  123.         Dana Burd <dana@wrs.com> noted that "exit" caused by ^C during
  124.         expect didn't work - just returning to expect.  Fixed, and then
  125.         removed "feature" of ^C to abort a timeout.  This feature
  126.         proved a lot less useful than I thought it would.
  127.  
  128. 2/21/93 4.1.0    Bill Tierney <wtierney@leland.stanford.edu> noted that double
  129.         close dumped core.  Rewrote fd_to_f and close/adjust functions.
  130.  
  131.         Interactive interpreter() didn't properly wait in
  132.         get_next_event, so Tk stopped responding to events.
  133.         Wrote version of interpreter that shares expect's input buffers
  134.         but can't think of a use.  Left as an ifdef SHARE_CMD_BUFFER.
  135.  
  136. 1/26/93    4.0.1    Added eof check to xpstat.  Removed incorrect and unnec.
  137.         #includes from exp_main_exp.c
  138.  
  139.         Chip Rosenthal <chip@chinacat.unicom.com> found my refs to
  140.         tclRegexpError need externs on systems that don't use Tcl's
  141.         string.h.  string.h should probably be changed not to refer to
  142.         tclInt.h.
  143.  
  144.         Added FAQ about Expect's copyright status.
  145.  
  146.         Mark Christopher <christo@bnr.ca> pointed out some really
  147.         stupid errors in the HP support for select.    
  148.  
  149. 12/16/92 4.0.0    Rewrote interact.  Made re-entrant thru event-handler for Tk.
  150.         (Same for Expect.)  Abstracted out common code so that
  151.         remainder is specific to select vs poll vs tk (although
  152.         "simple" was impossible to handle).  Added timeouts, regexps
  153.         (at request of numerous people), ability to set up arbitrary
  154.         graphs of process flows, and some miscellaneous but useful
  155.         functionality.  New flags are: -input, -output, -re, -echo,
  156.         -flush, -eof.
  157.  
  158.         Added "-noecho" to spawn command.
  159.  
  160.         Added getpid command.  Something with this functionality should
  161.         be added to the Tcl core.  When it is, this function will go
  162.         away.
  163.  
  164.         Removed assumption of global "interp" handle.  Rewrote init
  165.         and other routines for use as libraries.  Added appropriate
  166.         glue to Makefile.
  167.  
  168.         At request of Rob Savoye <rob@cygnus.com> added "send_log" and
  169.         disabled buffering on all output.  The only affect unbuffered
  170.         output will cause users is if they pass large strings in
  171.         multiple args to send.
  172.  
  173.         Ray Davis <rdavis@masschaos.de.convex.com> reported Convex 
  174.         could not do job control from spawned procs.  I added a symbol
  175.         DO_SETSID to force this.
  176.  
  177.         Martin Leisner modified rftp to understand iftp.  I added it
  178.         to the publicly donated scripts directory.
  179.  
  180. 11/17/92 3.24.1    Martin Leisner suggested Makefile use $(MAKE) and support Tcl
  181.         as a Sun shared library.
  182.  
  183.         Seth Perlman <seth@welchgate.welch.jhu.edu> suggested interact
  184.         support timeout.  I've added this as "-timeout" in inter_select
  185.         but left undocumented while we experiment with interface.
  186.  
  187.         Joe VanAndel <vanandel@ncar.ucar.edu> pointed out that su2
  188.         script still used old syntax.  Fixed.
  189.  
  190.         Konrad Haedener <haedener@iacrs1.unibe.ch> fixed a bug in
  191.         POSIX tty handling on AIX.  Surprisingly, we discovered AIX
  192.         worked just fine when pty_bsd is used and without -DPOSIX!
  193.  
  194.         Doug (George Jetson) <pynq@midway.uchicago.edu> pointed out
  195.         that a spawn_id for /dev/tty would be really handy.  I added
  196.         tty_spawn_id for this purpose.
  197.  
  198. 11/4/92 3.24.0    After problem reported by James Ward <jew@sunquest.com> added
  199.         to man page describing delays required by hardware such as for
  200.         UART switching.
  201.  
  202.         Recoded all \C sequences as \### in examples and man page in
  203.         anticipation of them going away in next version of Tcl.
  204.  
  205.         Switched to printing errorInfo during errors instead of the
  206.         command and only the top-level error message.  Since this
  207.         includes entire stack, this should be very helpful.
  208.  
  209.         J. Cazander <cazander:pasichva via serigate@phcoms.seri.
  210.         philips.nl> reported that purify found a write beyond the end
  211.         of an input buffer.  Lucked, it was just before a double-word
  212.         boundary, so it probably isn't a problem.  I fixed it anyway.
  213.  
  214. 10/9/92    3.23.1    Tor Lillqvist <tml@tik.vtt.fi> supplied support for HP 8.0.7 in
  215.         POSIX-mode, and a bugfix for POSIX tty mode switching
  216.  
  217. 10/8/92    3.23.0    Larry Rogers <lrr@Princeton.EDU> reported that "weather" blew
  218.         up in spawn.  I'll add a catch-all to the script to report
  219.         similar problems (out of ptys, processes, etc.)
  220.  
  221.         Ting Leung <tleung@bnr.ca> notes that log() in human_write can
  222.         receive a 0 (domain error).  Fixed unit_random to avoid that.
  223.  
  224.         Tony Primavera <aprima@xox.ssc.af.mil> notes that the sample
  225.         archie script needs to understand mcgill's limit of 10 users.
  226.         Tor Lillqvist <tml@tik.vtt.fi> noted that a lesser-used pattern
  227.         ("unknown...") is incorrect.
  228.  
  229.         Grant Taylor <gat@pecan.cray.com> found a problem when forking
  230.         (using Expect's fork) multiple processes, each of which spawned
  231.         something.  In the BSD pty support, I had used the pid to build
  232.         a temporary file for testing the pty before actual use.  When
  233.         multiple processes tried to use the same tempfile, it blew up.
  234.  
  235. 8/12/92    3.22.13    Corey Satten pointed out that -u on cat caused kibitz to slow
  236.         down on Ultrix.  I see the same behavior on SunOS.  I added an
  237.         option to fix it for systems that need it.  Corey also noted
  238.         arg miscounting in kibitz, and pointed out that world-readable
  239.         fifos could be a security problem.  He gave a fix for this and
  240.         also a fix to force ptys to be put into raw mode.
  241.  
  242.         Terrence Brannon <tb06@pl122e.eecs.lehigh.edu> reported rftp
  243.         referenced the undefined variable 'transfer'.  Turned out to be
  244.         a bug in the code to handle symbolic links.
  245.  
  246. 7/20/92 3.22.12    Added O_NOCTTY (if defined) in pty_bsd.c to avoid gaining
  247.         control terminal while testing pty when running as daemon.
  248.  
  249.         At request of Michael D. Riley <riley@mbeya.research.att.com>
  250.         added explanation to man page - how expect_after/before deal
  251.         with spawn_id.
  252.  
  253.         Charles Hannum discovered the problem with AIX (see earlier)
  254.         was a missing "extern" in the errno declaration.  Also, the
  255.         compiler was sensitive to a lack of access to the defn of
  256.         struct expect_special.
  257.  
  258.         Dave Coombs gave me yet another fix for the weather server to
  259.         accomodate its ever continual change.
  260.  
  261. 7/2/92    3.22.11    Yet more work.  Discovered that SunOS and Ultrix really like
  262.         setpgrp(0,0) much better than setpgrp(0,getpid()) but the
  263.         manual doesn't describe well why this seems to work better.
  264.         (The old call worked inconsistently.)
  265.  
  266. 6/30/92    3.22.10    Did more work on modifications to dissolve connection between
  267.         stdio and devtty.  Eventually, I'd like to add a separate
  268.         spawn_id for devtty (expect_devtty?).
  269.  
  270. 6/5/92    3.22.9    Hansel Wan <hhw0@gte.com> noted that $errorInfo was clobbered
  271.         by prompt1.  To prevent this, I added a default definition
  272.         for prompt1 (and prompt2 while I was at it).
  273.  
  274.         Unnati Amin <uxa@po.cwru.edu> noted that the example scripts
  275.         checked for $ in prompts which didn't work.  This bug was
  276.         created when $ was turned into a "match end-of-input" char
  277.         in the transition from v2 to v3.  Solution: backslash the $.
  278.  
  279.         A few parts of code assumed spawn_id was always stdin, which
  280.         caused "send" to send to stdout, which meant succeeding
  281.         expect's hung, waiting forever.  Fixed is_user macro.
  282.         This was a problem with scripts that redirected stdin or
  283.         somehow reused fd 0.  Surprising that no one ever did that
  284.         before - also surprising that it didn't bother cron jobs.
  285.  
  286. 6/2/92    3.22.8    Man pages fixes from Matt Crawford crawdad@fncent.fnal.gov.
  287.  
  288. 5/12/92    3.22.7    Missing ; in Makefile, screwed up chmod.
  289.  
  290.         Fixed bug that caused interact to think the modes had changed
  291.         when they hadn't.
  292.  
  293. 5/11/92    3.22.6    Added regression paper to ftp archive - published in the 1992
  294.         USENIX San Antonio Proceedings.
  295.  
  296.         Swapped setpgrp and fork in disconnect command for sysV88.
  297.         According to Dave Schmitt <daves@techmpc.csg.gss.mot.com>,
  298.         original code (right out of Stevens) starts the child with
  299.         closed stdio fds.
  300.  
  301.         Fixed bug in interact that changed /dev/tty modes even if
  302.         interact was used to connect two completely different ttys.
  303.         Had never been a problem before, but today I wrote some code
  304.         that actually calls interact from cron!  Also, copied the
  305.         experimental fix from 3.22.5 to inter_poll.
  306.  
  307.         Jeremy Nussbaum <jeremy@world.std.com> says cat needs "-u" in
  308.         kibitz for his HP 8.0 system to work.  I wonder why this has
  309.         never been a problem on earlier HP and other systems?
  310.  
  311.         Forced Makefile to mark scripts executable.
  312.  
  313. 4/12/92    3.22.5    Fixed bugs reported by Matt Ranney <mjr@uther.Calvin.EDU>
  314.         including a syntax error (!) in expect.c on ecases_inuse.
  315.         I didn't even compile this before pushing out?  He also noted
  316.         some # were not in column 1.
  317.  
  318.         I put in an experimental fix to interact (only in select
  319.         version currently) to fix when pattern matching from master
  320.         and user needs to continue typing in order to complete match.
  321.  
  322. 4/3/92    3.22.4    Charles Hannum (mycroft@gnu.ai.mit.edu) pointed out that I
  323.         screwed up a comment in the brand new pty_aix3.c.  He also gave
  324.         me a fix for an arg-less expect, which did a malloc(0).  And
  325.         he said that AIX ptys return EOF in yet a new way - read()
  326.         returns -1 with errno == 0.  Yuck.
  327.  
  328. 3/29/92    3.22.3    Jay Schmidgall gave me yet another pty_aix3.c.  He also gave
  329.         ifdefs for POSIX terminal support.
  330.  
  331. 3/18/92    3.22.2    Jay Schmidgall <shmdgljd+@rchland.ibm.com> modified pty_sgi3.c
  332.         to make a pty interface for recent versions of AIX.
  333.  
  334.         Steve Summit <scs@adam.mit.edu> noted that "trap 0" could
  335.         actually call signal(0...)
  336.  
  337.         Martin Leisner <Martin_A._Leisner.Henr801C@xerox.com> noted
  338.         that rftp was broken.  It seems I never handled symlinks.  They
  339.         are interesting.  You can't tell from the listing whether they
  340.         are files or directories, so you just have to blindly go ahead
  341.         and assume it's one or the other and see what happens!
  342.  
  343. 3/11/92 3.22.1    In talking to Dave Schmitt ,daves@techmpc.csg.gss.mot.com>,
  344.         realized the documentation for wait had never been updated
  345.         from the way it used to work in v2 (returning any pid).
  346.  
  347. 3/11/92    3.22.0    Another question from Ron, prompted me to find another bug.
  348.         interact -o wrongly manipulated the user buffer at one point.
  349.  
  350. 3/10/92    3.21.0    Ron Young <ron@nevada.edu> found that spawn failed on a
  351.         DECstation 3100 running Ultrix 4.2.  I had forgotten to test
  352.         that cmdfile was valid before comparing against stdin in fix
  353.         related to fflush in 3.20.0.
  354.  
  355.         While I was on a DECstation, I noticed that it does not accept
  356.         setpgrp(...,0).  Changed 2nd arg to getpid().
  357.  
  358. 3/6/92    3.20.2    Stefan Farestam <farestam@orion.cerfacs.fr> provided a new
  359.         version of pty_sgi.c which uses _getpty.  I renamed the old
  360.         one pty_sgi3.c
  361.  
  362. 3/3/92    3.20.1    Brian Woodson requested I update the dates and version numbers.
  363.  
  364. 3/1/92    3.20.0    Prompted by a question from Ken Mandelberg, added -raw to
  365.         noidle and kibitz script.
  366.  
  367.         Fixed fflush(cmdfile) again, having been authoritatively told
  368.         by net wisdom that there is no way to portably fflush a shared
  369.         read-stream. (I take back my claim about a bug in HP's fclose!)
  370.  
  371.         John Sellens gave me some more fixes for non-DEC MIPS OS.
  372.  
  373. 2/22/92    3.19.1    John Sellens <jmsellen@watmath.waterloo.edu> gave me a bug
  374.         fix for NOWAITPID.
  375.  
  376. 2/21/92 3.19.0    Found a bug in HPUX fclose!!  It moves the I/O pointer in the
  377.         shared file table entry!  This explains the symptoms I reported
  378.         earlier.  Fortunately, it's easy to code around (by me - it is
  379.         no longer necessary to fudge the scripts).
  380.  
  381.         Added some stuff to the man page to explain why expect behaves
  382.         the way it does in an emacs shell window and how to live with
  383.         it.
  384.  
  385. 2/21/92    3.18.0    Worked on the HP port some more.  The HP causes a real problem
  386.         by insisting SIGCLD be delivered in order for wait to return
  387.         a status.  This royally complicated the code, partly because
  388.         of the special casing all over the place in the trap command,
  389.         the asynchronous delivery of SIGCLD and also because Tcl itself
  390.         is not prepared to have system calls be interrupted.  Cleverly,
  391.         the HP also defines both CLD and CHLD which threw my macros
  392.         off at first.  Thanks, but I don't this kind of help!
  393.  
  394.         Anyway, the end result is that on the HP, SIGCLD is ignored.
  395.         The manual claims wait status will not be delivered but it
  396.         seems to be anyway.  Good grief!  (Even if it were ignored,
  397.         it would not be such a calamity, since wait is used mainly
  398.         to discard zombies on other systems.)
  399.  
  400.         A remaining problem is that there appears to be some odd
  401.         interaction, perhaps with fork, such that the script is rolled
  402.         back at eof if a spawned process happens to exit at the same
  403.         time.  The solution for now is to exit all scripts via exit
  404.         rather than letting exit be called implicitly.  There must be
  405.         some real bug, but I'm unable to find anything after lots of
  406.         testing, line and Saber.  At the moment, I'm highly suspicious
  407.         of the HP itself rather than expect.
  408.  
  409.         Bob Proulx and Jeff Okamoto supplied me with patches for
  410.         inter_select.c.  HP transmits some pty interactions via the
  411.         exception field in select.
  412.  
  413.         Michael Grant gave me a mod to grok ~ in the logfile and
  414.         debug commands.
  415.  
  416. 2/17/92    3.17.1    Brian Keves <keves@meaddata.com> pointed out that the man page
  417.         still referred to "expect_match" instead of "expect_out".
  418.  
  419. 2/12/92    3.17.0    Eric Arnold <Eric.Arnold@corp.sun.com> ran into a problem
  420.         when running in the background.  interact did ioctl(0...)s to
  421.         change the terminal mode, ignoring the -u flag.
  422.  
  423.         Fixed a bug in kibitz which blew up when asking for a password
  424.         due to a spelling error.  The drawbacks of interpreters...
  425.  
  426. 2/4/92    3.16.3    Dongchul Lim <lim@doctor.chem.yale.edu> noted that scripts can
  427.         hang in the background.  I had assumed isatty(0) was enough to
  428.         contrast bg/fg but it returns 1 if the script was started with
  429.         a & from the terminal.  I added code to watch if any ioctl(0)s
  430.         were done.  If so, than it is safe to do more, in particular
  431.         in the exit handler to reset the terminal modes.
  432.  
  433. 1/28/92    3.16.2    Fixed a bug on SV systems causing errors when trying to do
  434.         further reads after a SIGCLD had already arrived on a spawn_id.
  435.  
  436.         Peter Funk <pf@artcom0.north.de> gave mods for SCO XENIX 386.
  437.  
  438. 1/24/92    3.16.1    Oops.  Forgot to add pty_svr4.c to shar.
  439.  
  440. 1/13/92 3.16.0    Karl Lehenbauer <karl@sugar.NeoSoft.Com> a tiny change for
  441.         getting a clean compile on SCO 3.2.2.
  442.  
  443.         My getimeofday-avoidance code wasn't right, sigh.  Kibitz
  444.         noticed.  Fixed two other bugs in kibitz - password request
  445.         was for wrong user and it timed out but shouldn't have.
  446.  
  447.         Note: seems to work fine with new version of Tcl: 6.2
  448.  
  449. 1/13/92    3.15.1    Added a bit of code to avoid gettimeofday system calls when
  450.         timeout == -1.  Fixed minor bugs in kibitz relating to cleaning
  451.         up and returning error messages.
  452.  
  453.         Redid support for stdlib.h including making it default to fix
  454.         problem in Ultrix 4.2 reported by Oliver Kretzschmar <viskretz
  455.         @ikesg1.energietechnik.uni-stuttgart.de>.        
  456.  
  457.         Ian Johnstone <ianj@sequent.com> said his system (DYNIX 3.2)
  458.         needed an additional include <ctype.h> in inter_select.
  459.  
  460.         Dave Coombs <cme.nist.gov> added logic to test/weather to
  461.         accomodate a new feature in the weather server.
  462.  
  463.         Hal Peterson fixed some SV code that I just added for handling
  464.         SIGCLD properly.  He made the Cray-extra-child timeout in half
  465.         the normal timeout to allow distinguishing between eof and real
  466.         timeout.  Finished rest of Jeff Okamoto's fixes for HPUX.  
  467.  
  468.         Wally Strzelec <packman@tamuts.tamu.edu> provided mods for
  469.         Amdahl which has its own pty-handling functions.  Ifdef'd into
  470.         pty_usg.
  471.  
  472. 12/30/91 3.15.0    Fixed a bug that struck when eof occurred when reading from
  473.         multiple processes simultaneously and no user-supplied eof
  474.         handler.
  475.  
  476. 12/26/91 3.14.1    Ted Gibson <tgibson@logdis11.hq.aflc.af.mil> gave me some mods
  477.         for a 3B2 having to do with termio vs termios, etc.
  478.  
  479. 12/24/91 3.14.0    Deprecated expect 2.  Expect 3 is now the official version.
  480.  
  481.         Parag Patel <parag@netcom.netcom.com> gave me some #includes
  482.         necessary for A/UX 2.
  483.  
  484.         Brian Woodson noticed "send a b" generates incorrect debug
  485.         output.
  486.  
  487.         Working with Jeff Okamoto to run expect on HP/UX 8.0, we fixed
  488.         SIGCLD catching (he says HPUX doesn't ignore them by default?),
  489.         obviating longjmp from stomping locals, fixed a bug in cmdWait
  490.         that would prevent the wait status from being collected in
  491.         rare situations.
  492.  
  493. 12/17/91 3.13.1    James Davis suggested fixing Makefile to handle case where no
  494.         example scripts should be installed.  I added similar logic
  495.         for script man pages.
  496.  
  497.         Pete Siemsen fixed a bunch of things in the Makefile including
  498.         where to get expect when invoking fixline1.  He suggested defs
  499.         for supporting install and multiple MAN targets.
  500.  
  501. 12/12/91 3.13.0    Matthew Freedman <mattf@cac.washington.edu> noted mismatch
  502.         between lib man page (said "stty_init") and lib code (said
  503.         "exp_stty").  He also found a screwup in the library such that
  504.         the pty slave wasn't being set up correctly.
  505.  
  506.         Added note to kibitz man page on how to kibitz with 3 or more.
  507.  
  508. 12/12/91 3.12.0    "expect *" worked incorrectly if it was first expect after
  509.         spawn, due to buffer not being initialized.
  510.  
  511.         Added a good example for "expect -continue" to man page.
  512.         Added an FAQ about a gcc problem that seems to be common.
  513.  
  514. 12/11/91 3.11.2    James Davis noted I forgot to put kibitz.man in distribution.
  515.         I changed kibitz to read domain from resolv.conf instead of
  516.         calling domainname(1) for systems upon which NIS domainname
  517.         differs from Internet.
  518.  
  519.         Pete Siemsen <siemsen@barnard.usc.edu> noted slight error in
  520.         libexpect man page.
  521.  
  522. 12/10/91 3.11.1    A couple tiny mods to the Makefile courtesy of James B. Davis
  523.         and Michael Grant (guest worker from Sun, temporarily at
  524.         <mgrant@xdr.ncsl.nist.gov>.  Both of them also noted a problem
  525.         caused by incorrect installation of gcc that caused expect to
  526.         say "ioctl(set): Invalid something or other" upon exit.
  527.  
  528.         Fixed complaint about exit() while compiling without STDC.
  529.  
  530. 12/9/91 3.11.0    beta!
  531.  
  532.         Hal Peterson provided fixes for UNICOS 6.1 and 7.0 on both
  533.         CRAY-2 and CRAY Y-MP.  He also fixed a problem in interact
  534.         where malloc(0) could've occurred.
  535.  
  536.         Added support for allowing user to set interpreter prompt.
  537.  
  538.         Added forgotten -d flag to match_max in rftp script. 
  539.         Made kibitz understand user@host.
  540.  
  541.         Expect's internal buffer-full-handling incorrectly copied
  542.         the latter buffer half beginning from the end of the buffer.
  543.  
  544. 12/5/91 3.10.1    Massaged Makefile to allow for more flexibility in
  545.         installation, especially with regards to scripts.  #! is now
  546.         reset.
  547.  
  548.         Added "kibitz", a really cute script to let two people control
  549.         one program.  Example users are for one person to help another
  550.         remotely, logging a conversation (run emacs or whatever inside
  551.         kibitz and your conversation can be logged, scrolled backwards,
  552.         etc., or of course, playing games together.
  553.  
  554. 12/4/91    3.10.0    Tightened up arg checking for "wait" - it core dumped when it
  555.         should've said "syntax error".
  556.  
  557.         Rick Cady <rickc@nsd.3com.com> noted minor inconsistency in man
  558.         page describing strace.
  559.  
  560.         I fixed a bug that prevented "system stty -echo raw" from
  561.         working.  The raw data was clobbering the -echo data.
  562.  
  563. 12/3/91    3.9.0    Brian Woodson noted that "close -i ..." evoked a syntax error.
  564.         I had parsed the arguments incorrectly.
  565.  
  566.         After the nth request, I finally set up pub/expect/scripts as
  567.         a directory for scripts.
  568.  
  569. 12/2/91 3.8.0    Phil Sheperd <pshepher@loki.uni.edu.au> fixed a major bug in
  570.         exp_spawnv() preventing one side of the pty from being set up
  571.         correctly.  Thus nothing worked!  He also reported that his
  572.         system didn't have strdup, so I added an explicit defn of it.
  573.  
  574.         James B. Davis fixed a couple nroff-bugs on the man page, and
  575.         said someone already gave him a dump script (see below).
  576.  
  577.         Richard (R.C.) Vieregge <richv@bnr.ca> found a $ was missing
  578.         from test/ftp.exp.
  579.  
  580. 11/22/91 3.7.2    James B. Davis <james@solbourne.com> straightened out a couple
  581.         things in the Makefile and asked if anyone had written a script
  582.         for dump.
  583.  
  584.         Jeff Okamoto <okamoto@hpcc25.corp.hp.com> had a couple changes
  585.         for HPUX 7 and 8 compat, involving termio stuff.
  586.  
  587.         Prompted by Andy Norman, added note to man page describing how
  588.         to disable all argv processing while using #!.
  589.  
  590.         Converted passmass and rftp over to new version.
  591.  
  592. 11/15/91 3.7.1    Brian Woodson asked me about the Tcl_WaitPids "got unknown
  593.         process" panic.  This is a Tcl bug that John has promised
  594.         to fix.  I'll document how to avoid it in the man page.
  595.  
  596.         Incidentally, I'm going under the knife tomorrow for three
  597.         torn cartilage in my wrist.  The doctors say it may be a couple
  598.         days to couple months.  Until I get back, hang in there.
  599.  
  600. 11/13/91 3.7.0    Yet another bug discovered (and fixed).  "expect eof" was
  601.         failing to remember the buffer, and expect_out(buffer) was
  602.         empty upon return.
  603.  
  604.         Brian Woodson noted I forgot to document the -i flag of close.
  605.  
  606. 11/12/91 3.6.0    Sean Cunningham <sean@moorenet.com> reported that he couldn't
  607.                 open /dev/tty from 'at'.  'spawn' was incorrectly not executing
  608.         code to claim it was a controlling tty.  BSD only.
  609.  
  610. 11/11/91 3.5.1    Brian Woodson notes that version 2 and 3 treat the following
  611.         differently.
  612.  
  613.             proc p {} {spawn s}; expect
  614.  
  615.         In v3, spawn_id is locallized by the proc, and thrown away when
  616.         p returns.  Unfortunately, in v2 due to some sloppy coding on
  617.         my part, spawn always affected the global value of spawn_id.
  618.         This differed from the handling of other variables, and in v3,
  619.         this unusual behavior had to go, because the multiprocess
  620.         handling and the large number of variables implicitly set
  621.         (especially by the expect command) demanded that I be more
  622.         systematic about how this was done.
  623.  
  624.         Since I never depended on this behavior, I never documented it
  625.         as being something you should rely upon.  Alas.  To fix it, add
  626.         the line
  627.  
  628.             global spawn_id
  629.  
  630.         to the beginning of any proc that calls spawn and needs the
  631.         value of spawn_id implicitly defined outside of the proc.
  632.  
  633. 11/6/91    3.5.0    Drew Whitehouse <Drew.Whitehouse@anu.edu.au> hit a bad pointer.
  634.         I forgot an initialization in expect.c which caused problems
  635.         when an EOF occurred which had no eof pattern.
  636.  
  637. 11/2/91    3.4.0    Added FAQ from various questions people have sent me and my
  638.         replies.  Made CONVERTING file on converting from 2 to 3.
  639.  
  640.         Nelson H. F. Beebe <beebe@math.utah.edu> found a missing
  641.         declaration for exp_tty_original in bye() of main.c.  How come
  642.         the Sun C compiler doesn't complain about this!?!!?
  643.  
  644.         Nelson also reported that SunOS 4.0.3 had a problem including
  645.         varargs.  It turned out that old varargs had check for
  646.         reinclusion, and tclInt.h also includes it.  So I added an
  647.         #ifdef va_dcl and put my inclusion after tclInt.h.
  648.  
  649. 10/31/91 3.3.0    Converted most of the examples.  Three more to go.
  650.         Worked on man page some more.
  651.  
  652.         Modified expect so that if timeout > 0, and nothing in the
  653.         buffer matched, it will force a read, no matter how long the
  654.         preceeding code took.  This may be hard to understand, but is
  655.         the intuitive behavior that I always desired.
  656.  
  657. 10/30/91 3.2.0    Fixed bug in eof handling.  Converted some more of the
  658.         examples, and added to Makefile.
  659.  
  660. 10/29/91 3.1.0    Fixed slight bugs in tty mode switching, pty initialization
  661.         (via stty).
  662.  
  663.         Fixed expect library.  Fixed compatibility code for non-BSD
  664.         systems.  As usual, I could only test it so far, not having
  665.         all these systems at my disposal.  I don't expect major
  666.         problems though, since the basic functions I depend on haven't
  667.         changed.
  668.  
  669.         Completely rewrote handling of continue, return, etc in
  670.         expect, interact, interpreter.  It's actually systematic now.
  671.  
  672.         Checked with John O. about some code to bounce wild return
  673.         codes, which he said was a mistake and would remove, so now I
  674.         can pass my own return codes different from Tcl's.
  675.  
  676. To get | to return ->    TCL_RETURN    TCL_OK        (no return)
  677.        V
  678.     expect        return        default        continue -expect
  679.     interact        return -tcl    return        default
  680.     interpreter        return -tcl    return        default
  681.  
  682.         What this table says is, to get "interpreter" (for example) to
  683.         return TCL_RETURN to its caller, you must say "return -tcl",
  684.         because "return" makes it return TCL_OK.
  685.  
  686.         The "argumented" versions are considered to be the uncommon
  687.         form.  In particular, I'd be surprised if anyone ever uses
  688.         the -tcl argument, but it's there for completeness and
  689.         consistency now.
  690.  
  691.         Put together a FAQ.  Needs more work, but hopefully worthwhile
  692.         as is.
  693.  
  694.         Computing Systems with Expect article appeared a couple days
  695.         ago.  How ironic that it describes the old version of Expect.
  696.         Nonetheless, it looks ok.
  697.  
  698. 10/25/91 3.0.0    alpha!
  699.         First release of Tcl-6.0-ready code.
  700.         It might fly for a couple seconds.
  701.  
  702.     Here is a quick list of changes.  Besides Tcl incompatibilities, Expect
  703.     incompatibilities are flagged below as:
  704.  
  705.     **    major - scripts definitely won't run if they depend on this
  706.     *    minor - scripts probably will run but there is some subtle
  707.         change that should be examined).
  708.  
  709.     **    Select renamed 'ready' and undocumented.  Seems pointless now.
  710.  
  711.         Added support to expect command for waiting on patterns from
  712.         different processes.  The old version implemented this via
  713.         'select' but but it is much simpler via expect.  Added -i to
  714.         a number of commands to signify a spawn_id which overrides
  715.         the variable.
  716.  
  717.         Added any_spawn_id to match any spawn_id.
  718.         An explicit null pattern, forces a spawn_id to be considered
  719.         when all it can possibly match are any_spawn_id patterns.
  720.  
  721.     *    output is no longer flushed to expect_match upon timeout. 
  722.         May be multiple buffers now, so it doesn't make sense to
  723.         flush just one.)  -n was added to disable transfers from input
  724.         buffer to expect_match var.  I suspect it will only be used
  725.         for experimentation.
  726.  
  727.         Added expect -re for regular expressions.  Added expect_out
  728.         array to retain indices and strings of partial matches for
  729.     **    for both glob and re.  expect_match has been renamed
  730.         expect_out(buffer).
  731.  
  732.         A la Tcl, added -nocase for both types of patterns.  (Oddly,
  733.         Tcl's case only does it for regexps.)
  734.  
  735.         By popular demand, unanchored glob patterns.  Old patterns
  736.         will continue to work, since earlier interpretation was much
  737.         stricter.  Unfortunately, unanchored matches make certain user
  738.         errors easier.  For instance, people will send answers before
  739.         seeing all of the question.  Typically, output can 'look'
  740.         ugly, as answers land in the middle of other things.
  741.  
  742.         To anchor patterns, use ^ in beginning and/or $ at end.
  743.  
  744.         Added expect_out(spawn_id) to report which spawn_id was read.
  745.  
  746.         Made expect and variants understand all args as one arg.
  747.  
  748.         Added 'default' pattern.
  749.  
  750.         Added continue_expect command.
  751.  
  752.         Added expect_before, expect_after commands which take same
  753.         args as expect, but continue to stay in effect for all expects.
  754.  
  755.     **    Added match_max command, deleted it as a variable.  The old
  756.         way was too coarse for use over multiple spawn_ids.  With no
  757.         arg, returns current max.  Takes -i flag and -d for default.
  758.  
  759.         Added globbing to spawn command.
  760.  
  761.         Added optional -i spawn_id to wait.
  762.  
  763.         Added optional -i to send (and all it's variants).
  764.  
  765.         Renamed trace to 'strace' since it conflicts with Tcl's new
  766.         trace command.  Since 'trace' traces variables, I figured
  767.         'strace' wasn't too bad (for "statement trace").  I felt
  768.         obliged to make it short and not as obliged to make it as
  769.         meaningful since it will probably invariably be typed by hand.
  770.  
  771.         Made timeout == -1 mean infinity.
  772.  
  773.         Made interact do pattern matching in both directions via
  774.         use of -o flag.
  775.  
  776.         Added -F flag for convenience.  If -f or -F used, interact
  777.         can no longer be overrun.  In particular, if more characters
  778.         arrive then match a pattern, remaining characters will be
  779.         buffered rather than thrown away (old behavior).
  780.  
  781.         Patterns may now be substrings of one another.
  782.  
  783.         Made interact optionally take all args as one.
  784.  
  785.         Default action is now 'interpreter' (see below).
  786.         interpreter now forces cooked mode, and echos results
  787.         so you don't have to constantly say "send_user [...]\n"
  788.  
  789.     *    Interact reads characters that have been buffered but not
  790.         matched by expect.  And vice versa.  Does anyone care?
  791.         (My rogue script did.)
  792.  
  793.         From discussion with John Conti, I decided to make
  794.         'interpreter' a separate command to start up interactive
  795.         command processor.  Changed default action in interact to this.
  796.         Added eval depth and event id to prompt to interpreter.
  797.  
  798.         Added expect_library which contains path for commonly
  799.         sourced expect scripts.  Automatically source expect.rc
  800.         out of expect_library unless -N given.  Automatically source
  801.         ~/.expect.rc unless -n given.
  802.  
  803.         Added expect_version command to print and/or verify script
  804.         is compatible with running expect.  Tcl version is also tested.
  805.         Felt it was worth making this a command because it's such a
  806.         pain to tear apart version strings.
  807.  
  808.         Tcl's close and exit are both subsumed by expect's commands
  809.         of the same name.
  810.  
  811.         Rewrote mode switching code so that "system stty" is handled
  812.         specially.  This allows interact and interpret to get the modes
  813.         they want, without burning the user.  It is now much easier
  814.         to leave expect in raw mode all the time, but the choice is
  815.         up to the user.
  816.  
  817.         Added vgrindefs, courtesy of Brian Fitzgerald.
  818.  
  819. 9/23/91        Tcl 6.0 released.  This new Tcl has some incompatibilities
  820.         with the old Tcl, so as long as everyone is changing their
  821.         scripts already, I'm taking the opportunity to make some
  822.         incompatible changes to Expect that I've wanted to do for a
  823.         long time.
  824.  
  825. 9/11/91 2.67    Ed Klein <eklein@syrinx.umd.edu> added support for SVR4 in the
  826.         form of pty_svr4.c and mods to command.c.
  827.  
  828.         Added explanation to man page of how to create unreadable but
  829.         executable scripts.  (No, chmod 111 doesn't work.)
  830.  
  831.         Mark Diekhans <markd@grizzly.COM> pointed out to me that there
  832.         is a potential problem with the trap command:
  833.  
  834.         "There is no control over when the signal will cause Tcl_Eval
  835.         to be executed.  There is a chance that code in the Tcl library
  836.         will be executing when the signal comes in and the interpreter
  837.         data structure will be in an inconsistent state.  This could
  838.         cause all sorts of nasty things to happen.  In our Extended Tcl
  839.         (4.0) we added signal handling. but the way we implemented it
  840.         was to have the signal handler set a global flag.  We modified
  841.         Tcl_Eval to check the flag after it finishs executing each
  842.         command.  If the signal came in, Tcl_Eval then returns an error
  843.         such as: "SIGINT signal received".  Signals may then be caught
  844.         with the catch command and processed."
  845.  
  846. 9/10/91 2.66    Don Jackson <Don.Jackson@Eng.Sun.COM> found a syntax error in
  847.         the usage error message of the example ftp-rfc script.
  848.  
  849.         Marty Olevitch <marty%cosray@wuphys.wustl.edu> provided mods to
  850.         support MORE/bsd.  Namely, added #include types.h to expect.c
  851.         and extern int errno to a number of files.
  852.  
  853.         Scott Hess <scott@nic.gac.edu> noted a potential problem in
  854.         interact.  Since interact only checks patterns at beginning
  855.         of reads, user can conceivably type fast enough so that
  856.         patterns are typed in the middle of a read.  In reality this
  857.         doesn't happen, but Scott was driving one expect with another
  858.         expect and in this way provoked the behavior.
  859.  
  860.         The solution is to read chars one at a time, either by
  861.         read(,,1) or buffering in a stdio-like way, but I'm not going
  862.         to do that because the code should really be rewritten entirely
  863.         and it just isn't worth it, since it is so easy to get around
  864.         at the user level.
  865.  
  866.         Steve Legowik found that spawn-disconnect sequences fail.  The
  867.         pty testing I added in version 2.55 causes expect to regain the
  868.         slave as a controlling tty, which generated SIGHUPs.  If anyone
  869.         knows a clean way to avoid regain controlling ttys, let me
  870.         know.  For now, I just set SIGHUP to SIG_IGN in the disconnect
  871.         command.
  872.  
  873. 8/14/91 2.65    Old passmass script changed root password.  I renamed it to
  874.         passmass.old, and made a new one which works for any account.
  875.         It also supports yppasswd, telnet/rlogin, different names for
  876.         accounts on different machines.  Handles VMS machines, too.
  877.  
  878.         Added Computing Systems paper to expect distribution and moved
  879.         all expect-related things to separate expect directory in our
  880.         ftp directory.
  881.  
  882. 8/5/91    2.64    Achille Petrilli <achille@miss.cern.ch> found that on an SGI,
  883.         the expect command ocassionally returned "no more processes".
  884.         He traced the problem back to O_NDELAY in the open, which was
  885.         taken as-is from the man page, by someone else who's code I
  886.         didn't look at too closely at the time.  The result works now.
  887.         Oddly I thought I fixed this error myself when the SGI support
  888.         was first installed, but I cannot find it.  I evidentally
  889.         screwed up.
  890.  
  891. 7/31/91    2.63    Steve Legowik <legowik@cme.nist.gov> wanted to implement
  892.         callback by having a modem dial out and NOT go away, but
  893.         interact in the reverse direction.  I added "interact -u" to
  894.         support the idea of changing the user from the default stdio
  895.         to a second spawned process.  The result is that we can now
  896.         write a modem callback program that doesn't depend on the cute
  897.         trick of having getty recognize DTR which only worked when the
  898.         modem was directly connected to the computer.  In Steve's case,
  899.         there were several network switches in the way.
  900.  
  901.         Added "overlay" function which is similar to plain "exec" in
  902.         shell.  (Too bad Tcl took the name already.)
  903.  
  904.         Added robohunt scripts to the test directory.  I wrote these
  905.         back in January, '91 and forgot about them til now.  But I
  906.         suppose they are illustrative (at the very least of how to
  907.         generate truly random numbers).  Ha.
  908.  
  909. 7/20/91    2.62    Carl Witty <cwitty@jessica.stanford.edu> pointed out my fdset
  910.         implementation (for systems that don't have it) wasted some
  911.         space.  I had commented it correctly, however, making the
  912.         incorrect code obvious (except to me).
  913.  
  914.         Robert Howland <howland@rahjr.ame.nd.edu> pointed out that
  915.         expect complained about not running from a real terminal under
  916.         cron.  Oops!  So I added a test to skip saving/restoring
  917.         terminal modes when fd 0 is not a tty, since this is obviously
  918.         pointless.
  919.  
  920. 7/19/91    2.61    Oops.  Forgot to include getline and getline.exp examples even
  921.         though they have been documented!
  922.  
  923. 7/17/91    2.60    UMich changed interface to weather system necessitating change
  924.         to weather script.
  925.  
  926. 7/9/91    2.59    Didn't correctly comment things right in Makefile.  Fixed.
  927.  
  928.         Changed 'close' in gethostbyaddr example to 'catch close'.
  929.  
  930. 6/22/91    2.58    Made new file (pty_sgi.c) for supporting Silicon Graphics ptys.
  931.         Silicon Graphics select fails to see eof immediately but poll
  932.         works ok.  Unfortunately, there was an error in inter_poll
  933.         (bad_io was uninitialized).  Silicon Graphics works now.
  934.  
  935.         Andy Norman <ange@hplb.hpl.hp.com> notes that linking expect
  936.         with the BSD compatibility library under HP-UX, libc.a must
  937.         be loaded before libBSD.a.  Modified Makefile to reflect this.
  938.         He notes that there is a problem with expect not reading an EOF
  939.         from the current process.  This should go away with HP-UX 8.0
  940.         when select has been enhanced to flag exceptions in the readfds
  941.         argument.  Probably inter_poll would work.
  942.  
  943.         Edward Haines <haines@bbn.com> notes that close returns EPERM
  944.         ("Not owner") on his Sun 4.0.3.  This is rather startling!
  945.         (That's what I get for checking the return value of close!)
  946.         He said it is possible that they have modified things (viz.
  947.         DDN X.25 is loaded), but it still sounds incredible.  For now,
  948.         I told him to either "catch" all closes or to remove the check
  949.         in the source code.  
  950.  
  951.         Added example scripts: ftp-rfc retrieves an RFC from uunet
  952.         via ftp.  archie mails back a listing from the archie server.
  953.  
  954.         Add the rest of Hal Peterson's changes for Cray support, 1)
  955.         fixing a problem where spawned processes flushed unread I/O
  956.         upon process exit, and 2) creating processes with the correct
  957.         uid.  See his comments in command.c for more info.
  958.  
  959. 6/6/91    2.57    (On Cray) made signal handler declarations right.  Added
  960.         missing #endif.  Added includes to pty_unicos.c.  Fixed bug
  961.         in two bugs in CmdSend, one involving send_stderr, the other
  962.         send_user.  All of these are from Hal Peterson.
  963.  
  964.         Added gethostbyaddr as example script.  Given an internet
  965.         address, it returns the domain name.  By querying neighboring
  966.         hosts if the name server fails, a much higher probability of
  967.         returning the name is obtained.
  968.  
  969. 5/30/91    2.56    Mispelled "match_max" as "max_match" in rftp script.  This
  970.         caused files after the 2000 byte mark (per directory) to be
  971.         skipped.
  972.  
  973. 5/21/91    2.55    Revisited BSD pty code to reject ptys that have either slave or
  974.         master side already open.  This fixes problems rare problems
  975.         such as expect not being able to see EOFs from the child proc.
  976.         (because another process still has the pty slave side open).
  977.         USG and Cray pty code could probably use this code, too.
  978.  
  979.         Fixed bug in expect library (lib_exp.c) which caused output to
  980.         be copied to stderr instead of logfile when logfile_all was
  981.         set.  Per Sreedhar Muppala <muppalla@nssdca.gsfc.nasa.gov>.
  982.  
  983. 5/16/91    2.54    Fixed weather script to accomodate occasional Weather Watch
  984.         that would cause an unexpected initial question to pop up.
  985.  
  986. 5/15/91 2.53    Added comment to BUG section of man page describing pty
  987.         misbehavior with non-interactive programs (search for "553061"
  988.         below), as per Hal Peterson <hrp@cray.com>.
  989.  
  990.         Removed note from README about asking Ousterhout for SV TCL
  991.         at his request.
  992.  
  993. 5/11/91    2.52    Fixed a syntax error that Bruce Larson <ires@kaspar.ires.com>
  994.         found in inter_poll.c
  995.  
  996. 4/23/91        Computing Systems accepted paper on Expect for issue 4.2.
  997.  
  998. 4/18/91    2.51    Added some example scripts:
  999.         weather - retrieves weather forecasts from National Weather
  1000.         Service via University of Michigan server.
  1001.         rftp - ftp a directory hierarchy (i.e., recursively).
  1002.  
  1003. 4/18/91    2.50    Changed timeout to apply to total time in expect rather than
  1004.         per read().  Original behavior hung forever when my modem test
  1005.         script started listening to a modem than spit out 1 spurious
  1006.         character every 10 seconds (very consistently).
  1007.  
  1008.         Hal Peterson <hrp@pecan.cray.com> noted that exp_spawnv's args
  1009.         didn't match documentation.  Fixed in favor of documentation.
  1010.         Several other funcs don't match header file (but typechecking
  1011.         is avoided during compilation), because it was too hard for me
  1012.         to make the header file ANSI compliant and support varargs 
  1013.         (which is undeniably more portable than stdargs at this point).
  1014.         Fixed prototype declarations (again) in expect.h for C++ and
  1015.         Standard C.  Verified with GNU, G++ and Sun C (proto-less).
  1016.  
  1017.         Added exp_disconnect to library.  Moved alarm calls closer
  1018.         to read() to tighten windows.
  1019.  
  1020. 4/11/91    2.49    Changed passmass script to use timeout of 1000000 instead of
  1021.         10000000000 after discovering that Ultrix sleep(3) doesn't
  1022.         sleep at all for large values!
  1023.  
  1024.         Added support for systems without dup2 (SVR2) per
  1025.         <elston@edwards-tems.af.mil>.
  1026.  
  1027.         Added test/Makefile to shar as per Chris Pribe
  1028.         <cpribe@park.bu.edu>.
  1029.  
  1030. 4/4/91    2.48    Fixed possible problem with poll in inter_poll.c for systems
  1031.         that check for a valid address even though no members are used.
  1032.  
  1033. 3/27/91    2.47    Added support for Cray Unicos 6.0, which of course is different
  1034.         from Unicos 5.1 (which was different from everything else)!
  1035.         This and other minor bugs fixed courtesy of Pete Termaat.
  1036.  
  1037. 3/19/91    2.46    Removed a "feature" which caused patterns with no whitespace
  1038.         not to be run through SplitList.  While not documented not to
  1039.         do so, this was mystifying even to me when I saw it.  For
  1040.         William Waite.  The result actually simplified the internal
  1041.         handling of multiple patterns, removing some excessively
  1042.         complex logic that I thought would be helpful for speed, but
  1043.         that in retrospect, was not that important.
  1044.  
  1045. 3/16/91    2.45    Added my own definition of FD_SET, fd_set, etc, test for
  1046.         SIGABRT, and support different types of signal arg func
  1047.         definitions to support SunOS 3.5 as requested by William Waite
  1048.         <waite@scotty.colorado.edu>.
  1049.  
  1050. 3/14/91    2.44    Removed redundant def'n of pty_stty in pty_usg.c, redef of
  1051.         sprintf and added signal.h to command.c to make compiles
  1052.         cleaner on SV3 and HPUX machines.  All compliments of Mike
  1053.         Gourlay.
  1054.  
  1055. 3/10/91    2.43    Added -s (for slow) and -h (for human) flags to send.  This
  1056.         had been requested by several people including Frank Terhaar-
  1057.         Yonkers (who actually wrote and tested a "send_slow" command),
  1058.         and Steve Simmons who suggested the "human" option (over a year
  1059.         ago), and Brian Woodson (brianw@swqa-sun.ESD.3com.com), who
  1060.         requested both!  Thanks to NIST statistician, Keith Eberhardt,
  1061.         who taught me about the Weibull Distribution.
  1062.  
  1063.         According to Jim Thomas <jthomas@nmsu.edu>, 3b2 requires
  1064.         defines for R_OK and W_OK.  Added to pty_usg.c.
  1065.  
  1066.         Added support for "-" as file name on command line to mean
  1067.         stdin as requested by Steve Clark <clark@cme.nist.gov>.
  1068.  
  1069.         Wrote passmass (change root password on a set of machines) as
  1070.         requested by Ken Manheimer <klm@cme.nist.gov>.  Added to test
  1071.         directory.
  1072.  
  1073. 2/21/91 2.42    Removed reinstallation of signal 0 in signal handler.
  1074.  
  1075.         Added hook for setting initial pty parameters when started in
  1076.         the background.  Should've done this a long time ago, but I
  1077.         was never really happy with my solution and had hoped I would
  1078.         think of a nicer method.  I only hope this is clean enough.
  1079.  
  1080. 2/10/91    2.41    Added buffer_full keyword to solve Brian Fitzgerald's problem.
  1081.         It disables "forgetfullness" so that when expect's internal
  1082.         buffer hits match_max, whatever it has returns at that point.
  1083.         Didn't add this to the library version, because I want to think
  1084.         for awhile about the cleanest way to do it.
  1085.  
  1086. 2/4/91    2.40    Per Brian Fitzgerald (fitz@mml0.meche.rpi.edu), fixed error in
  1087.         interact example on man page which incorrectly implied that
  1088.         "kill" was built-in.
  1089.  
  1090.         Added fork/disconnect functions.  This solved the problem of
  1091.         Jerry Friesen (jafries@snll-arpagw.llnl.gov) who wanted to run
  1092.         an expect script that asks for a password and then goes to
  1093.         sleep for awhile before waking up to run in the background (to
  1094.         run a program using Kerberos).
  1095.  
  1096. 1/30/91    2.39    Per Jim Johnson (jaj@mlb.semi.harris.com), added declaration
  1097.         and documentation for exp_pid in libexpect.
  1098.  
  1099. 1/10/91    2.38    More mods from Frank Terhaar-Yonkers.  Also, some requests
  1100.         from Pete TerMaat (pete@willow.cray.com) for features:
  1101.  
  1102.         1) a single-step facility.  Yeah, that would be nice.  No
  1103.         ideas on how to do this easily.
  1104.  
  1105.         2) Generate scripts automatically after watching a session.  
  1106.         This is hard.  Read more about this in the FAQ.
  1107.  
  1108. 1/10/91    2.37    Added support for Cray Unicos 5.1, all courtesy of Frank
  1109.         Terhaar-Yonkers (fty@sunvis.rtpnc.epa.gov).  Most of it had to
  1110.         do with pty support.
  1111.  
  1112. 1/8/91    2.36    Modified expect.h to support C++ and ANSI prototypes.  Added
  1113.         appropriate example in test directory based on chesslib.c.
  1114.  
  1115. 1/7/91    2.35    At the request of Jan Norden (jano@imdpy1.im.se) added
  1116.         NO_MEMCPY and NO_STRING_H defines for Pyramid.
  1117.  
  1118. 1/3/91    2.34    Added a check to protect against a longjmp occurring between
  1119.         i_read and alarm(0).  Didn't think this would be a problem but
  1120.         evidentally a function return modifies the stack, so it cannot
  1121.         be returned to again.  Drat!  This appeared in the robohunt
  1122.         script I wrote which plays hunt automatically and uses 1
  1123.         second timeouts.
  1124.  
  1125. 12/19/90 2.33    Add signal to sighandler, to reinstall signal for those systems
  1126.         that need it.
  1127.  
  1128. 12/12/90 2.32    Removed test for args to expect.  I only recently realized that
  1129.         no args still allows a valid way to check for timeout and eof!
  1130.  
  1131. 12/6/90    2.30-1    Mike Gourlay (mike@penguin.gatech.edu) found and fixed quite a
  1132.         few SV-related problems that I had introduced since Clem's
  1133.         fixes.  We eventually got it to run on his HPUX machine, a
  1134.         mixed breed of BSD/USG stuff.  But spawning a shell worked but
  1135.         always produced a complaint about "no access to tty" which we
  1136.         were never able to get rid of, and he had a problem with
  1137.         exp_fexpect (but not exp_expect), although it still isn't clear
  1138.         if that was expect's fault.  He said he would speak to some HP
  1139.         engineers about what he found.
  1140.  
  1141. 12/5/90    2.29    Fixed a malloc off-by-one bug in new C library.  After
  1142.         contemplation, revised interfaces.  Decided that rather    than
  1143.         following the original 'expect' style, it should be more like
  1144.         what a C programmer is used to, so I made the file descriptors
  1145.         be parameters to exp_expect rather than globals, added an
  1146.         exp_popen which is a popen equivalent, and added exp_fexpect
  1147.         versions which are stream equivalents.
  1148.  
  1149.         Am not happy with exp_fexpect.  It is much less efficient than
  1150.         exp_expect, because there is no way to (portably) get fread()
  1151.         to return the way read() does, with less then the number of
  1152.         characters you supplied a buffer for.  Instead, I have to call
  1153.         fgetc for every char.  Ugh.
  1154.  
  1155.         Add a couple new examples, including lpunlock, time.exp,
  1156.         chesslib.c (using file descriptors) and chesslib2.c (which uses
  1157.         stream pointers).
  1158.             
  1159. 12/3/90    2.28    Created C library version of expect.
  1160.  
  1161. 11/29/90 2.27    Fixed bug in interact - when no string actions were defined,
  1162.         the mapping table length wasn't set at all.
  1163.  
  1164.         Made interact call printify when debugging so that crlf and
  1165.         other nonprintables are visible.  Fixed bug in printify which
  1166.         interpreted some characters wrong due to parity.
  1167.  
  1168.         Added some more examples to the distribution (lpunlock,    dvorak,
  1169.         timed_read) and put in another tip in the TCL HINTS section of
  1170.         the man page.
  1171.  
  1172. 11/18/90 2.26    Fixed mismatched comment per Craig Warren (ccw@deakin.oz.au).
  1173.         Also improved man page entry for "interact".
  1174.  
  1175. 11/17/90 2.25    Added -f (fast) on interact options, and made default case a
  1176.         little more efficient.  Added explicit support for SIG_IGN and
  1177.         SIG_DFL in trap command.  Added ability to specify signals
  1178.         symbolically for portability.
  1179.  
  1180. 11/15/90 2.24    Craig Warren (ccw@deakin.oz.au) wanted to exit expect while in
  1181.         interact with a single character.  Dan Bernstein
  1182.         (brnstnd@kramden.acf.nyu.edu) wanted to suspend with a single
  1183.         character.  So I generalized interact's escape character to
  1184.         string-action pairs.
  1185.  
  1186. 11/7/90    2.23    Tired of getting reports that various (Ultrix 3.1, BSD4.3) C
  1187.         compilers can't handle ternary conditionals returning ptr to
  1188.         func returning void.  Made all (2) such statements into
  1189.         if-then-elses.  Per Steve Simmons (scs@iti.org).
  1190.  
  1191. 10/8/90    2.22    Allow "log_file" even when no log is open.  This makes user
  1192.         programming a little simpler - they don't have to remember
  1193.         whether they opened the log or not.
  1194.  
  1195. 9/27/90    2.21    Fixed bug, v2.19 introduced.  debuglog(unknown string) requires
  1196.         a "%s" as formatting for protection against %'s in the unknown
  1197.         string.
  1198.  
  1199. 9/17/90    2.20    4 syntax errors in interact_poll.c, vik@sequent.com.  Added
  1200.         quotes to all the sends (now that this is more efficient) in
  1201.         the examples and man pages.  Also removed a misstatement in the
  1202.         man page about the behavior of double quotes.
  1203.  
  1204. 9/15/90 2.19    Removed buffering from send command.  Originally, I buffered
  1205.         the args, so I could do it all in one write.  But to send
  1206.         variables bigger than the buffer didn't work.  I didn't think
  1207.         about this before.  But Joe Gorman
  1208.         (Joe.Gorman@elab-runit.sintef.no) asked me if you could "send"
  1209.         a file in one command, and of course you can using [exec cat]
  1210.         as the argument to send, but the damn buffering prevented big
  1211.         files from being sent.  Anyway, now it works.
  1212.  
  1213. 9/14/90        Fixed the declarations of nflog and nferrlog.  Added a #define
  1214.         so lack of pid_t could be controlled from the Makefile.  Per
  1215.         Andy Holyer (and@ux.rfhsm.lon.ac.uk)
  1216.  
  1217. 9/4/90    2.18    Added trap command to catch signals.  This is nice as (among
  1218.         other things) it allows you to turn off the conversion of ^C to
  1219.         timeout which was requested by John Conti <jconti@cisco.com>.
  1220.  
  1221. 8/21/90 2.17    Fixed bug in printify.  Forgot to reset ptr to beginning of
  1222.         print buffer.  Made debugging info wrong.  Possibly screwing up
  1223.         other things on overflow.
  1224.  
  1225.         Paper accepted into USENIX LISA!
  1226.  
  1227. 8/15/90        libes    Cleaned up man page.  Made tabs line things up
  1228.         correctly, finally.
  1229.  
  1230.         Found another problem with ptys (at least under SunOS 4.1 and
  1231.         earlier).  When last pty-slave fd closed, any unread output is
  1232.         lost after a short window of time (around 10 seconds on a
  1233.         Sun 3/60).  Sent example ptybug.c to Sun demonstrating this and
  1234.         EIO problem found earlier.  (Service Order #553061)
  1235.  
  1236. 8/6/90    2.16    Added -f to debug command, -a to log_file command.  This
  1237.         required significant changes, including revisiting all the
  1238.         logging routines, plus miscellaneous output done in special
  1239.         places.  Noted that it cannot be done with getopt, since it
  1240.         could be called during main's getopt, and getopt is not
  1241.         reentrant!  (Guess how I discovered this!!)
  1242.  
  1243.         I'm not particularly happy with the design, but maybe others
  1244.         won't be.  In any case, I like the benefit of it and am now
  1245.         glad that -a was asked for.  Per Harry Bochner and Ira Fuchs
  1246.         (fuchs@pucc.bitnet).
  1247.  
  1248.         Changed behavior of argv, so that 0 == [length $argv] when no
  1249.         script/args supplied.
  1250.  
  1251. 8/4/90    2.15    Added debug command, so -d-ness could be changed while expect
  1252.         is running.
  1253.  
  1254. 7/20/90    2.14    Fixed small bug in -d output from expect, which    printed ^Z as
  1255.         ^:
  1256.  
  1257. 7/18/90    2.13    Added wait command.  A waitpid/waitspawnid would be nice and
  1258.         cleaner, too, but since csh doesn't need it, it is probably not
  1259.         worth much.
  1260.  
  1261.         Consequently, removed SIGCHLD handling from command.c.  It
  1262.         worked under SV but not BSD.  By forcing users to explicitly
  1263.         code waits, resulting scripts are more portable.
  1264.  
  1265.         Rewrote rogue example.  rogue sometimes misses EOF (generated
  1266.         by close on our side) and continues reading.
  1267.  
  1268. 7/16/90    2.12    Removed buffering from variadic log routines.  This was
  1269.         faulting when the buffers overflowed.
  1270.  
  1271.         Cleaned up the -d output from expect, so it is much more
  1272.         readable.  For example, control characters are now visible.
  1273.  
  1274. 7/14/90    2.11    Added declaration for errno, to support 4.3BSD.  Per Alan
  1275.         Crosswell.  Added -i flag and related behavior.
  1276.  
  1277. 7/12/90    2.10    Fixed bug where timeout = 0 waited forever rather than not
  1278.         waiting at all.
  1279.  
  1280. 7/11/90        Fixed man page example which didn't include the blank on the
  1281.         end of an ftp prompt.
  1282.  
  1283. 7/9/90    2.9    Fixed bug in send when spawn_id = $user_spawn_id.
  1284.  
  1285. 6/27/90    2.8    Integrated some mods from clem cole (clemc@ccc.com) to support
  1286.         System V.3 (386/ix Version 2.02).  Unfortunately, he didn't do
  1287.         "select".
  1288.  
  1289. 6/25/90    2.7    Test that cmdfile and logfile are open before fclosing in child
  1290.         while spawning.  Per Corey Satten <corey@cac.washington.edu>
  1291.  
  1292. 6/24/90    2.6    Pty master returns EIO instead of EOF when pty slave closes.
  1293.         Bug in pty driver?  Until I figure this out, I have put in code
  1294.         to interpret EIO to EOF.
  1295.  
  1296. 6/21/90        Added new section to expect man page - Tcl hints.
  1297.  
  1298. 6/14/90        Spoke at USENIX.  Went well.  Added USENIX paper as separate
  1299.         ftp archive.
  1300.  
  1301. 6/4/90     2.5    Fixed bug in ^C catching during expect.  Changed man page to
  1302.         accurately describe what ^C does.  Fixed bug that caused "send"
  1303.         to screw up when handed 0 arguments.  All per Harry Bochner.
  1304.  
  1305. 6/1/90    2.4    Made trailing empty action in expect optional, primarily to
  1306.         make straightline code easier to read.
  1307.  
  1308. 5/15/90    2.3    Changed expect to strip nulls from program output since there
  1309.         is no way for Tcl to handle them, per Harry Bochner.
  1310.  
  1311. 5/5/90        Added "send_error" command.
  1312.  
  1313. 4/26/90        Got USENIX paper back from Kolstad to proof.  Am depressed at
  1314.         how awfully they formatted it.
  1315.  
  1316. 4/25/90    2.2    Eric Newton found that expect's special variables weren't being
  1317.         found inside of user subroutines.  Had to do with new Tcl,
  1318.         which now differentiates between variables that are undefined
  1319.         vs. empty.
  1320.  
  1321. 4/24/90        Upgraded Tcl from 2.1 to 3.3.
  1322.  
  1323. 4/22/90        Added special behaviors of ^C in expect, and when profiling.
  1324.         Profiled rogue (at urging of Ousterhout).
  1325.  
  1326. 4/10/90    2.1    Added select command.  Added support for user_spawn_id so that
  1327.         you could treat user just like another process (i.e. with send
  1328.         and expect).  Decided to leave send_user/expect, since scripts
  1329.         are more readable with them.
  1330.  
  1331. 4/2/90    2.0    Changed syntax of expect to provide alternatives (a la Tcl
  1332.         case), per suggestion of John Ousterhout.  Note that this
  1333.         breaks pre-2.0 scripts.
  1334.  
  1335. 3/31/90        Got great comments from Ousterhout.  (This time he said that he
  1336.         really liked the idea.  Maybe he realizes how much it will
  1337.         promote Tcl!)
  1338.  
  1339. 3/30/90        Got comments from dpk.  Made me think more about Perl.
  1340.  
  1341. 3/28/90        Evi said I should turn the paper in unformatted and they will
  1342.         format it.  (She's kidding, I hope.)
  1343.  
  1344. 3/27/90    1.8    Rewrote interface so that raw arguments can be passed in like a
  1345.         shell.  I'd been thinking about this for some time, but Eric
  1346.         Newton finally prodded me into action.
  1347.  
  1348. 3/25/90        Got first corrections for paper - from Sue Mulroney!
  1349.  
  1350. 3/24/90        Observed that it is possible to use the #! syntax with expect.
  1351.         I asked John O. about this (his choice of # as a comment
  1352.         character), and he said it was pure coincidence.  Deprecated
  1353.         request to end scripts in ".exp".
  1354.  
  1355.         Ted Hopp volunteered to be my Center WERB reader.
  1356.  
  1357. 3/23/90        Finished 1st draft of USENIX paper and sent copies to John
  1358.         Ousterhout and panel chair, dpk@morgan.com.
  1359.  
  1360. 3/20/90    1.7    Deprecated "stty", and added more general "system" command.
  1361.  
  1362.         Sent Evi some complaints about the business of not allowing
  1363.         camera-ready at USENIX.
  1364.  
  1365. 3/17/90        Sent copies of man page to Doug Gwyn and Larry Wall for
  1366.         comments.  Note that gwyn downloaded it.
  1367.  
  1368. 3/16/90        Am really irritated by USENIX.  My paper has been put in a
  1369.         session against another session, the BSD people.  Furthermore,
  1370.         they called my paper an application, when it is no more so than
  1371.         any other shell or language.  Better I should be in "lessons
  1372.         learned".  Mashey said take a hike, i.e., it was too late to
  1373.         change the schedule.  On top of that, our session has four
  1374.         people in it, so I'll have very little time to speak.  Grrrr.
  1375.  
  1376. 3/13/90    1.6    Added "stty", because without it you can't do things like
  1377.         turning off echo to accept a password.
  1378.  
  1379. 3/8/90    1.5    Abstract was accepted into USENIX!!!!  Time to start writing
  1380.         it!  Sent man page to Ousterhout.  He didn't seem too
  1381.         impressed.
  1382.  
  1383.         Added "send_user/expect_user" after listening to Ken complain
  1384.         about how shell could not do timed reads.  Actually it can, but
  1385.         expect does it much more naturally.  Deprecated echo.  Now, I
  1386.         realize that expect can be viewed as a shell!
  1387.  
  1388.         Changed logfile/loguser to log_file/log_user to match all the
  1389.         variables with underscores in them.
  1390.  
  1391.         Barry Warsaw asked if there was any way one could execute any
  1392.         command from interact (apparently without any reason in mind).
  1393.         Nonetheless, it is a wonderful idea, and I changed the "abort
  1394.         character" in interact to an "escape mechanism".  After
  1395.         escaping, you may execute any command.  return duplicates the
  1396.         old action of the abort character.  Now you can do interactive
  1397.         job control, recursive interacts, etc.  You can bet I didn't
  1398.         get this right the first time!
  1399.  
  1400.         At Scott's request, fixed bug related to pty initializing.
  1401.         Scott was putting expect in the background which disassociated
  1402.         it from a tty, and I was blindly copying the tty parameters
  1403.         without checking to see if they were meaningful or not.
  1404.  
  1405.         Tightened up exit code.  Fixed bug in spawn so it would print
  1406.         error messages when it failed.  Spawn sends back the error
  1407.         message in the pty, if the fork succeeds but exec fails.  Cute!
  1408.  
  1409.         Added "close" command.  Makes scripts much shorter and cleaner.
  1410.  
  1411.         Return string matched by expect directly, rather than setting a
  1412.         special variable.
  1413.  
  1414.         Added "match_max" feature.  Probably no one will ever use it.
  1415.  
  1416.         Added trace command.
  1417.  
  1418. 3/6/90    1.4    Rob Densock was the second user, and suggested (demanded?) the
  1419.         idea of the loguser command.  I added it and changed "log" to
  1420.         "logfile" making the first incompatibility with existing
  1421.         scripts (sorry, Steve).
  1422.  
  1423. 3/1/90    1.3    Trying to make pty code more robust.  Many questions unanswered
  1424.         by manuals.  Did a lot of guessing.  While debugging, looked
  1425.         through pty code in gnuemacs to see if I might increase
  1426.         portability somehow.  I almost barfed when I saw all the funky
  1427.         ifdefs on weird ioctls.  Found lots of comments like "this
  1428.         might work".
  1429.  
  1430. 2/28/90        Sent a short Tcl bug list to John Ousterhout.  He thanked me!
  1431.  
  1432. 2/22-3/90 1.2    Hooked my first user, Steve Ray.  Surprisingly, he only    found
  1433.         one bug in the code (exit didn't handle args correctly), but it
  1434.         was obvious that I need to put more explanation in the man
  1435.         page.  Many of the examples in the man page are based upon his
  1436.         probl..  questions.  Thanks, Steve!
  1437.  
  1438. 2/20/90        Posted news about expect to "general" newsgroup locally.
  1439.  
  1440. 2/15-20/90    Talked to local POSIX reps and then to Steve Albert (AT&T)
  1441.         about portability of select, wait and other system calls.  I'm
  1442.         not impressed by 1003.1.
  1443.  
  1444. 2/9/90        John Ousterhout answered some questions I had about Tcl    syntax.
  1445.         I like this language!
  1446.  
  1447. 2/8/90    1.1    Sandy Ressler suggested the idea of being able to spawn
  1448.         multiple programs at the same time although he didn't say how.
  1449.  
  1450.         It took about a day to design and code the spawn_id hook.
  1451.         Extremely difficult to support this with uucp-style kludge.
  1452.         Switched to using select.  So much for portability.
  1453.  
  1454.         I investigated how to do this portably, and spent some time
  1455.         talking to NIST & AT&T POSIX representatives.  Unfortunately,
  1456.         portability (especially when it comes to select()) remains a
  1457.         dream.  Provided multiple versions of "interact" depending upon
  1458.         what OS you are running.
  1459.  
  1460. 2/7/90    1.0    Completed first cut of "sex" (for "Smart EXec" or
  1461.         "Send/EXpect").  Supports send, expect, echo, log, spawn,
  1462.         interact.
  1463.  
  1464.         Spent a lot of time making "log" write to log in just the right
  1465.         order (across fork and while debug flag enabled).  Ended up
  1466.         writing a bunch of variadic log routines.
  1467.  
  1468.         Fooled around with uucp-style multiple processes versus one
  1469.         process doing select() to read asynchronously.  Using
  1470.         uucp-style for now, since it is more portable.
  1471.  
  1472.         Gave up on pipes, and switched to ptys.  Pipes seem to be
  1473.         messed up by ftp, perhaps because it goes into raw mode?  Ptys
  1474.         are more efficient and cleaner to program albeit less
  1475.         well-documented and portable from system to system.
  1476.  
  1477.         Ken Manheimer helped me explain what the program does.  I kept
  1478.         saying it does "send/expect" processing, and he kept insisting
  1479.         that was meaningless to everyone.  (In fact, it comes from
  1480.         uucp, and I guess uucp hackers are indeed a dying breed.)  Ken
  1481.         gave me an elegant enough sentence that I expanded it into an
  1482.         abstract and sent it in to the USENIX conference the following
  1483.         day (two days after the deadline).
  1484.  
  1485.         I noted that the uucp documentation I referenced in the
  1486.         submission is dated October 31, 1978!
  1487.  
  1488. 1/30/90    0.0    Got a copy of Tcl and went to work.  Tcl was exactly what I
  1489.         need.  Plus, it is easy to use, AND it is documented.
  1490.  
  1491. 1/25/90        Attended Winter 1990 USENIX in DC, with the goal of banging
  1492.         heads with some other gurus in hopes of finding a good
  1493.         send/expect language for a generalized stelnet.  Had looked at
  1494.         uucp and kermit but found nothing general enough.
  1495.  
  1496.         Listened to John Ousterhout's presentation on Tcl.  By the
  1497.         middle of the talk, I had found religion.  At the end when he
  1498.         said it was public-domain, I was ready to orgasm.
  1499.  
  1500. */*/88-89    Spent a lot of time telling Scott how useful his program could
  1501.         be if he made it more general.  I thought it wouldn't be that
  1502.         difficult to make more generic.  Scott was interested but not
  1503.         enough to do it.
  1504.  
  1505. 9/25/87     Helped Scott Paisley write a program called stelnet, that
  1506.         forked a telnet and did very simple send/expect processing.
  1507.         It used pipes, not ptys.  It had no pattern matching, and only
  1508.         straight-line control without error handling.  Nonetheless,
  1509.         this got me to thinking about making stelnet more generic.
  1510.