Fixes PR 20055 from Robert Elz. Updates tk-expect to version 5.38.
Also remove the pre-configure step from tk-expect that was removed from
tcl-expect a year ago.
Also use the standard test target rather than an explict one.
7/18/02 5.38.0 At request of Hugh Sasse <hgs@dmu.ac.uk> added md5 hash of gz
to homepage.
Dave Schooler <dave@stashtea.com> reported that send -s wasn't
handling certains chars correctly. Turned out to be those
that had multibyte UTF8 reps. send -s was just pumping out
hunks of bytes without regard to UTF boundaries and evidentally
Tcl's I/O engine thought that it should translate a partial
UTF8 character into, uh, something else.
Curt Shroeder <c.schroeder@computer.org> fixed bug in rftp - a
a filename looked enough like a 3-digit diagnostic that the
script got confused.
4/16/02 5.37.2 Multixterm couldn't find man page all the time.
4/16/02 5.37.1 Made multixterm handle user-supplied args.
4/15/02 5.37.0 Added multixterm to example directory.
4/8/02 5.36.1 Backed out CONST qualifiers. Too much trouble with older
versions of Tcl. I'll let someone else worry about them.
4/8/02 5.36.0 Made first cut at multixterm, a replacement for crlogin.
Fixed bug in background handler. If an action waited on the
same spawn id, esPtr would become invalidated.
Ryan Schmidt <rschmidt@mac.com> noted configure didn't
recognize MacOS X. Downloaded new config.guess.
Andreas Kupries <andreask@activestate.com> provided CONST
patches to accomodate Tcl changes per TIP 27.
2/25/02 5.35.0 Joe Eggleston <joe@arbor.net> noted bug in full_buffer test.
The test hadn't been I18'd properly and was testing chars
instead of bytes. Also fixed diagnostics so it printed when
it was testing full buffer even if there wasn't one.
2/7/02 5.34.1 Bruce Hartweg <brhartweg@bigfoot.com> noted that direct spawn
ids were not being tested so something like "expect -i exp9999"
would dump core. Evidentally a bug from the 5.31 transition.
12/20/01 5.34.0 Don Porter <don.porter@nist.gov> provided package-related
fixes for test suite.
Brian Theado <brian.theado@usa.net> noted that interact's -re
support broke when offsets kicked in. Turned out that the
regexp engine supports them during execution but the results
are delivered RELATIVE to the offset. (I suspect this was done
due to expediency.)
Changes from 5.32.1 (the last pkgsrc version):
10/1/01 5.33.0 <mark@doradosoftware.com> found that expect's diagnostics
didn't include the "no" after testing for a full buffer.
Hemang Lavana <hlavana@cisco.com> noted that "debug" (Dbg_On)
calls didn't always force the debugger into step mode.
Martin Kammerhofer <dada@sbox.tugraz.at> noted that the man
page neglected to document interpreter -eof.
Chris Clare <clarec@nortelnetworks.com> provided fix for
multiple decl in C lib.
Sheng Wang <wangs@sh.bel.alcatel.be> found interact's
can-match code had broken. It was missing the special hook
that Henry had added just for this purpose. How strange.
Dieter Fiebelkorn <dieter@fiebelkorn.net> requested addition
to config.guess for Power*Macintosh:Darwin for MacOSX.
Aside - to download latest config.guess:
cvs -d :pserver:anoncvs@subversions.gnu.org:/cvs checkout \
config
Added pipeline example to unbuffer man page.
8/4/00 5.32.2 Allen J. Newton <anewton@alturia.fleet.org> provided code for
generating passwords with special characters in mkpasswd.
Brent Welch <welch@ajubasolutions.com> changed the fix1line
install script so that "autoexpect" and other scripts that
get installed into the platform-independent bin directory
generically invoke "expect" from the users PATH instead
of hardwiring the platform-specific expect pathname.
foo-* to foo-[0-9]*. This is to cause the dependencies to match only the
packages whose base package name is "foo", and not those named "foo-bar".
A concrete example is p5-Net-* matching p5-Net-DNS as well as p5-Net. Also
change dependency examples in Packages.txt to reflect this.
out of date - it was based on a.out OBJECT_FMT, and added entries in the
generated PLISTs to reflect the symlinks that ELF packages uses. It also
tried to be clever, and removed and recreated any symbolic links that were
created, which has resulted in some fun, especially with packages which
use dlopen(3) to load modules. Some recent changes to our ld.so to bring
it more into line with other Operating Systems also exposed some cracks.
+ Modify bsd.pkg.mk and its shared object handling, so that PLISTs now contain
the ELF symlinks.
+ Don't mess about with file system entries when handling shared objects in
bsd.pkg.mk, since it's likely that libtool and the BSD *.mk processing will
have got it right, and have a much better idea than we do.
+ Modify PLISTs to contain "ELF symlinks"
+ On a.out platforms, delete any "ELF symlinks" from the generated PLISTs
+ On ELF platforms, no extra processing needs to be done in bsd.pkg.mk
+ Modify print-PLIST target in bsd.pkg.mk to add dummy symlink entries on
a.out platforms
+ Update the documentation in Packages.txt
With many thanks to Thomas Klausner for keeping me honest with this.
Changes to the expect package since expect-5.25:
* This package is now split into two packages, tcl-expect, and
tk-expect. tcl-expect can be installed on systems without
X11 (and by extension, without tk).
* the copious expect examples and their man pages are now installed
into ${PREFIX}/share/examples/tcl/expect instead of into
${PREFIX}/bin and ${PREFIX}/man. If any of them are determined
to be worth separate use, they should be split out into a
separate package.
Changes to expect itself since expect-5.25:
** SUMMARY
Expect 5.31 now works with Tcl 8.2. Expect 5.31 does NOT work with
prior releases of Tcl. Thanks to an incredible amount of work by
Scott Stanton, Henry Spencer, Melissa Hirschl, and funding from
Scriptics for making this possible.
** NEW FEATURES
What? You mean that working with Tcl 8.2 isn't enough?????
Expect supports Tcl's new regexp engine.
Expect supports null bytes in strings directly. (You no longer have
to use the "null" keyword to send or match nulls. Of course, the
"null" keyword will continue to be supported.) Null removal (on
input) is still enabled by default since nulls are almost never
intended for end-user consumption in interactive dialogues.
** CHANGES IN BEHAVIOR (POTENTIAL INCOMPATIBILITIES)
The interpreter command used to exit upon eof. Now it uses "-eof
script" to control this behavior. The default behavior is to return.
(This change was required because Expect now gives control to Tcl upon
exit and Tcl waits (potentially forever) for all processes to die on
exit.) Explicit calls to interpreter are almost non-existent.
However, you should look for *implicit* calls via interact commands
with a pattern but no action. This required changes in the examples:
dislocate, dvorak, kibitz, and xkibitz.
Indirect variables can no longer start with "exp". Such variables
will be interpreted as channel names.
Old-style regexps may need conversion. If you have been protecting
regexps containing backslashes with {}, then you need to examine all
your backslashes since the new regexp engine interprets backslash
sequences (such as \n) itself. For example:
expect "\n" (works the same in Tcl 8.0 and 8.1)
expect {\n} (works differently in Tcl 8.0 and 8.1)
Scriptics has also created a new-regexp-features page which you should
read: http://www.scriptics.com/support/howto/regexp81.html. Some of
the new features allow much more efficient regexps than before. For
example, non-greedy quantifiers can replace [split] looping
constructions with a single regexp, enabling Tcl to parse very
efficiently. For the whole story, read the re_syntax man page.
The interact command's regexp matching no longer skips nulls. (I'd be
surprised if anyone misses this. At least I hope ....)
Expect's C library now reports failures in spawn's underlying exec
directly (by returning -1) rather than the way it used to (as data in
the pty). This makes user code more robust. However, it requires you
to simplify your code, alas. See the chesslib.c example.
Linking with Expect's C library no longer requires the Tcl library
(unless, of course, you make Tcl calls yourself). Tcl is still
required to build the library in the first place, however.
** CHANGES IN BEHAVIOR (SHOULD NOT CAUSE INCOMPATIBILITIES)
The match_max command now controls by bytes, not chars. This won't
cause problems unless your existing scripts are interacting using
sizeable chunks of multibyte characters. (If you don't know what I'm
talking about, ignore this.)
The Make/configure suite now corresponds to the TEA conventions (at
least in theory; the conventions are changing regularly so it's hard
to be less vague on this point). Significantly, this means that you
should be able to use the same configure flags as when compiling Tcl
or any other TEA-compatible extension. (See the INSTALL file.)
The values of special variables such as exp_spawn_id_any have changed.
(The values were never documented so you shouldn't have been using
them anyway.)
Spawn ids now appear as "exp...". (They used to be small integers.)
Do not assume that spawn ids will continue to be represented in any
particular way (other than unique strings).
** OTHER NOTES
Expect uses channels. There is an Expect channel type. It is
possible to use Tcl's channel commands, such as fconfigure, to change
the encoding. However, Expect layers its own buffering system on top
of Tcl's channel handler so don't expect intuitive behavior when using
commands such as gets and puts. Unless you know what you're doing, I
recommend manipulating the Expect channels only with the expect
commands.
Some effort was made to make Expect support threads, however it is not
complete. You can compile Expect with threads enabled but don't run
Expect in multiple threads just yet.
So much code has changed, there are bound to be bugs in dark corners.
Please let me know of such cases. The best response will come by
supplying a simple test case that can be added to Expect's test suite.
In places where the behavior of Expect was not precisely documented,
full advantage was taken to do something different :-)
Several esoteric bugs were fixed.
Although Expect itself uses Henry Spencer's new regexp engine,
Expect's C library still uses his original regexp engine.
No testing has been done of the poll and non-event subsystems. (These
are used on systems which don't support select on ptys or ttys. Some
minor work needs to be done on them (because the event subsystem was
rewritten) which I'll probably do only if anyone requests it.
Many deprecated features (deprecated for many years!) have been
removed. All such features were deprecated prior to Exploring Expect
so if that's how you learned Expect, you have nothing to worry about.
For example, Expect's getpid command predates Tcl's pid command and
it's been deprecated for, oh.... 6 years - wow! Other deprecated features
include:
expect -timestamp (flag only; behavior itself was removed years ago)
expect -iwrite (flag only; behavior occurs all the time)
expect_version (use "exp_version" command)
expect_library (use "exp_library" global variable)
interact -eof (use "eof" keyword)
interact -timeout (use "timeout" keyword)
interact -timestamp (use "clock" command)
getpid (use "pid" command)
system stty (use "stty" command)
With this release, the following are deprecated:
timestamp (use "clock" command)
debugger (use a different one; there are very nice replacements
around. Fortunately the Expect debugger is not something anyone
is wiring into their scripts, so for now, consider it on the
endangered species list. Anyone still want this debugger?)
From now on, the most current snapshots of Expect will be found in the
Scriptics CVS repository. Not all snapshots are official releases.
For more, see the ChangeLog file in the expect distribution.