1Only the most recent version will have detailed changes described. 2Some fixes are followed by the version in which the problem first appeared. 3 45.0 5--- 6If you have not yet read all changes since 4.0 stable 1, please do now. 7 (read the CHANGES file directly, or type "/changes 5.0" in tf.) 8If you have custom code to do any of the following in older versions, 9 you'll probably want to get rid of it or redesign it, since it is now 10 superceded by standard features: key bindings; text redraw (after world 11 switch, or resuming from sh or suspend); scrollback; status line 12 customizations; ... 13 145.0 beta 8 (2007-01-14) 15---------- 16Added %max_hook to prevent infinite hook loops. 17Added gethostname(). 18Added missing documentation for new "E" and "W" attributes. (50b7) 19Added "inline" flag to decode_attr(). 20Added -a<attr> and -p options to /prompt. 21Output of "/load testcolor.tf" now includes labels with r,g,b values. 22May create a debugging log if tf crashes. 23When invoked as a login shell, suspend is ignored, instead of hanging parent 24 (workaround for sshd, which does not correctly set TSTP signal handler). 25Fixed: after a resize with visual=off, the screen was not redrawn. (50b7) 26Fixed: after a resize with visual=off, an immediate backspace or other input 27 deletion would crash tf: "Internal error: output.c, line 2501". (50b7) 28Fixed: server display attributes could be lost if they had wrapped from a 29 previous line and were followed by more attributes. 30Fixed: /filter changed the idea of the virtual bottom line, so a subsequent 31 /unfilter redrew from the new incorrect bottom, and a subsequent 32 /filter used the new incorrect bottom as a starting point for applying 33 a new filter (resulting in a spurious "no lines match criteria" if the 34 only matching lines are between the correct and incorrect bottoms). 35Fixed potential crashes in calling functions with invalid arguments: 36 strrep(), status_fields(). 37Fixed: on servers with terminated (GOAHEAD or EOR) prompts, tf could lose 38 the first part of a server line in the rare condition of tf sending a 39 line between receiving the first and second parts of the server line. 40Fixed: non-time decimal values greater than 60 were sometimes formatted as 41 time values. (50b7) 42Fixed fatal bug in moresize() on a world that has never been /connect'ed. 43Fixed infinite loop when replace() is called with empty first argument. 44Fixed: with visual=off, /dokey flush (^[j) did not clear the more prompt. 45Fixed: /recordline ignored -a option if -p was not also given. 46Fixed fatal bug on some systems in /listsockets when there are connectionless 47 sockets open. 48Fixed: various bad things could happen if a trigger attempted to apply a 49 partial hilite to a line longer than 32767 characters. 50Fixed bugs on 64-bit platforms: /fg -c (Debian bug #327448), some variable 51 assignments 52Fixed: some cases of hostname resolution failure could cause a crash 53More robust TELNET protocol handling reduces problems on noncompliant servers: 54 Ignores option subnegotiation if option has not been agreed on. 55 If IAC SB (0xff 0xfa) is received before any other telnet command, the 56 server is treated as a non-telnet server. 57Upgraded configure.in to autoconf 2.59 (should affect developers only) 58 59 605.0 beta 7 (2005-04-17) 61---------- 62Colors: 63 Added 16-color names: "gray", "brightred"..."brightwhite". 64 Added 256-color names: "rgb000"..."rgb555" and "gray0"..."gray23". 65 Added predefined codes for xterm 256-color extension. 66 Functions decode_ansi() and encode_ansi() work with xterm 256-color 67 extension codes. 68 Added "/feature 256colors". 69 Added "/load testcolor.tf" to test color functionality and appearance. 70Added "E" and "W" attributes, with corresponding defintions in %error_attr 71 and %warning_attr. 72Added encode_ansi() to generate a string with attribute control codes. 73Added test() for backward compatiblity with version 4.0. 74Added strcmpattr(), like strcmp() but also compares display attributes. 75In commands that match macros (/list, /purge, /save), a color attribute will 76 match only the same color attribute, not just any color attribute. 77/list, /listvar, /listworlds, and /listsockets can sort their results. 78Added -n option to /listsockets to print host and port in numeric form. 79%Pn, %L, and %R subs are now case sensitive, to reduce collisions with regular 80 variables. 81/prompt preserves embedded display attributes in its argument. 82CONNECT hook includes SSL cipher name. 83Added -f (foreground) and -b (background) options to /world; documented -x 84 (SSL) option. 85Uses system's copy of libpcre if possible. 86Redefinition of macros or keybindings does not invoke the REDEF hook if the 87 new and old defintions are identical (so file reloading is less noisy). 88 If you used to gag REDEF to reduce noise, you may want to ungag it now 89 that it is less noisy and more informative. 90Status bar changes: 91 Status bar can be multiple rows, determined by %status_height. 92 /status_{add,edit,rm} commands take an -r option to specify which row. 93 Added status_fields(<row>) to get fields of <row>. 94 Added /status_defaults to restore default status bar fields; use of 95 %status_field_defaults is deprecated. 96 Added "/status_save <name>" and "/status_restore <name>" to save and 97 restore a named set of status fields. 98 The variable width field may be right-justified by giving it width "-0". 99 Fixed: /status_edit did not work on a variable-width field. 100 Fixed: "/status_add -x name:width:attr" failed to detect existing field 101 with name if its width or attr were different. 102 Fixed: status_attr_{int,var}_* variables sometimes had no effect. (50b5) 103 Fixed: any attempt to set %status_pad in .tfrc failed if %visual had not 104 yet been explicitly set (also, in a RESIZE hook caused by a terminal 105 resize while in /suspend or /sh, but that's much less common). (50a13) 106Other screen display changes: 107 Changing %wrappunct immediately rewraps everything on screen. 108 Eliminated extra screen redraw when the terminal is resized. 109 Fixed: under some conditions, rewrapping screen could cause entire 110 scrollback buffer to be redrawn, instead of just a screenful. (If 111 %more was on, this acted like a jump to the beginning of the buffer.) 112 Fixed: did not send new terminal size to server after resizing the terminal 113 in nonvisual mode. 114 Workaround for a window resize bug in Konsole. 115Keyboard changes: 116 Workaround for incomplete linux console terminfo entry which was preventing 117 %keypad from working. 118 Added friendlier message for using undefined named keys. 119 Improved documentation for numeric keypad, including instructions for 120 using it with some specific terminal emulators. (See "/help keypad".) 121 Added missing names for numeric keypad keys: key_nkpTab key_nkpEnt 122 key_nkp* key_nkp+ key_nkp, key_nkp- key_nkp. key_nkp/ key_nkp= 123 Added default keybindings for shift-tab, sun function keys, and 124 vt220 function keys F13 - F20. 125 Fixed incorrect keybindings for bottom two rows of numeric keypad in some 126 environments. 127Installation changes: 128 ./configure now honors options --exec-prefix, --bindir, --datadir, 129 --program-prefix, --program-suffix, and --program-transform-name. 130 ./configure --enable-version does not automatically --enable-symlink. 131 Installation directory for tf-lib now defaults to PREFIX/share instead of 132 PREFIX/lib (configurable with --datadir). 133 Fixed ./configure --enable-mailcheck=DIR. 134ftime() now returns an empty string instead of an incorrect string if the time 135 is out of range (in addition to printing an error message). 136Time period values of 60s or larger are printed in h:mm[:ss.u] format. This 137 applies to %alert_time, %maildelay, %prompt_wait, %ptime, idle(), sidle(), 138 and values derived from them (but not time() and mktime(), which are 139 absolute time values). 140The CONFAIL and CONNETFAIL hooks did not previously behave as documented. The 141 CONNETFAIL hook has been removed; the new ICONFAIL hook is called for a 142 connection failure if there are more possible addresses to try, and the 143 CONFAIL hook is called for a connection failure on the last address. (If 144 you had worked around the buggy behavior by duplicating CONFAIL and 145 CONNETFAIL hooks, you will probably want to go back to using the CONFAIL 146 hook only.) 147Improved error checking for /repeat arguments. 148Fixed inappropriate expansion of command lines (outside of macros) starting 149 with /let, /set, /setenv, /test, /result, /return. 150Fixed spurious error for "/break" without arguments at end of macro body. 151Fixed: a macro with no other statements outside of an "/if (expr)" statement 152 was incorrectly treated as an error, causing any macro that called it 153 to abort. 154Fixed: "/set var " (with trailing space) was setting var to blank instead 155 of printing its value. 156/listworlds and /listsockets ignore trailing space. 157Fixed: /runtime incorrectly evaluated its return value. 158Fixed: new -= operator added instead of subtracted. 159Fixed crash if left side of new += -= *= /= operators was not assignable. 160Fixed crash in strip_attr(). (50b5) 161Fixed crash in /list -P. 162Fixed class of crashes involving certain generated empty strings in macros: 163 - attribute strings in echo(), substitute(), and decode_attr() 164 - macro names 165 - expression operands 166 - etc. 167Fixed bug in binding local address on some systems. 168Will not crash if a bug in tf or library code supplies an invalid string in 169 an error message. 170Strengthened check for TERMCAP corruption by broken *csh. 171Fixed moresize() and morepaused() with virtscreen=off (undocumented). 172 1735.0 beta 6 (2004-08-04) 174---------- 175Fixed: lines with "A" attribute were not ignored as they should have been by 176 activity_status.tf and world-q.tf. (50b5) 177Fixed crashes and other problems caused by prompts in expnonvis mode. (50b5) 178Fixed crash on SSL error. (50b5) 179Fixed spurious error message when an SSL server closes its connection. 180 1815.0 beta 5 (2004-07-26) 182---------- 183Added an experimental side-scrolling variant of non-visual mode; see 184 "/help expnonvis". 185/quit prompts for confirmation only if there are sockets with unseen text. 186savehist.tf (undocumented) preserves attributes when saving and loading 187 histories. 188Added %secho to echo lines sent to server. 189Added %{k,m,q,s}echo_attr to set attributes for {k,m,q,s}echo. 190Attributes in %{k,m,q,s}prefix are echoed by {k,m,q,s}echo. 191Added encode_attr(). 192Added -p and -a<attrs> options to /recordline. 193Added "A" (noactivity) attribute - lines with this attribute will not cause 194 an ACTIVITY hook or an activity counter on the status bar. 195Added "L" (nolog) attribute. 196Removed "d" (dim) and "f" (flash) attributes. 197Added new arithmetic assignment operators: += -= *= /= 198The invalid macro body substitution "% " is left alone instead of being 199 replaced with " ", for backwards compatibility. 200Attributes generated by the status line system override any attributes 201 originally present in the text being printed in a status field. 202If a /retry connection attempt (other than the first) succeeds, the socket is 203 not automatically foregrounded. 204Spaces in TFPATH and TFMAILPATH may be escaped with backslash. 205Eliminated %auto_fg, which didn't work in 5.0 anyway. 206Mecho prints hook and trigger arguments. 207Supports MCCPv1 in addition to v2. 208cputime() returns -1 if not supported by system. 209Fixed rounding error in times reported by /runtime. 210Fixed visual=off display (redraw and "More" paging). 211Fixed: when the connection to a background socket with no activity was lost, 212 the socket's virtual window was closed, losing the disconnect message. 213Fixed: under certain conditions, a /connect in a DISCONNECT hook would 214 fail with "socket to <world> already exists". 215Fixed: /quote -decho lost attributes. 216Fixed: /dokey recall{b,f,beg,end} and search{b,f} did not honor %kbnum. 217Fixed: when logging with wraplog=on, blank lines were not logged. 218Fixed initial setting of %interactive and %visual. (50b4) 219Fixed initialization of %status_attr from environment. 220Fixed bug in handling more than 8192 bytes sent by server with MCCP enabled. 221Fixed: when server disabled MCCP, tf discarded pending text. 222Fixed a timing bug that may have caused many seemingly unrelated problems, 223 including processes not running on time, status bar not updating, and 224 keyboard or background worlds being ignored. (50a13) 225Fixed handling of case where server sends ANSI display code followed by 226 backspace (not known to ever happen in practice, but fixed nontheless). 227Fixed: in some cases, if TF already had a prompt from the server, it would 228 ignore a new prompt from the server. 229Improved some error messages. 230Improved detection of SSL libraries and handling of incomplete SSL setup. 231Detects when csh or tcsh has corrupted the TERMCAP environment variable. 232 2335.0 beta 4 (2004-02-17) 234---------- 235Added /key_{shift,ctrl,meta}_{F1..F12} (for recent xterms). 236All command options that require numeric arguments (including getopts() "#" 237 options) can take a numeric expression as an argument. (Actually added 238 in 50a13, documented now.) 239/set, /setenv, and /let are reserved words (may not be redefined). 240Added %interactive. 241/quit prompts "Really quit?" if interactive. "/quit -y" forces quit. 242Improved generated macro code. 243Redraw (^L) recovers from garbled scroll region. 244Workaround for yet another kind of bad getaddrinfo() implementation. 245Warns about "%;" after "/if (...)", "/while (...)", or "/else". 246Fixed crash in handling of invalid "@{...}" inline attribute specifications. 247Fixed possible crash on trying to connect to bad host address. 248Fixed: "/@name" was calling macro instead of builtin. (50b3) 249Fixed "/let" with no args. 250Fixed "{0}" in expressions. (5.0) 251Fixed crash when sending to closed connectionless socket. 252Fixed /replace to work on strings containing spaces (i.e., arguments 3..N, 253 not just 3). 254 2555.0 beta 3 (2003-12-22) 256---------- 257Draws dividing line between old text and new text when you bring a world 258 window to the foreground. Configurable with %textdiv and %textdiv_str. 259 Includes option to clear old text before drawing new text. 260 (Replaces separator.tf from 50a13). 261Once a screen is cleared, it stays clear: hiding and unhiding it does not 262 redraw the cleared lines. You must scroll back to redraw them. 263"ESC w" switches to next active world (i.e. world-q.tf is loaded by default). 264activity_status.tf just replaces "@active" with "activity" field, it does not 265 redefine the entire status bar. activity_status2.tf moves and shrinks 266 other fields to make more room for the activity field. 267 Length of abbreviations can be limited by setting %status_abbr_max. 268Fixed handling of commands disabled by --disable-process or --disable-history. 269Increased default value of %max_trig. 270Decreased default value of %refreshtime. 271In recent versions of xterm, Meta-<NamedKey> acts like ESC <NamedKey>. 272Added /key_shift_{insert,delete,home,end,pgup,pgdn} (for recent xterms). 273Improved glob diagnostics. 274Improved/fixed handling of small terminals. 275moresize() returns number of lines scrolled. 276Fixed: bodyless triggers sometimes didn't apply attributes if borg=0. (40g3) 277Fixed: %max_trig could sometimes produce multiple warnings. 278Fixed L and R partial hilites on zero-width regexp matches. 279Some documentation improvements. 280 2815.0 beta 2 (2003-12-12) 282---------- 283Fixed: prompts were not displaying, and were making tf eat CPU time. (50b1) 284Increased default value of %max_instr. 285Fixed harmless configure error that appeared on some systems. 286 2875.0 beta 1 (2003-12-10) 288---------- 289Added documentation for PCRE regexp syntax under "/help pcre". 290New named key system separates character sequence generated by key from 291 the function performed by the key. To change the meaning of named keys, 292 you should now redefine the key_<name> macro instead of redefining the 293 binding for the key. See "/help keys". 294Up/down keys now default to moving up/down within a long line, unless cursor 295 is at the beginning/end of the line; then they do recallp/recallb. 296Worlds defined with "/addworld -e" echo back any text sent to them. 297 This is useful on normal sockets to see what you're sending, or on 298 connectionless sockets for testing triggers or other advanced uses. 299 Connectionless sockets no longer echo back by default. 300/at is defined by default, and can take a date in addition to time-of-day. 301If %defcompile is on, macros are compiled (and thus syntax-checked) when 302 defined, instead of when first run. 303Added %max_trig to prevent infinite trigger loops. 304Replaced %max_iter with %max_instr. 305/def gives error immediately if regexp is bad or -P value exceeds number of 306 subexpressions in regexp. 307Keyboard movement commands beep only when they produce no movement at all, 308 not when they just don't move as far as intended. 309/dc message appears in the world being disconnected as well as the fg window 310 (if they're different) 311Literal time values may include microseconds (e.g. 12:30:01.145) 312Added "how to sleep" example under "/help /repeat". 313Added %expand_tabs. 314Added decode_ansi(). 315Renamed BACKGROUND hook to BGTRIG (but old name still works). 316Added BGTEXT hook. 317Fixed activity_status.tf to update for lines generated by /echo -w. 318Fixed: ACTIVITY and PREACTIVITY hooks didn't run in the world in which the 319 activity occurred when caused by /echo -w. 320Fixed order of /dc message relative to text already queued on socket. 321Fixed: under certain conditions, a dead socket would not go away and could 322 not be foregrounded. 323Fixed handling of IPv6 server address on system with getaddrinfo() but no 324 IPv6 kernel support. 325Fixed bug in printing long IPv6 addresses (more than 27 characters). 326Fixed "Invalid value for ai_flags" error during /connect on some broken 327 systems (FreeBSD 4.2). 328Fixed spurious "Not connected" messages from certain library macros. 329Fixed: tabs were not expanded upon receipt from server, so lines with tabs 330 weren't matched by triggers (regexp or glob) that matched in 4.0. 331Fixed trailing ^@ on macro body when defined in loaded file with (incorrect) 332 trailing "%; \". 333Fixed fatal bug in /expr, /test, /result, /return with an empty argument that 334 was generated by expansion. (50a13) 335Fixed fatal bug in /ps when printing very large times. 336Fixed handling of bad options of the form "--x". 337Fixed compile error in output.c ("called object is not a function") when 338 configured to build without termcap. (50a3) 339Workaround for compilation error "krb5.h: No such file or directory" on some 340 systems (Red Hat and Yellow Dog Linux) that keep ssl in standard location 341 but depend on kerberos which isn't in a standard location. 342 3435.0 alpha 14 (2003-11-06) 344------------ 345/paste -h invokes send hooks; plain /paste does not. 346Fixed sometimes fatal bug in /def -P with multiple arguments. 347Fixed compile error for systems with getaddrinfo() but without AI_ADDRCONFIG. 348Fixed: executable was stripped even if configured with --enable-core. 349 3505.0 alpha 13 (2003-10-30) 351------------ 352If called from foreground, /connect foregrounds the new socket immediately, 353 before it is actually connected; if called from the background, it never 354 foregrounds the socket, even when the connection eventually succeeds. 355 New -f and -b options can change this behavior. 356If a hostname corresponds to multiple IP addresses, /connect tries them all 357 until it finds one that works. Each one that fails invokes a CONSUBFAIL 358 hook; if they all fail, the CONFAIL hook is invoked. 359Hook messages are now displayed _before_ executing any hooked macros. 360An alert related to a background world is cleared if that world is brought 361 to the foreground. 362If a status field is partially obscured by an alert, the visible part of 363 the field is still updated. 364In world-q.tf, worlds with scrolled-back text are counted as active. 365Added eval(). 366Renamed inline_attr() (50a10) to decode_attr(); added strip_attr(). 367Input completion does not print the list of possible matches until the 368 second time the completion key is pressed. 369/def -P can take multiple subexpression/attribute pairs, separated by ';'. 370/def -P recognizes L and R as subexpression identifiers. 371/load and /lcd ignore trailing spaces in argument. 372By default, up/down keys do recallb/recallf instead of cursor up/down. 373"@" is accepted in front of keywords (e.g. "/@if"). 374Made it illegal to use "/return" or "/result" generated by substitution (e.g. 375 "/let cmd=return%; /%cmd 1"). 376Added %mccp flag to disable MCCP. 377If TF crashes, it will dump a corefile only if configured with --enable-core. 378After you /dokey selfush (^[J), reach the end of the text, and attempt to 379 scroll forward one more time, the screen is redrawn unfiltered (this is 380 necessary to avoid a mixture of filtered and unfiltered lines on screen). 381During /limit, scrolling to any point, including the bottom, results in a 382 More prompt that shows the number of lines (possibly 0) below the status 383 line. In this state, /unlimit will leave the bottom visible line where it 384 is, and redraw the unlimited lines above it. But if you attempt to scroll 385 PAST the bottom during /limit, the More prompt changes to "LIMIT ON"; in 386 this state, /unlimit will redraw with the previously invisible last line 387 at the bottom of the screen. 388Added morepaused(). 389Added PREACTIVITY hook. 390Added activity_status.tf to display, on status line, number of lines in 391 active worlds. 392Added separator.tf to draw a dividing line between old and new text in 393 background worlds. 394Added status_width() to get width of a status field. 395Fixed redraw after SIGINT (^C) or SIGQUIT (^\). 396Fixed ordering of prompt processing relative to normal lines, including 397 prompt hooks and attributes embedded in prompts. (50a9) 398Fixed: an alert caused by an event in a background world caused the status 399 line to be incorrectly updated with information from that world. (50a12) 400Fixed /limit -a. 401Fixed line count during /dokey selflush (^[J). 402Fixed /dokey pause (^S). 403Fixed: /echo -p lost original attributes of argument 404Fixed possible crash after disconnecting from a world with a prompt. 405Fixed: when wrappunct applied, space was ignored. (50a12) 406Fixed bug in reverse scrolling after clear. (50a12) 407Fixed use of kbnum in ^[c ^[u ^[l (capitalize, upcase, downcase) keybindings 408Fixed: receipt of a character 251-254 was sometimes incorrectly interpreted 409 as a telnet option negotiation 410Fixed handling of /break in complex nesting situations. 411Fixed: float values (0.0 < abs(x) < 1.0) in /if and /while conditions were 412 interpreted as false instead of true. 413Fixed: assigning a variable to itself in an expression (foo:=foo) could 414 incorrectly set variable to 0. 415Fixed fatal error when "kbnum" is in environment and first keypress is a 416 digit. 417Fixed IPv6 support (using RFC 3493 API) (50a10). 418Fixed: speedwalk incorrectly matched lines containing only digits. 419- 4205.0 alpha 12 (2003-06-11; not released to public) 421------------ 422moresize() takes an optional world argument, and defaults to operating on 423 current world (instead of foreground world). 424Page Up and Page Down scroll a full screenful, not a half. 425Added ^] keybinding for /bg. 426Can wrap at punctuation other than space; %wrappunct controls it. 427Can reverse scroll until first line is at bottom of window (useful with 428 /limit and /unlimit). 429Documented new input completion keys. See /help complete. 430Added %TFLIBDIR/teraterm.keyboard.cnf. TeraTerm users should copy this to 431 their TeraTerm directory to fix the editor keypad (insert/delete/home/ 432 end/pgup/pgdn); this will help any application you use through TeraTerm, 433 not just TF. 434Documented textencode() and textdecode(). 435Added warning about some new keybindings the first time they're used (unless 436 warn_5keys=off). 437/relimit warns if there was no previous limit. 438/clock with no argument resets clock_format to %H:%M. 439Fixed: Gag was not correctly suppressing alert messages (e.g., 440 /def -ag -hactivity gag_activity). 441Fixed handling of invalid attribute specifications. 442Fixed: long alert wasn't cleared when shorter alert was printed on top of it. 443Fixed: /status_{rm,edit} could not find right-justified fields 444Fixed: /status_add -B put spacer on wrong side of new field 445Fixed: @world field in status bar sometimes displayed incorrect name during 446 a trigger or hook in a background world. 447Fixed screen corruption and lockup in /dokey selflush (ESC J). 448Fixed use of nameser.h when inet6 is enabled. 449Fixed compilation problem on some systems with HAVE_LIBZ and HAVE_GETPWNAM. 450Added --disable-ssl option to unix configure. 451Fixed "make clean" etc. 452Fixed garbage in "/help limit". 453Fixed several bugs in use of {var} (with curly brackets) in expression. (5.0) 454Optimized {var} expression values and %{var} macro substitutions. 455More informative debugging output. 456 4575.0 alpha 11 (2003-05-27) 458------------ 459If you have not yet read changes since 4.0 stable 1, please do now. 460Fixed fatal bug in /hook with no pattern. 461Fixed compilation problems on MacOS X. 462Fixed: More prompt area (8 dashes) sometimes scrolled into output window 463 when switching worlds. (50a10) 464Fixed missing "/help /limit". 465Disabled IPv6 support by default, since it is broken on some systems, and 466 there really aren't any servers that require it anyway. (To be fixed in 467 a future release). 468Installation process creates PREFIX/bin and PREFIX/lib if needed. 469 4705.0 alpha 10 (2003-05-26) - changes since 4.0 stable 1 471------------ 472New screen handling. See "/help windows". 473 Per-world virtual windows, including More prompt. 474 True scrollback: 475 Half page backward (PgUp, ^X[) or forward (PgDn, ^X]), 476 full page backward (^X{) or forward (^X}), 477 line backward (^[^P) or forward line (^[^N). 478 /dokey_flush means jump to end, showing last screenful 479 /dokey_selflush shows last screenful of lines with attrs 480 Redraw after /suspend, /sh, and changing window size, %visual, or %isize. 481 Doesn't automatically leave a dead socket if the text hadn't been seen. 482 WORLD hook is silent. 483 A disconnected socket does not disappear automatically after displaying its 484 buffered text. It will dissappear if you /dc it again, or /fg another. 485 /dokey redraw (^L) actually redraws screen. 486 Added /dokey clear (^[^L) to clear screen. 487 %shpause defaults to on. 488 Eliminated all "Resuming TinyFugue" messages and RESUME hook. 489 Default status_int_world prepends "!" if foreground socket is a zombie. 490 Changing a status_{int,var}_* will cause the status line to update. 491 Added /dokey pause (^S) 492 @more status field counts physical lines (not logical lines); it shows 493 both old lines and new lines; when a /limit is in effect, only limited 494 lines are counted. 495 moresize() takes flags to request only limited, only new, or only new 496 limited lines. 497 bg_output and /fg -q mean jump-to-end when foregrounding 498 Some messages (activity/background/mail hooks, /limit error) appear as 499 temporary "alerts" on the status bar. %alert_time controls duration of 500 alert. %alert_attr controls attrs of alert. echo() to the "a" stream, 501 or /echo -A, displays arbitrary text as alert. 502 status field attrs are modified by variable "status_attr_{int,var}_<name>". 503By default, wrapped lines are indented 4 spaces (%wrapspace=4). 504Changed default keybindings to be more consistent with those in emacs, bash, 505 and other gnu readline applications. The old bindings can be restored with 506 "/load kb-old.tf" (not recommended). See "/help keys". 507 The most important changed keys are: 508 Old New Meaning 509 left right ^B ^F left right move cursor back/fwd 510 ^B ^F ^[b ^[f move cursor one word back/fwd 511 ^[b ^[f ^[{ ^[} ^[left ^[right prev/next socket 512 ^L ^[L clear screen 513 (none) ^L redraw screen (with contents) 514added /status_add, /status_rm, /status_edit, /clock {on|off}, %clock_format, 515 %status_field_defaults. You should not set %status_fields directly. 516Variables used in status_fields do not need to exist. 517Various keys are bound to /dokey_pg{up,dn} which in turn calls 518 /dokey_hpage{back,}. To make keys move a whole screenful, user should 519 not rebind the keys, but redefine /dokey_pg{up,dn} to call 520 /dokey_page{back,}. 521Note: some emulators (NiftyTelnet, TeraTerm) incorrectly send ^[[3~ for 522 PgUp; the correct meaning of ^[[3~ is Delete (in vt220 emulation). 523 The PgUp key in these emulators will not work correctly in tf unless you 524 (preferred) fix your emulator, or (easier) "/bind ^[[3~ = /dokey_pgup" 525 (warning: may break your Delete key) 526Replaced Henry Spencer's regexp pacage with PCRE (Perl Comaptible Regular 527 Expressions). It is backwards compatible, with one exception: the 528 character '{' introduces a quantifier, so you must use '\{' to match a 529 literal '{'. Also, regexps containing no uppercase letters default to 530 caseless matching. All regexps (including static strings in macros and 531 expressions, and regexps stored in variables) are now stored internally 532 in compiled form, making them much faster. 533regmatch() returns any positive integer for success, not necessarily 1 534 (so you should write (regmatch(...)), not (regmatch(...) == 1) 535Time is measured and printed with microsecond resolution: 536 %prompt_sec and %prompt_usec replaced with %prompt_wait 537 /recall: h:m[:s[.f]] is interpeted as time-of-day, s.f as absolute time. 538 ftime(): "%@" includes microseconds; added "%.", "%s", "%F", "%T" formats. 539 /ps, time(), idle(), sidle() print or return values to the microsecond. 540 Time values for /repeat, /quote, /at, %ptime, %maildelay can be specified 541 to the microsecond. 542Display attributes in string values are preserved by just about every string 543 operation, including commands, variables, expression operators, functions, 544 regexp substitutions, $() command substitution, and status bar field 545 expressions. 546/limit [-a] [-v] [-m<style>] <pattern>: redraws window, showing only lines 547 that match <pattern> and/or have attributes (-a). With no args, returns 548 1 if limit is in effect, 0 if not. Screen-specific. Default @more 549 status counts only limited lines. 550/relimit repeats last limit 551^[L (meta-shift-l) toggles last limit off and on. 552Macros and expressions are stored internally in compiled form, making 553 them faster. 554Expression variables are stored internally as natural types instead of 555 strings for greater efficiency and to avoid loss of floating point 556 precision. 557Renamed log() to ln() to avoid confusion with /log. 558Non-ANSI C compilers are no longer supported. 559Lines beginning with '#' in /loaded files are comments (';' still works). 560Supports IPv6 (RFC 2553 and 2133). 561Supports Mud Client Compression Protocol (MCCP) v2. 562New /paste options: -x (execute); -n (no prefix); -q (quiet); -s (strip 563 trailing space); -e<end> -a<abort> (set end/abort cookies). 564/paste accepts "." to end. 565%meta_esc=on always converts a typed meta bit to ESC; %meta_esc=nonprint 566 converts only if character is not printable. The LNEXT key (^V) overrides 567 %meta_esc. 568Tabs are no longer confused by ANSI display codes from server. 569Added -P option to /quote and /repeat to run on prompts, like %lpquote. 570Prompted (-P or %lpquote) processes with a -w option are only run by prompts 571 from the specified world. 572Added /runtime. 573If an additive operation on integers would overflow, it is converted to real. 574TF will not terminate on SIGHUP if SIGHUP was ignored when TF was started. 575/ps lists processes in ascending order of pid. 576Added -A, -B, -C options to /recall to print lines of context around each 577 matching line. 578"/restrict file" disables /lcd. 579Added %keepalive to prevent network timeouts and detect dead connections. 580Added %keypad to control application keypad mode. 581getopts() options can take time arguments. 582Optional offset argument to strchr(), strstr(). 583Optional length argument to tolower(), toupper(). 584Simplified proxy customization (but an old proxy_command that worked in 4.0 585 will still work). 586Clock defaults to 24 hour format (see /help clock). 587Added %sigfigs. 588Improved telnet protocol handling, and detection of telnet vs. non-telnet 589 servers. Apparent telnet commands commands are not stripped from data 590 stream if server doesn't use telnet protocol. /localecho may be delayed. 591Added /purgealias to alias.tf. 592Added /randline to textutil.tf. 593Added is_connected(). 594bg_output is tested when socket is foregrounded (like /fg -q), instead of 595 when text is received. 596Arguments to ftime() are optional. 597ftime() supports %E and %O if system library does. 598Added mktime(). 599Added "i" argument to /repeat for infinite count. 600Optional <pid> argument to /ps. 601Improved workaround for solaris terminal driver bug that could disable 602 keyboard after typing LNEXT (^V), FLUSH (^O), STOP (^S), or START (^Q); 603 also, in the extremely unlikely case that it does happen, it can be fixed 604 with any signal (e.g., ^Z or ^C) without quitting tf. 605Fixed handling of bold-off display attribute code from server. 606An error within a tfrc file does not cause tf to try to load an alternate 607 file. 608When server requests window size (TELNET NAWS), tf sends %wrapsize instead of 609 the actual screen width. 610Fixed: "/addworld" with no args clears the name of the first defined world. 611Fixed: "/unset MAIL" crashed tf. 612Added "substr" matching type. 613Added %tfhost and "/addworld -s<srchost>" to define client address of 614 connections. 615TF closes all open sockets, pipes, and files before the 'Press any key' 616 prompt when dumping core, so servers and other processes don't have to wait 617 for the keypress. 618/trigger -n or -l lists matching macros without running them. 619world names may not contain space. 620"connectionless" (unconnected-but-open) world sockets (see /help connect). 621 Sending to connectionless socket echoes line (with \n) back. 622Added is_open([world]). 623new /listsocket flags: P=proxy, O=open-connectionless, C=connected, 624 X=connected-ssl 625/fg -cN: repeat count 626ESC and digits set %kbnum, which is used as a repeat count for many other 627 keybindings (/dokey {recall,search}{b,f}, recall{beg,end}, and macros 628 in kbfunc.tf; also, stack number for kbstack.tf). 629 Use ^G to abort kbnum. %max_kbnum sets upper limit on %kbnum (warning: 630 large kbnum may cause tf to exhaust all memory or do other bad things). 631Added winlines(). 632Disables tty STOP/START to avoid problems and make ^S/^Q available to tf. 633Synchronous processes can be interrupted. 634Fixed: if a loaded file did not end with newline, the last line was executed 635 twice. 636SSL: /addworld -x, addworld(..., "x"), /connect -x, /listsockets 637getopts() numeric args can be signed 638Added inline_attr() to interpret "@{attr}" display attribute codes in a 639 string. 640- 641added "/clock <format>" 642strrchr() has optional offset argument. 643added /features 644world_info([<world>,] "cipher") 645send() "h" flag and /send -h flag DO invoke send hooks. 646/edit does not renumber the macro being edited. 647more compact /ps format leaves more room for long commands. 648If a multiply operation on integers would overflow, it is converted to real. 649replace() is an internal function. 650/listsockets shows number of old and new lines on each socket (total, not 651 just limited). 652Fixed 'illegal macro name ""' in '/edit #<N>'. 653Fixed: glob comparison of end of string against pattern "*{..." could give 654 incorrect results. (35a16) 655- 656UNDOCUMENTED 657Fixed expansion of line pushed by kbpush (50a9). 658Prints overflow error when converting too-large real to integer or time. 659fake_recv(string, [world, [flags]]); fakes receiving a line from world. 660 flags="r" means raw (no implicit newline, before prompt processing) 661vercmp() (in stdlib.tf) 662/pfxgen and pfcmd() (in pcmd.tf) 663Changed how attributes combine: colors always override, not OR; inline x 664 causes replacing of line attrs. 665macro usage counts with /list -su. 666Network/host unreachable does not cause disconnect, only loss of sent text. 667%virtscreen (do not change while at a More prompt). 668Added textencode.tf. 669 6705.0 alpha 9 (2002-03-12; not released to public) 671----------- 672see above 673 6744.0 stable 1 (1999-03-06) 675------------ 676Workaround for solaris terminal driver bug that could disable keyboard after 677 typing LNEXT (^V) or FLUSH (^O). 678 6794.0 gamma 3 (1999-01-31) 680----------- 681The prefix for /paste can be a tf command. 682Recognizes '?' and '%' fields when copying MAILPATH to TFMAILPATH. 683Minimized performance impact of triggers when borg==off or defined with -c0. 684Fixed beginning cutoff of time range in /recall -g. (40b1) 685Fixed spurious warning for readable password when redefining a world. 686Fixed crash caused by beep on unsupported terminals. 687Fixed crash caused by closing unconnected socket with buffered output. 688Fixed problems related to failed nonblocking hostname resolution. 689Will not busy loop if tty closes without killing tf. 690Eliminiated warnings in /color_on. 691 6924.0 gamma 2 (1998-11-15) 693----------- 694Worlds without type or mfile now use corresponding field of "default" world. 695Improved prompt detection heuristics for typeless worlds. 696/addworld can reset fields other than host and port for "(unnamedN)" worlds. 697Clarified scope rules in "/help /for". 698Fixed fatal error when reconnecting in a DISCONNECT hook. (40g1) 699 7004.0 gamma 1 (1998-11-10) 701----------- 702Supports SOCKS5 in addition to SOCKS4. 703/edit can delete a macro's body. 704Improved prompt detection heuristics for typeless worlds. 705/relog (in relog.tf) preserves leading/trailing space, and is more efficient. 706Improved error messages for failed connection under SOCKS. 707Improved error messages for disconnected sockets on some systems. 708Avoids rounding error in displaying floating point numbers. 709Refuses telnet SUPPRESS-GO-AHEAD option. 710Fixed bug in using /connect in a world file; PROXY, CONNECT, or LOGIN hook; 711 or %status_int_world. 712Fixed fatal bug in redefining the "default" world. 713Fixed fatal bug in "/recall -t" when %time_format is unset. (40a9) 714Fixed: floating point exception caused crash on some systems. 715Fixed zombie processes left by failed nonblocking gethostbyname on unix. 716Fixed possible "Bad file number" and "crossed connections" when reconnecting 717 in a DISCONNECT hook. 718Fixed memory leak in expression stack overflow. 719 7204.0 beta 3 (1998-10-05) 721---------- 722Clarified documentation of function arguments (see "/help functions"). 723Restored old behavior of "/recall -t" when %time_format == "@". (40a9) 724Fixed: nactive() returned old value in %status_int_world, %status_int_active, 725 and WORLD hook. 726Fixed /revert in map.tf. 727Fixed error in using %Pn subs after matching a blank regexp. 728Fixed /nth to return an empty string when n <= 0. 729Fixed handling of blank world name in addworld(). 730Eliminated spurious message from /qmud. 731Workaround for nonblocking socket bugs in some operating systems (SunOS 5.x). 732Fixed handling of /set visual=on when visual mode isn't supported. 733Fixed /list'ing of macros with -p0. 734Fixed compile error involving localtime() in output.c on AIX. (40a11) 735 7364.0 beta 2 (1998-08-06) 737------------ 738Documented new "telnet" login handling. See /help addworld. 739Fixed tfclose() of tfin/tfout; closing tfout prevents output in a macro body. 740Fixed compilation on systems (SunOS 4.1.4) without a putchar function. (40b1) 741Fixed compile error in expand.c under non-ansi compilers. (40a5) 742Fixed build problem in some versions of make. (40a11) 743 7444.0 beta 1 (1998-07-27) 745------------ 746"telnet" worlds require "login:" and "password:" prompts. See /help addworld. 747Optional arguments for kbwordleft(), kbwordright(), kbmatch(). 748Optimized /recall by time on large world, local, or input history. 749Improved login handling on "telnet" worlds. 750Disabled useless and often confusing dsusp key (^Y). 751Fixed: "/recall <time>" ignored <time>. (40a9) 752Fixed /replace. (40a11) 753 7544.0 alpha 11 (1998-07-22) 755------------ 756Added "%@" conversion to and removed length restriction from ftime(). 757Added -i option to /fgrep and /egrep. 758Improved precision of process timing. 759/def -E interprets enumerated special variables as integers, not strings. 760Skips signal handling confirmation prompts when input is not a terminal. 761Disabled OS/2 hostname resolution error messages, which apparently do not 762 work on all versions of OS/2. (40a9) 763Added codes for named keys when using HARDCODE terminal codes. 764Numeric keypad keys now generate unique character sequences on more terminals 765 (this may break some existing keypad usage). 766Repeated errors in mail files do not repeat error messages. 767Fixed codes for named arrow keys on some terminals (vt100 in particular). 768Fixed "color bleeding", where mid-line server attributes were sometimes 769 applied to the beginning of a line if lp=on. 770Fixed handling of interrupted server attribute code with lp=on. 771Fixed bugs involving unset {k,m,q}prefix. 772Fixed autologin and localecho problems on some telnet worlds. 773Fixed overflow in floating point significant figures. 774Fixed potentially fatal error in failed nonblocking hostname resolution. 775Fixed /tee in textutil.tf. 776 7774.0 alpha 10 (1998-06-29) 778------------ 779world_info() arguments are optional. 780Fixed: unevaluated /if clobbered return value ("/return val%; /if..."). (40a9) 781Fixed options for some compilers (like SunOS 4.1). (40a9) 782 7834.0 alpha 9 (1998-06-24) 784----------- 785Added %TFMAILPATH, to check multiple mail files. 786/recall -t<format> does not insert brackets. 787Enabled floating point features and improved hostname resolution error 788 messages in OS/2 version. 789Reduced spurious style warnings during /load. (40a7) 790Invalid or "-?" command option produces an option summary. 791/at interprets current time as that time tomorrow, not today. 792Fixed reversed meanings of sidle(world) and idle(world). (40a8) 793Fixed: -P trigger destroyed -ag attribute set by an earlier trigger. (40a5?) 794Fixed listing of partial hilites with /listhilite, /listpartial, /savepartial. 795Fix for unix systems without waitpid(). (40a8) 796Fix for systems without standard case conversion. (35a) 797Fixed return value of invalid /recall and /def. 798Fixed memory leaks. 799 8004.0 alpha 8 (1998-06-18) 801----------- 802Added textutil.tf library, containing /fgrep, /grep, /egrep, /copyio, 803 /readfile, /writefile, /head, /wc, /tee, /fmt, and /uniq. 804Added /def -E<expression> for conditional trigger/hook matching. 805Added substitute(), and -a -p options to /substitute. 806Added %TFPATH. 807Added /listvar -v to list values only. 808Added /paste -p (paragraph mode). 809Added sidle() to return time since last send on a socket. 810Added /color_on and /color_off. 811Added /_echo. 812Added standard /loaded, so any file can be made to work with /require. 813Added -q (quiet) option and -t<format> argument to /recall. 814Added /replace to standard library. 815/recall can be interrupted (^C). 816Restored pre-40a5 meaning of /list -an; now, the "x" pseudo-attribute turns 817 off pre-existing attributes (see: /help attributes). 818%TZ and locale variables are automatically exported, so they work as expected 819 even when not explicitly exported. 820Fixed unreadable handles created by tfopen() with mode "p". 821Fixed update of status field when there is no variable width field. 822Fixed /echo -w (with no world name). If you used the replacement /echo 823 posted on the mailing list, you should get rid of it now. (40a5) 824Fixed zombie processes left by /dc during nonblocking gethostbyname on unix. 825Fixed loss of trailing spaces in escape(). 826 8274.0 alpha 7 (1998-04-14) 828----------- 829/listworlds displays in table format by default. 830Many error and warning hook messages now include filename and line number. 831Fixed bugs in calling addworld() with fewer than 6 arguments. (40a5) 832Fixed /echo -w<name>. (40a5) 833Fixed word concatenation bug in /unique (lisp.tf) and command line completion 834 (complete.tf). (40a5) 835Fixed: on some systems (linux), changing %TZ did not affect the time zone. 836Fixed counting of comments in error message line numbers. (40a5) 837 8384.0 alpha 6 (1998-04-09) 839----------- 840Fixed fatal error for triggers and hooks in worlds without a type. (40a5) 841Fixed value of idle() before first keypress. 842 8434.0 alpha 5 (1998-04-09) 844----------- 845Added /result, which behaves like /return or /echo depending on context. 846Added -c"command" startup option. See /help tf. 847The "n" attribute turns off pre-existing attributes. See: /help attributes. 848Added addworld() function (which can accept arguments containing spaces). 849Replaced builtin /echo with echo(). 850Tiny* LOGIN hooks put quotes around a character or password containing spaces. 851Added %binary_eol to determine end of line marker in TELNET BINARY mode. 852Added "proxy" and "login" world fields (for use as world_info(<field>) or 853 $world_<field>). 854Added tfflush(); tfwrite() flushes automatically by default. 855Added morescroll(). 856Command line option -n is overridden by <world> or <host> <port>. 857Added -s option to /quote ` to control the substitution level. 858Added -rqw options to /ps. 859Duplicate input lines are not suppressed by /log -i. 860Filename completion (complete.tf) handles names starting with "~/". 861The names of bodyless triggers are mecho'd. 862Error messages during /load report the range of line numbers, not just the 863 misleading last line number, of the multiline command containing the error. 864Workaround for broken compilers that failed initialization at variable.c:86. 865Fixed evaluation of command in /qtf (in quoter.tf). 866Fixed /restrict security hole in tfopen(). (40a1) 867Fixed loss of -q flag with /edit. 868Fixed return value of /eval (and /not). (40a1) 869Fixed bug in parsing a comma after a non-color in attribute lists. 870Fixed bug in strlen(substr()). 871Fixed tfopen() with 0 arguments. 872Fixed ambiguous error message for nonblocking connect on some systems (linux). 873Fixed standard /proxy_command to honor /connect -l. 874Fixed: on some systems, 8-bit characters were not accepted as input even 875 when the locale settings were correct. 876Fixed spurious %pedantic warning in /elseif. (40a3) 877Fixed spurious %pedantic warning in /wrap [on|off]. 878Fixed: executed code after /return, /while, /done inside /if or /while. (40a1) 879Fixed evaluation of variables used as function parameters. (40a1) 880Fixed /session in tintin.tf. 881Fixed incorrect "more" count after /fg -q. (35a20) 882 8834.0 alpha 4 (1997-12-28) 884----------- 885Added /exit to abort a /load. 886Added %auto_fg, so automatic foreground after disconnect is optional. 887Function forms of tr(), replace(), and grab() preserve spaces in arguments. 888read() is obsolete. Use tfread() instead. 889Reconnecting to a world with a "dead" Socket will re-use that Socket. 890Variables used in %status_fields can not be unset. 891ESC-w in world-q.tf does something useful after disconnect and /bg. 892Restored old undocumented behavior of | and & returning value of last operand. 893Eliminated spurious pedantic warning for string in integer context, for 894 special variables with value 0. (40a3) 895Workaround for limitation in some versions (HP-UX) of "make". 896Fixed "restrict" error under new gcc due to conflict with "C9X" draft. 897Fixed handling of mod() by zero. 898Fixed redraw bug for changing isize while visual=off (e.g., in .tfrc). 899Fixed use of %? after error in /return or /test. 900Fixed "/return variable" and "/test variable" returning an empty value. 901Fixed %status_fields: right justification, strings containing ":". (40a3) 902Fixed: interrupt during a tfread() from the keyboard disconnected sockets. 903Fixed handling of world_info() with illegal field name. (40a1) 904Fixed /list for macros with -Fp0. 905 9064.0 alpha 3 (1997-11-20) 907----------- 908Blank space is not inserted automatically between fields of %status_fields. 909%status_fields may contain string literals. 910Added %pedantic to generate warnings about some potential problems in macros. 911Attribute lists can now contain multiple colors, using a comma separator. 912Eliminated misleading warning for "/more on". (40a2) 913Fixed use of %0 in trigger, hook, or keybinding. (40a1) 914Fixed bug in regexp triggers causing segfault at macro.c:1249, problems 915 with /dokey selfush (^[J), et al. 916Fixed /unset status_fields. (40a1) 917Fixed setting of executable name in unix/tfconfig. (40a1) 918 9194.0 alpha 2 (1997-11-06) 920----------- 921Fixed parameter subs for macro-as-command called by macro-as-function 922 (including ismacro() and /more). (40a1) 923Fixed use of color in %status_fields. (40a1) 924Eliminated unneeded 1s updates of visual more status. (40a1) 925Added warnings for new 4.0 semantics of old code. 926 9274.0 alpha 1 (1997-11-05) 928----------- 929Ported to Win32 (requires Cygwin Development Kit). 930%clock is no longer used. See "/help %clock". 931%0 is the name of the executing macro. This will break all existing code 932 that uses %0 like %*. 933Macros called as functions map function arguments to positional parameters. 934 This will break existing code that expects a single function argument 935 to be split into parameters by words. 936Added /return (the old /return in map.tf is now called /revert). 937Added the ability to format the visual status line ("/help %status_fields"). 938Added %| pipes ("/help evaluation"). 939Added floating point arithmetic. 940Added sin(), cos(), tan(), asin(), acos(), atan(). 941Added abs(), exp(), log(), log10(), pow(), sqrt(), trunc(). 942Added tfopen(), tfclose(), tfread(), tfwrite() ("/help tfio"). 943Added inread(), nactive(), nlog(), nmail(), world_info(), fg_world(). 944Added /listvar. 945Added %meta_esc. 946Added /echo -p. 947/listsockets -T<type> <name>. 948/listworlds -u -m<style> -T<type>. 949/purgeworld -T<type>. 950/send -T<type>. 951/load -q. 952/unworld and /undef take multiple <name> arguments. 953Added /edmac, /edvar, and /edworld in tools.tf. 954Added NOMACRO hook. 955getopts() supports numeric option arguments. 956Improved mecho detail. 957Macros can be called by number with "/#" syntax ("/help evaluation"). 958Counter in visual More prompt is better updated. 959Partial attributes are always preserved by /recall. 960Clearing input buffer resets index for /dokey SEARCH[BF] functions. 961Optimized macro processing. 962Improved interactive response when sockets are very active. 963/list -s option may be mixed with other options. 964Fixed /substitute within /trigger. 965Fixed support for 8-bit locales, including support for LC_CTYPE, LC_TIME, 966 and LC_ALL variables. See "/help locale". 967Fixed "tcsetattr: Bad file number" and disabled keyboard. (35b4) 968Fixed rare sometimes fatal bug in handling server attributes with lp=on 969 and a slow connection. 970Fixed duplicate command when /speedwalk and /mark (map.tf) are used together. 971Fixed compilation error involving conditional and hstrerror under some 972 lame compilers (socket.c:788). 973Fixed output misdirection during a read() inside a command sub. 974Fixed rare bug causing command line to execute in wrong world when a 975 simultaneous background trigger occurred. 976Fixed /world with no arguments. 977Fixed fatal input bug after /histsize -i. (35a21) 978Fixed bug which disabled history recording after /recall on an empty history. 979Fixed memory leaks in synchronous processes, etc. 980Fixed "/lp off" while at a prompt. 981Fixed opening of new descriptors after standard input redirection. 982Fixed bug in handling trailing '-' in a glob [] character class. 983 9843.5 beta 4 (1997-04-04) 985---------- 986Fixed keyboard lockup or "Bad file number" during fast input. (35b3) 987Added ./.tfrc and ./tfrc to the list of files searched for at startup. 988 9893.5 beta 3 (1997-03-24) 990---------- 991Can run without a terminal (e.g., with input redirected from a file). 992Fixed /paste. (35b2) 993Fixed sometimes fatal bug in hiliting server text. (35b2) 994Fixed "handle_keyboard_input: read: Bad file number" during fast input. (35b2) 995 9963.5 beta 2 (1997-03-21) 997---------- 998The LOGIN hook no longer has <character> and <password> arguments; use 999 ${world_character} and ${world_password} instead of %2 and %3. 1000Added /trigger -h, to call hooks. 1001Added /addworld -p, to make local connections ignore %proxy_host. 1002Added %connect. Try "/set connect=blocking" if you have new problems when 1003 trying to connect. 1004Added ++ and -- prefix operators. 1005Fixed possible corruption when redefining world with "/addworld -Ttype name". 1006Output generated before a synchronous process starts is displayed before the 1007 process starts. 1008/dokey SELFLUSH (^[J) does not consider lines with only -aG "interesting". 1009/dokey SEARCHB and SEARCHF (^[p and ^[n) match only proper prefixes, not 1010 an exact match. 1011Improved screen appearance after resizing window, changing %isize, or 1012 receiving SIGINT or SIGQUIT. 1013Fixed "/edit -an" and "/edit -P<n>n". 1014Fixed %hilite. 1015Fixed connect loop under SOCKS, possibly others. 1016Fixed bug in handling illegal combination of /def -P and -h. 1017Improved error messages for syntax errors. 1018Minor portability improvements for other operating systems. 1019 10203.5 beta 1 (1996-12-08) 1021---------- 1022Added fwrite() function to write text to a file. 1023Added pad() function for string formatting. 1024Fixed handling of quickly received keybindings. (35a21) 1025Fixed compiling errors under HP-UX ANSI compiler. 1026Fixed /list'ing of macros with names beginning with "-". 1027 10283.5 alpha 21 (1996-10-12) 1029------------ 1030Added /def -B to bind symbolic key names. (Note: TERM=vt100 should not 1031 be used on xterms). 1032Added keycode(), lines(), columns(), and send() functions. 1033Added "init" argument to getopts(). 1034Added "-s" option to /listworlds. 1035Added /fgrep, /grep, and /egrep. 1036Repeated lines are not saved in input history. 1037Documented /finger, mapping, /psh, /spell_line, /tick, /tr. 1038/finger and /rwho do not interfere with world-q.tf or other WORLD hooks. 1039Changed default value of %end_color (see /help color). 1040Improved error checking of /def, /quote, /recall. 1041Improved handling of return value of failed /sh. 1042Fixed bug in error checking /def name. (35a20) 1043Fixed multiple beeps when one beep was combined with multiple attributes. 1044Fixed bug in calling /localecho while not connected. 1045Fixed nonblocking connect on AIX. 1046Fixed fatal bug occurring when !visual & refreshtime >= 1000000. 1047Fixed fatal bug in visual mode with a terminal width between 56 and 58. (35a17) 1048Fixed rare fatal bug occurring after deleting keybindings. 1049Fixed '\0' being sent as '\0200'. 1050Fixed flow control and spurious "SQ" on some slow terminals. 1051Fixed blocking during /quote ! with a delayed process. (35a18) 1052Fixed /edit options -t, -h, -T. 1053Fixed bug in glob matching under nonstandard compilers. (35a17) 1054Fixed possible busy wait. 1055Workaround for bug in BSD/386 make. 1056 10573.5 alpha 20 (1996-06-16) 1058------------ 1059Added -w and -g options to /trigger. 1060Added -q option to /fg to ignore queued text. 1061/push, /pop, /enqueue, /dequeue (in stack-q.tf) can work on local variables. 1062Improved error checking of /def arguments. 1063%redef defaults to "on". 1064REDEF hook comes after, not before, keybinding redefinition. 1065Fixed /ps -s displaying dead processes. (35a19) 1066Fixed /qdef in quoter.tf. 1067Fixed compile problem in port.h under nonstandard compilers. (35a19) 1068Fixed fatal bug in /recordline -i at multiple of histsize. 1069Fixed /beep argument bug. 1070Fixed deferring of "/dokey newline" in a macro. (35a17) 1071Eliminated obsolete arguments to /def -1. 1072 10733.5 alpha 19 (1996-05-27) 1074------------ 1075/echo -e writes text to tferr. 1076Hook messages are written to tferr. 1077Improved example under "/help def". 1078Added -s option to /eval to control the substitution level. 1079/xtitle works even behind a more prompt. 1080Added -s "short form" option to /listsockets and /ps. 1081Added moresize() to get number of lines queued at more prompt. 1082Fixed bugs in /cat: error message, and extra evaluation. 1083Fixed bug in getopts() handling of options followed by no arguments. (35a11) 1084Fixed bug in executing other macros during read() (and /paste). 1085Fixed bug in handling TELNET protocol combined with 8-bit character sets. 1086Fixed documentation of DISCONNECT hook. 1087 10883.5 alpha 18 (1996-04-19) 1089------------ 1090Fixed (sometimes fatal) bug trying to send text in unconnected mode. (35a17) 1091Fixed bug in getting telnet options from wrong connection. (35a17) 1092Fixed telnet NAWS sending only to current connection. (35a10) 1093Fixed telnet NAWS not working at initial connect. (35a17) 1094Workaround for NextStep namespace violation. (35a17) 1095 10963.5 alpha 17 (1996-04-13) 1097------------ 1098Added read() function to read lines of keyboard input. 1099Added echo() function. 1100substr() arguments can count from end of string; right() is obsolete. 1101Added %PL and %PR subs to get left and right ends of regexp match. 1102Expression and command subs ($[] and $()) work in variable sub defaults. 1103/paste handles lines beginning with '/', and does not record input history. 1104Visual mode defaults to "on" unless explicitly set "off" in .tfrc. 1105Warns when memory is low. 1106RFC 854/1123 compliance: transmits CR NL at end of line in NVT mode; escapes 1107 IAC; supports BINARY and WILL SGA requests. 1108Redefining worlds that are in use is allowed. 1109Drastically increased speed of pipes ("/quote !"). 1110Fixed toupper() and tolower() handling of international characters? (35a16) 1111Fixed compiling problem in prototype under nonstandard compilers. (35a16) 1112Fixed fatal bug in accepting NUL character as input on some systems. (35a16) 1113Fixed rare bug in using /quote -S inside another /quote. 1114Fixed <sys/select.h> problem on some systems (BSD). (35a16) 1115Created tinyfugue mailing list (see "/help mailing list"). 1116 11173.5 alpha 16 (1996-03-10) 1118------------ 1119Honors LANG locale and supports international character sets. 1120Added right() function. 1121/localecho replaces %always_echo; improved echo handling on telnet servers. 1122Added -q option to /def to avoid "Trigger in world <name>" messages. 1123Hilites and gags of hooks are applied even if %{hook}=off. 1124Return and backspace keys works even if keybindings are undefined. 1125Changed default value of %wordpunct. 1126Improved format of automatically generated helpfile. 1127Fixed problem installing in paths containing "~" on some systems. (35a14) 1128Fixed %sub=on and %sub=full. (35a11) 1129Fixed /cat. (35a15) 1130Fixed -m option of gags defined by /watchname. 1131Fixed /help addworld and addtelnet. (35a15) 1132Fixed bug in using input recall immediately after /histsize -i. 1133 11343.5 alpha 15 (1996-02-11) 1135------------ 1136Fixed <sys/stat.h> compiling problem on some systems (FreeBSD, OS/2). (35a14) 1137Fixed subsection headers in automatically generated help file. (35a14) 1138Fixed input insert display on terminals with insert_char (eg, xterm). (35a14) 1139Fixed problem installing in paths containing "~" on some systems. (35a14) 1140Fixed fatal problem in displaying error messages during startup. 1141Fixed loss of %Pn variables in a trigger with a partial hilite. 1142Improved efficiency of triggers and other pattern matching. 1143 11443.5 alpha 14 (1996-01-21) 1145------------ 1146/addworld warns when passwords are found in world-readable files. 1147"/recall -v" recalls lines that don't match pattern. 1148"/recordline -t" allows setting of line's timestamp. 1149Changing %TZ refreshes clock on status bar. 1150MAIL hook will not recurse (allowing "/hook MAIL = /sh mail" to work). 1151Improved efficiency of glob patterns ending in "*". 1152Decreased annoying delay in cursor refresh in visual mode. 1153Helpfile is generated automatically from html source. 1154Fixed fatal bug in displaying long prompts (now only last line is displayed). 1155Fixed bug in displaying very long input lines in visual mode. 1156Fixed declaration error in search.h under nonstandard compilers. 1157Fixed handling of uppercase keywords (/IF, /WHILE, etc.). (35a12) 1158Fixed listing and saving of macros defined with /def -PC. (35a9) 1159Fixed declaration problem under HP-UX compiler. 1160Fixed output handling when %emulation is changed (including /xtitle). 1161Internal changes. 1162 11633.5 alpha 13 (1995-10-08) 1164------------ 1165Options parsed by getopts() can take numeric arguments. 1166Fixed fatal bug in handling background prompt with ansi attributes. (35a11) 1167 11683.5 alpha 12 (1995-09-24) 1169------------ 1170Fixed fatal macro bug occuring during startup on some systems (including 1171 OS/2, Linux, and IRIX). (35a11) 1172Fixed minor bug in telnet NAWS when a window dimension is 255. (35a10) 1173 11743.5 alpha 11 (1995-09-17) 1175------------ 1176Added getopts() function to parse macro options. 1177Displays attributes in server prompts with emulation=ansi_attr. 1178The SEND hook (and therefore aliases) can be called recursively. Use 1179 "/send <text>" instead of "<text>" to avoid the SEND hook. 1180Macros and file loading (and therefore startup) are faster. 1181Fixed default %end_color for background colors. (35a9) 1182Fixed bug in telnet NAWS on little-endian machines (Intel). (35a10) 1183 11843.5 alpha 10 (1995-08-31) 1185------------ 1186Hidden keyboard input (e.g. passwords) are gagged in history and not visible 1187 with keyboard recall functions. 1188Added telnet NAWS option to send window size to server. 1189Added time() and ftime() functions. 1190Fixed use of combined background and foreground color. (35a9) 1191Fixed bugs in emulation=ansi_attr handling of codes at start and end of line. 1192Fixed /help index alignment bugs. (35a) 1193Fixed strip of leading space in /def (also affects filenames $LOGFILE and 1194 $WORLDFILE) (35a9) 1195Fixed handling of bell (^G) under emulation=ansi_attr. 1196Removed unnecessary stuff from output of /qdef in quoter.tf. 1197Removed %emulation=canon. 1198 11993.5 alpha 9 (1995-08-12) 1200----------- 1201Added ascii() and char() functions. 1202Supports ANSI background color attributes from server if %emulation=ansi_attr. 1203Supports ANSI background color attributes in -aC options. 1204Function idle("world") gives idle time of world's socket. 1205/ps displays times in hh:mm:ss format. 1206Nonprintable characters are displayed as printable bold-reverse (but 1207 %emulation still determines how characters from a socket are interpreted). 1208Nonprintable characters may be input literally from the keyboard. 1209Nonprintable characters in prompts do not cause wrapping problems anymore 1210 (but are still not treated as attributes). 1211Added -d option to /quote to determine how generated text is used. 1212Added ESC-space keybinding to collapse spaces. 1213Echoes new command during ^old^new style history substitution. 1214Removed %emulation=canon functionality. 1215Fixed bug in getting a few special variables from environment. (35a8) 1216Fixed fatal bug in ?: in unevaluated branch (includes a bug in complete.tf). 1217Fixed need to escape '\' in an unquoted command part of a /quote (e.g., 1218 in an OS/2 filename). 1219 12203.5 alpha 8 (1995-07-16) 1221----------- 1222Added convenient "/if (expr)" and "/while (expr)" syntax. 1223Added ability to connect via proxy server (firewall). See: /help proxy. 1224Added "/!command" syntax for negating return values. 1225Added spell.tf library, to do spelling checking by typing ESC-s. 1226Allows /connect to closing world in DISCONNECT hook. 1227Fixed prompt update after socket disconnect. 1228Fixed installation problem on systems without getpwnam(). 1229 12303.5 alpha 7 (1995-07-01) 1231----------- 1232Command and macro substitutions are allowed inside expressions. 1233Gags are applied when text arrives instead of when it is displayed, making 1234 the "More" line counter more intuitive. 1235Improved error and warning messages. 1236Added %{gethostbyname} variable, set to "blocking" by default under unix. 1237Fixed /histsize: empty history bug, and downsizing memory leak. 1238Fixed fatal bug in /send -w to a nonexistant world. 1239Fixed regexp scope bugs (including a bug in the ^W keybinding). (35a4) 1240Fixed bug in handling bad environment values for special variables (it would 1241 usually just say "Killed" and exit). 1242Fixed bug in assigning variable to itself. 1243Fixed problem on OS/2 with full tcp/ip. (35a5) 1244 12453.5 alpha 6 (1995-05-29) 1246----------- 1247Second operand of ?: operator is optional. 1248Increased range of "more" counter. 1249Fixed error in /listsockets under nonstandard C libraries (in particular, 1250 those on SunOS 4.x and ULTRIX). (35a5) 1251Fixed problem on OS/2 with resolved host addresses containing 0x0d. (35a5) 1252 12533.5 alpha 5 (1995-05-21) 1254----------- 1255New /listsockets format, includes idle time and world type. 1256With emulation=ansi_attr, server attributes now continue across lines. 1257Supports nonblocking hostname lookup on OS/2 as well as UNIX. 1258Fixed /dc. (35a4) 1259Fixed bug in using /histsize on a non-existant or unused world. (34a3) 1260Fixed select on closed pipe (35a4). 1261Fixed compile-time rand()/random() problem on OS/2 (35a4). 1262Fixed hostname resolution on IRIX 5 (without breaking socket stuff on other 1263 systems, I hope). 1264 12653.5 alpha 4 (1995-05-07) 1266----------- 1267/eval inherits positional parameters (%1, etc) from calling macro. 1268New "{...}" expression operands for variable and parameter substitution, 1269 eliminates need for many temporary variables, messy multiple '%', and 1270 $[...] in /test. 1271Nonblocking hostname lookup for UNIX, and better error messages. 1272Third argument to substr() is optional, defaults to full length of string. 1273Improved prompting-world detection heuristics in stdlib.tf. 1274Fixed problems with leading "-" in /changes, /complete, and /replace. 1275Fixed bug that could make a dead socket impossible to bring into foreground. 1276Fixed unexpected loss of regexp substitution values (e.g., %P1). 1277Fixed bug in hooks under nonstandard compilers. 1278Workarounds for several instances of ULTRIX brain damage. 1279 12803.5 alpha 3 (1995-04-08) 1281----------- 1282Ported to OS/2 by Andreas Sahlbach (asa@stardiv.de). 1283Text generated by /quote without a prefix is transmitted directly, not 1284 interpreted, so leading '/' and spaces remain intact. 1285The character ^@ is allowed in keybindings. 1286Added systype() expression function. 1287Added /finger in finger.tf. 1288%{emulation} now defaults to "ansi_attr"; display control codes received 1289 from the server (which were never officially accepted) are now explicitly 1290 stripped. See: /help emulation. 1291Added kbmatch(), /kb_goto_match, and ^[- keybinding to match parentheses. 1292New default filenames for /load* and /save*. 1293Reorganized installation to work with multiple architectures. 1294Workaround for ULTRIX sh bug causing installation failure if missing 'strip'. 1295Fix for DG/UX version of inet_addr() (not fixed in 34a9). 1296Renamed files to fit within 8.3 FAT filesystem restrictions. 1297Fixed interpretation of ~ in TFLIBDIR in /changes. 1298Fixed rare bug involving /quote ! processes that pause between lines. 1299 13003.4 alpha 16 (1995-01-08) 1301------------ 1302Fixed bug in glob patterns containing '*' followed by an escaped special 1303 character (e.g., "*\*"). 1304Fixed "sh: illegal i/o" problem during installation on ULTRIX. (34a) 1305 13063.4 alpha 15 (1995-01-02) 1307------------ 1308Fixed (often fatal) bug in substr() with large 3rd argument (as in /escape 1309 and /tr). (34a13) 1310Fixed minor display quirks when entering visual mode on some systems. (34a11) 1311Changed parsing of ambiguous special substitutions like "%Lx" to be "%{Lx}" 1312 instead of "%{L}x", but "%L1x" is still parsed as "%{L1}x". (34a12) 1313 13143.4 alpha 14 (1994-12-30) 1315------------ 1316Fixed instalation problem on SunOS 4.1.3 (possibly others). (34a13) 1317 13183.4 alpha 13 (1994-12-28) 1319------------ 1320Faster and theoretically more reliable function testing in autoconfig. 1321Fixed portability to systems without strchr() and strcspn(). 1322Internal changes to facilitate future ports to other operating systems. 1323 13243.4 alpha 12 (1994-12-17) 1325------------ 1326Fixed bug in parsing undelimited parameter subs (e.g., "%1x"). (34a) 1327Fixed fatal bug in failed bamf, and minor bug in successful bamf. 1328Fixed fatal bug occurring when one process /kills another (as in /tick). 1329Fixed installation bug occurring in some shells. 1330 13313.4 alpha 11 (1994-12-04) 1332------------ 1333%{clock} can be set to "12-hour" or "24-hour" format. 1334Can automatically detect the need for lp=on for some typeless worlds. 1335Optimized output. 1336/mapcar and /maplist (in lisp.tf) no longer evaluate their arguments. 1337More useful return value for /listworlds. 1338Improved mail check. 1339Fixed compilation error on HP-UX (34a3). 1340Fixed fatal bug in handling small terminal resizes. 1341Fixed fatal bug in /trigger (34a3). 1342Fixed handling of '\', '%%', '$$' in variable substitution defaults (34a3). 1343autoconfig works with stupid linkers that return a useless exit status. 1344 13453.4 alpha 10 (1994-10-09) 1346------------ 1347Fixed fatal bug occuring when history becomes full (34a9). 1348 13493.4 alpha 9 (1994-10-09) 1350----------- 1351Added /dokey RECALLBEG and RECALLEND (ESC < and ESC >) to jump to ends of 1352 input history. 1353If not set in the environment, default values for %{TFLIBRARY} and %{TFHELP} 1354 are derived at runtime from %{TFLIBDIR}. 1355Added "~user" home directory filename expansion, as in modern shells. 1356Added filename() function to do filename expansion in expressions. 1357File commands behave better when operating on a directory. 1358Fixed fatal bug in watchdog and watchname when connecting to a world (34a8). 1359Fixed bug in /dokey RECALLB (^P) causing it to stop early (34a8). 1360Support for the DGUX version of inet_addr() (not really fixed until 35a3). 1361Fixed handling of plain '%' during newline expansion. 1362 13633.4 alpha 8 (1994-09-25) 1364----------- 1365/histsize now works at any point, not just when history is small. 1366Fixed infinite loop in SIGQUIT (^\) handler on systems with BSD-like signals. 1367Fixed fatal bug in backward-wrapping delete in visual mode on some terminals. 1368Installation no longer gives the option of removing old files; it caused too 1369 many problems with users who answered 'y' without reading the list first. 1370Porting fix: elimiated 'signed' type (34a). 1371Better preprocessor and library testing in autoconfig. 1372Improved make output and core dump messages. 1373 13743.4 alpha 7 (1994-08-28) 1375----------- 1376Improved messages for expression syntax errors. 1377Fixed bug on systems without strcasecmp(), causing many startup errors (33b). 1378Fixed bug causing all evaluation to stop after a user syntax error in an 1379 &, |, or ?: expression (34a3). 1380Workaround for fatal error due to overly large termcap entries/continuations. 1381Porting improvements in autoconfig for stupid systems. 1382In quoter.tf, /qmud takes an optional -w<world> argument. 1383 13843.4 alpha 6 (1994-08-17) 1385----------- 1386Standardized /sys. 1387Fixed %{oldslash} (34a). 1388Fixed bugs in prompt refresh in nonvisual mode (34a). 1389 13903.4 alpha 5 (1994-08-16) 1391----------- 1392Added to file-xfer.tf library: /putfile_MUCK, /putfile_LP, /putfile_UNIX, 1393 /getfile_MUCK, /getfile_LP, /getfile_UNIX. 1394Fixed: glob pattern "{}" matches empty string (34a). 1395Elminated beep in /grab (34a). 1396 13973.4 alpha 4 (1994-08-16) 1398----------- 1399Added the ?: conditional operator, as in C. 1400Documented some previously undocumented library commands. 1401Fixed handling of whitespace in /recall between range and pattern. 1402Fixed compile-time header problems involving time_t and errno. (34a3) 1403In file-xfer.tf, fixed /putfile's handling of lines beginning with "/". 1404 14053.4 alpha 3 (1994-08-14) 1406----------- 1407In visual mode, uses terminal's insert/delete if available (e.g., vt220 1408 and ANSI, but not vt100). Very nice at low baud rates. 1409Can interpret ansi attribute codes from server: /set emulation=ansi_attr. 1410Can work with almost any display codes from server: /set emulation=raw. 1411Added variables %{tabsize} and %{emulation}, removed %{catch_ctrls}. 1412Default values for variable substitutions may now contain nested variable 1413 and macro substitutions (e.g., %{USER-%{LOGNAME-nobody}}). 1414Added more default keybindings (see "/help keys"). 1415Expression operators '&' and '|' now stop evaluating as soon as value is 1416 known ("short-circuit"). 1417Added strncmp() to compare first n characters of strings. 1418Added idle() to get time since last keypress. 1419Added /histsize and %{histsize} to control history sizes. 1420Added macro name completion to completion.tf library. 1421Added /paste and /endpaste to quote pasting. 1422Added hooks SIGUSR1 and SIGUSR2. 1423Added /signal to send a signal to tf. 1424Added getpid() to get tf's process id. 1425More useful return values for synchronous /repeats and command /quotes. 1426A set high bit on an input character is converted to ESC. See /help %istrip. 1427Increased speed of macro processing, startup, etc. 1428Supports nonblocking connect if used with SOCKS 4.2beta. 1429/BREAK takes an optional argument specifing the number of levels to break. 1430Under linux, nonblocking connect failure now hooks CONFAIL, not DISCONNECT. 1431Removed improper evaluation of $[...] in unexecuted /if and /while branches. 1432Fixed bug in /BREAK followed by a nested /WHILE. 1433Fixed bug in detecting new mail in a previously nonexistant mail file. 1434Fixed bug: lines from background world were reversed in global history/log. 1435Fixed refreshing of input in noecho mode (password entry) with visual=off. 1436Fixed bug causing writing into variable argument of toupper(), tolower(), 1437 or builtin command called as a function. 1438Fixed bugs in idea of current socket in CONFAIL hook and immediately after 1439 /fg and (successful or failed) /connect. 1440Fixed bug in /purgeworld'ing a nonexistant "default" world. 1441Reverted to pre-33b16 parsing of '\' in option arguments (not a bug, but 1442 caused unexpected behavior of incorrectly written user macros). 1443Improved debugging information for potential internal errors. 1444Internal changes. 1445 14463.3 beta 16 (1994-06-10) 1447----------- 1448Fixed bug in trying to redefine a connected world (33b12). 1449Porting fix for old versions of gcc (33b15). 1450Minor change in parsing '\' in option arguments. 1451 14523.3 beta 15 (1994-06-04) 1453----------- 1454Sped up macro processing, socket input, etc. 1455Workaround for systems that have strcasecmp() but don't declare it (33b14). 1456 14573.3 beta 14 (1994-06-03) 1458----------- 1459Fixed bug in using "/log off" when no logs were open (33b10). 1460Miscellaneous minor improvements, mostly internal. 1461 14623.3 beta 13 (1994-05-28) 1463----------- 1464Fixed fatal bug in opening unnamed worlds (33b12). 1465 14663.3 beta 12 (1994-05-27) 1467----------- 1468More meaningful return values for /recall and /time. 1469Fixed bug in using /edit without -m on a macro defined with -m. 1470Fixed bugs in input display when local echo is off. 1471Fixed bugs in redefining worlds and undefining "default" world. 1472Fixed use of "on" with /watchname and /watchdog, and bug in /watchname. 1473 14743.3 beta 11 (1994-05-25) 1475----------- 1476Fixed bug in using /connect not followed by (automatic) /fg. 1477Fixed fatal bug in nonvisual --More-- prompt with lp==on. 1478Fixed minor bug in /quitdone. 1479Added attributes to --More-- prompt in nonvisual mode. 1480 14813.3 beta 10 (1994-05-22) 1482----------- 1483Added line counter to more prompt in visual mode. 1484Added synchronous /quote and /repeat for immediate, inline processing. 1485"/log off" turns off all logs; use "/log -g off" to turn off global log only. 1486Improved handling of very large amounts of text from server. 1487Fixed bug in error handling in /undefn. 1488Porting fix for sys_errlist[] declaration (NetBSD). 1489Ported to nonstandard systems with bcopy & bzero but not memcpy & memset. 1490Fixed bug in using /recall with wraplog==on (33b7?). 1491Fixed minor bug in using "nw" or "se" in map.tf. 1492Improved /qmac in quoter.tf. 1493 14943.3 beta 9 1495---------- 1496Added help topics for some library utilities. 1497In alias.tf, arguments to aliases now make more sense. 1498Added /dokey selflush ("selective flush") bound to ^[J. 1499Gracefully handles wrapping when text contains ansi display attribute codes. 1500Fixed obscure bug in using current socket right after disconnecting from it. 1501 15023.3 beta 8 (1994-05-10) 1503---------- 1504Fixed bug in wrapped input lines in nonvisual mode (33b7). 1505Fixed minor quirks with input/output display in nonvisual mode (33b7). 1506 15073.3 beta 7 (1994-05-09) 1508---------- 1509Added support for SOCKS firewall proxy connections (ala rtelnet). 1510Improved error messages. 1511Improved handling of printing large amounts of text. 1512Removed restriction that world be connected for /echo -w<world>. 1513Fixed bug in handling invalid variable values. 1514Fixed obscure bug in fall-thru triggers/hooks which define another matching 1515 trigger/hook of lower priority. 1516Fixed obscure bug in a PROCESS hook that kills its own process. 1517Fixed obscure bug in typing ^@ at startup. 1518Fixed bug in /savehilite (33b6). 1519Plugged memory leak in macro specification commands. 1520Internal changes. 1521 15223.3 beta 6 (1994-04-28) 1523---------- 1524Added SIGHUP and SIGTERM hooks. 1525/savehilite and /listhilite include partial hilites. 1526Added /listpartial and /listfullhilite. 1527Fixed porting problems (33b5). 1528 15293.3 beta 5 (1994-04-26) 1530---------- 1531Added %{max_iter} to control runaway /while loops. 1532Improved /listsockets format. 1533Added options to /fg. 1534Workaround for Solaris brain damage. 1535Eliminated spurious error message when reading compressed file. 1536Fixed bug in wrapping input with insert=off. 1537Fixed small omissions in tf.help. 1538Internal changes. 1539 15403.3 beta 4 1541---------- 1542Minor fix in idea of current world after /fg in fall-thru triggers/hooks. 1543Minor fix for recall messages while logging. 1544Fix for empty /cat text. 1545Internal changes. 1546 15473.3 beta 3 1548---------- 1549In completion.tf, added /complete_input_history (ESC i). 1550In lisp.tf, added /unique. 1551Fixed error checking in rand(). 1552Fixed bug in failed keybinding redef (caused core on Linux) (33a). 1553Fixed potentially fatal bug in oneshots. 1554 15553.3 beta 2 (1994-03-09) 1556---------- 1557Fixed "OOPS" problem with simulated scrolling on deficient terminals (33a). 1558Fixed error on old systems without FD_SET() and friends, e.g. AIX (33a). 1559Fixed a few other minor problems with porting to strange systems. 1560 15613.3 beta 1 (1994-03-03) 1562---------- 1563Changes since 3.2 beta 4: 1564Added /substitute, /connect, /fg, /dokey dword, /prompt, PROMPT hook, mod(), 1565 kblen(), kbwordleft(), kbwordright(), %{wordpunct}, %{telopt}. 1566Partial hilites enhanced to work on multiple matches on the same line. 1567Regexp subexpressions can be accessed as Pn variables as well as %Pn subs. 1568"/recall /n pattern" recalls the last <n> lines that match <pattern>, 1569 instead of searching for <pattern> in the last <n> lines. 1570Improved "randomness" of random numbers. 1571Made word editing functions more like those in emacs, bash, tcsh. 1572Added support for up to 16 colors. 1573The SEND hook can be activated by any text command, not just command line. 1574The SEND hook always prevents sending of the original text (previous versions 1575 of TF required a gag to do so). Use "/send %*" in the hook body if you 1576 really want it to be sent. 1577/def -w is equivalent to /def -w${world_name}. 1578/kill can take mutiple arguments. 1579Several improvements in display of major editing operations (visual and 1580 nonvisual). 1581/dokey redraw (^L) now does something useful in non-visual mode. 1582Increased speed of macro execution by about 15%. 1583Improved visual input scroll for terminals without scroll regions. 1584Improved appearace of external messages (e.g. "write") in visual mode. 1585Fixes for bugs and portability. 1586Removed %{quoted_args}. 1587 1588 15893.2 beta 4 1590---------- 1591Fixed a bug that prevented %P subs from working after a regexp trigger. 1592 15933.2 beta 3 1594---------- 1595Fixed bug in /hook causing macros to be defined with -t"" -aCred. 1596 15973.2 beta 2 1598---------- 1599Fixed fatal bug in /hook. 1600 16013.2 beta 1 (1993-12-19) 1602--------------------- 1603Added rand(), kbdel(), %{scroll}, %{clock}. 1604Added REGULAR EXPRESSIONS, and ability to extract arbitrary pieces of 1605 of matched text using %Pn. See: patterns, matching, regmatch, %Pn. 1606Added "Partial hilites" - hilite part of a line. (see /partial, /def -P). 1607Installed utilities directory, includes: many advanced keybindings; 1608 /alias; /at; /putfile; speedwalk; mapping; shell utilities; quoting 1609 utilities; logging utilities; /rwho; Diku tick counter; etc. 1610More useful return values for macro creation, /quote, /repeat, and /dokey. 1611Symbolic values and type checking for special variables. 1612In expressions, "=" does comparison, not assignment. ("==" still compares). 1613In expressions, ":=" does assignment. 1614Assignment expressions can create a new global (not local) variable. 1615Mecho nests, and doesn't echo invisible macros. 1616/send can send a blank line. 1617Added ability to avoid automatic switch when pending connect completes. 1618Control constructs (/if and /while) can be used from command line. 1619Detects and warns about some common user macro mistakes. 1620Better handling of toggling %{lp} (e.g., when switching worlds). 1621Better error messages for files. 1622Internal redesign of screen handling, cursor and write() optimization. 1623Other internal changes. 1624Fixed \] bug in [...] patterns. 1625Improved installation portability. 1626Increased speed of macro execution by about 15%. 1627 1628 16293.1 beta 5 1630---------- 1631Fixed divide-by-zero in user expressions. 1632Improved error handling for some other expression errors. 1633Renamed "signal.h" for stupid compilers. 1634 16353.1 beta 4 1636---------- 1637Fixed bug in "[^...]" patterns. 1638 16393.1 beta 3 1640---------- 1641Fixed ULTRIX time_t bug (really). 1642 16433.1 beta 1 1644---------- 1645New inline nonblocking connect. Should work automagically on all platforms. 1646Added many useful and educational macros in utilities directory. 1647Added -T<worldtype> option to /def for triggers and hooks. 1648Added expression functions. 1649New expression functions: strcmp, strstr, strchr, strrchr, strlen, substr, 1650 strrep, toupper, tolower, kbhead, kbtail, kbpoint, kbgoto. 1651Added = (assignment) and , (comma) operators to expressions. 1652Macros and builtin commands can be called from expressions as functions. 1653Added /escape, %{ignore_sigquit}, %{quoted_args}, removed -DQUOTED_ARGS. 1654Recognizes "*^H" as LP editor prompt (useful with /lpquote). 1655Handles ^H from server. 1656Error checking for patterns in /hilite, /gag, /trig*. 1657For backward compatibility with pre-3.0, default world type does not change 1658 any flags (lp, always_echo). 1659Autoconfig is even smarter. 1660Bug fixes for lp prompts (background worlds, etc). 1661Bug fix for negative numbers stored as strings. 1662Bug fix for redefining worlds with -T. 1663Fixed signal (TSTP, ^Z) delay on SVR4. 1664Fixed mysterious and rare "2" hilite bug (3.0) 1665Fixed world leak in /dc on pending socket. 1666Other portability stuff. 1667 16683.0 beta 2 1669---------- 1670Added time arithmetic in expressions. 1671Bug fix: identifers in expressions can contain '_' chracters. 1672Bug fix: added -T option to /addworld to support extended /add* commands. 1673Added <type> argument to WORLD and LOGIN hooks. May break a few old macros. 1674PROCESS and KILL hooks are silent by default. 1675Portability improvements in installation. 1676 16773.0 beta 1 (1993-09-11) 1678-------------------- 1679NEW COMMANDS: 1680/addlp, /addlpp, /addtelnet, /addtiny, /eval, /export, /expr, /for, 1681/if, /let, /not, /rand, /recordline, /restrict, /set, /setenv, /shift, 1682/suspend, /telnet, /test, /time, /toggle, /unset, /while. 1683 1684NEW FEATURES: 1685Installation is completely automated and configurable. 1686Examples directory. 1687Variables (local, global, and environment) 1688Conditional programming constructs: /if, /then, /elseif, /else, /endif. 1689Loop programming constructs: /while /do /done, /for, and /break. 1690Evaluation programming constructs: /eval, /not. 1691Math operations with $[...] and /test (see "expressions"). 1692Command substitution with $(...) (see "expansion"). 1693Official support for user-defined hiliting (color). 1694Timestamps in history /recall. 1695Fall-thru triggers and hooks (/def -F), for multiple priority matches. 1696LNEXT (^V), SEARCHB (^[p) and SEARCHF (^[n) key functions. 1697Added CONFLICT and SHADOW hooks. 1698Supports telnet GOAHEAD and EOR end-of-prompt markers (/lp on not required). 1699Added -n option to /send. 1700Added -a (append) option to /save and /saveworld. 1701Secure public installation with /restrict. 1702Allows macros to override builtin commands. Use "/@name" to call builtin. 1703 1704NEW RUNTIME OPTIONS: 1705Variable-controlled features: MAIL, TERM, TFCONNECT, TFHELP, TFLIBRARY, 1706 always_echo, backslash, barattr, bg_output, catch_ctrls, hiliteattr, 1707 maildelay, max_recur, oldslash, prompt_sec, prompt_usec, refreshtime, 1708 snarf, sockmload, time_format, wraplog. 1709 1710FIXES/IMPROVEMENTS: 1711Much improved handling of LP/Diku prompts (see "prompts"). 1712Using RECALLB and RECALLF (^P and ^N) will not destroy current line. 1713Multiple '/'s in macro expansion are no longer required. 1714Added '\' escape character to macro expansion. 1715Option arguments may use ' and ` as well as " for delimiters. 1716Hexadecimal and octal ascii backslash substitutions and keybindings. 1717Removed flaky +|- args from /list -t -b -h. Use "", "{}", or "0" instead. 1718Optimized [] in patterns. 1719Uses termcap definitions for arrow keys. 1720Supports standout (bold) and underline on more terminals. 1721Better /visual support on wimpy terminals (no "cs" or "ce" termcap entry). 1722Supports nonblocking connect on BSD 4.3 Reno and later systems. 1723Expands tabs from mud and in /quote and /load input. 1724Handles changes in window size during /sh and suspension. 1725Correctly handles shell i/o redirection in "/quote !". 1726Better handling of spaces with wrapping and /wrapspace. 1727Disabled /quiet when autologin is disabled. 1728Fixed substitution of "normal" macros of the form "world_*". 1729Fixed bug in using /world or other commands in CONFAIL hook. 1730Fixed bug in using /world in configuration file. 1731Fixed handling of suspend during /sh. 1732Fixed bug in nonvisual mode when gagged line is (not) printed. 1733Improved efficiency. 1734Many portability fixes. 1735Many other bug fixes. 1736 1737 17382.1 beta 2 1739---------- 1740Bug fixes 1741 17422.1 beta 1 (1992-09-22) 1743-------------------- 1744Added BAMF, SHELL, LOGIN hooks; /retry; file compression; multi-shots. 1745Added logging by world (/log -ligw). 1746Hooks are more like triggers: multiple hooks, argument patterns, priority. 1747Keybindings are now macros (/def -b). 1748Fixed nonblocking connect. 1749Added redirected output for /quote and /repeat with -w option. 1750Added "/world <host> <port>" semantics. 1751Added local command quoting (/quote `). 1752Improved argument substitution: %{} syntax, orthogonal default values. 1753Added -f<file> command line option. 1754/repeat and keybinding bodies go through macro expansion. 1755Bug fixes. 1756Removed /stty. 1757 17582.0 beta 2 - 7 1759-------------- 1760Bug fixes 1761 17622.0 beta 1 (1992-07-08) 1763------------------- 1764Made installation easier and automated 1765New command line syntax: removed '-', added '-fln' options 1766Added standard macro library, replacing many builtin commands. 1767Added hooks; /hook; /unhook; /background; /def -w; /def -i; /input; /list; 1768 /load; /save; /purge; /send; /echo -a; /echo -w; attributes underline, 1769 reverse, flash, dim, bell, norecord. 1770Added world histories, local history, global history, and /recall -lig 1771Nonblocking /more 1772Nonblocking world connections 1773Filenames defined with BINDFILE, HELPFILE, LOGFILE, and WORLDFILE macros 1774Added command menu at ^C (exit, borg off, kill processes) 1775Removed /tinytalk, /intr, /intrborg, /refill, /core, and /activity 1776/bamf on assumes UnterMUD portals; use /bamf old for old-style bamfing. 1777/listworlds doesn't display passwords unless given -c option 1778Bug fixes and optimizations 1779 17801.5.5 beta3 1781----------- 1782Bug fix 1783 17841.5.5 beta2 1785----------- 1786Bug fixes for time.h, killing /repeats, etc. 1787Fixed /ps output 1788 17891.5.5 beta1 1790----------- 1791Autologin support for untermud cyberportals, with '/bamf unter' command 1792Removed /listbind, /act, /reply, /nointr, /nowrap, /nostty, /nolog, 1793 /nologme, /nologin, /noquiet, and /qctries 1794Flags /stty, /log, /logme, /login and /quiet do not turn on when called 1795 with no arguments. 1796Expanded /ps and /listsocket output 1797Imporoved effeciency of keyboard processing and macro expansion 1798Eliminated busy-wait in /more, /shpause, and Yes/No queries 1799Command quotes use pipes instead of temp files, and capture standard error 1800Removed -DIRIX and -DMANUAL_SWITCH compile flags 1801 18021.5.4 beta1 (1991-08-20, by Ken Keys) 1803----------- 1804Added activity notice for background worlds, /activity to enable/disable it. 1805Improved /more paging 1806Increased sizes of command and socket recall buffers 1807Fixed bug in matching (illegal) patterns of the form "x{y}" 1808With /intrborg on (default), ^C will query to turn off /borg. 1809Removed extra iteration from /repeat loop (thanks to David Moore (OliverJones)) 1810Improved mail check 1811Ascii code subs of form "\nnn" are done where ever newline subs are done 1812Replaced SUPPRESS_REDEFS compile-time option with "quiet" option to /redef 1813Added TINYPREFIX and TINYHELP environment variables 1814Default priority for hilites and gags is 0, other triggers 1. 1815Added logging flag to status line 1816 18171.5.3 beta1 (1991-05-04) 1818----------- 1819Added in Madwand's TF status patch, -DLOUD_WORLDS option. 1820Fixed portals, -DOLD_LPPROMPTS option 1821 18221.5.2 beta5 (1991-03-09) 1823----------- 1824Fixed a bug with macros deleting themselves 1825Fixed a bug with triggers doing /dc 1826 18271.5.2 beta4 (1991-03-05) 1828----------- 1829Recursion maximum in expand.c 1830Added support for AT&T WINS; -DREFRESH_TIME option 1831/stty on is default 1832 18331.5.2 beta3 (1991-02-28) 1834----------- 1835Process handling changed 1836 18371.5.2 beta2 (1991-02-24) 1838----------- 1839Bug fix 1840 18411.5.2 beta (1991-02-23) 1842---------- 1843World macro files changed 1844Removed /purgewload, added /sockmload 1845Compile-time options: -DSUPPRESS_REDEFS and -DSNARF_BLANKS 1846Off-by-one bugs in ^N and /watchdog 1847Setting off a bound key resets the count for the pager 1848Descriptor leak in /kill 1849 18501.5.1 beta4 (1991-02-15) 1851----------- 1852Bug fixes 1853 18541.5.1 beta3 (1991-02-13) 1855----------- 1856Bug fix 1857 18581.5.1 beta2 (1991-02-12) 1859----------- 1860Bug fixes 1861/more paging is slightly different in visual mode 1862 18631.5.1 beta (1991-02-08) 1864---------- 1865Bug fixes 1866 18671.5.0 beta2 (1991-02-02) 1868---------- 1869Bug fixes 1870 18711.5.0 beta (1991-02-02) 1872---------- 1873Removed /dbs, /packet, /clunused, /bs, /cursopt, /hn, /techo 1874Added /mecho, /bind, /unbind, /listbind, /savebind, /loadbind, 1875 /dokey, /grab, /cat, /trigger, /sub full 1876Expanded /recall format 1877No string maximum lengths 1878Added %L, %-L, %R, %E argument subs, and default args; [] and {} pattern 1879 matching; mail checking; quoting from history. 1880 18811.4.17 beta (1990-12-10) 1882----------- 1883Bug fixes 1884 18851.4.16 beta (1990-12-10) 1886----------- 1887Internal 1888 18891.4.15 beta (1990-12-09) 1890----------- 1891Bug fixes 1892Macro arguments no longer undergo reentrance substitution. 1893Added one-shot triggers; argument grouping by single and double quotes 1894Changed default editing keys 1895 18961.4.14 beta (1990-12-08) 1897----------- 1898Bug fixes 1899Added multiple character key sequences 1900"/world -<name>" will do a /world without logging in. 1901Disconnecting will move to the top world. 1902Added time options for /quote and /repeat 1903 19041.4.13 beta (1990-12-04) 1905----------- 1906Bug fixes 1907Removed /sendtries, /fastquote 1908/world_* substitutions expanded to work everywhere macros do 1909/ptime now works in milliseconds and is a definite value 1910 19111.4.12 beta (1990-12-01) 1912----------- 1913Bug fixes 1914 19151.4.11 beta (1990-11-30) 1916----------- 1917Bug fixes 1918Added default arguments 1919Expanded %n lastname substitution to macros from triggers. 1920/tinytalk flag expanded to work with /nogag and /nohilite. 1921Rewrote output drivers. 1922 19231.4.10 beta (1990-11-26) 1924----------- 1925Bug fixes 1926Expanded default world fields to include macro file 1927Allowed worlds to leave out char and password even if there's no default. 1928 19291.4.9 beta (1990-11-24) 1930---------- 1931SIGSEGV, SIGBUS, SIGQUIT handlers 1932Added /world_* subs 1933 19341.4.8 beta (1990-11-24) 1935---------- 1936Bug fixes 1937 19381.4.7 beta (1990-11-24) 1939---------- 1940Bug fixes 1941 19421.4.6 beta (1990-11-23) 1943---------- 1944Bug fixes 1945 19461.4.5 beta (1990-11-23) 1947---------- 1948Bug fixes 1949Added /qecho (echo /quote text before sending) 1950 19511.4.4 beta (1990-11-23) 1952---------- 1953Bug fixes 1954Added /quitdone. 1955 19561.4.3 beta (1990-11-22) 1957---------- 1958Bug fixes 1959Added /purgeworld 1960 19611.4.2 beta (1990-11-22) 1962---------- 1963Bug fixes 1964 19651.4.1 beta (1990-11-22) 1966---------- 1967Bug fixes 1968/tinytalk flag expanded 1969Added /lp, /lpquote, /more 1970Added recall and socket keys to /keys. 1971Changed /keys syntax. 1972Removed /crypt. 1973 19741.4.0 beta (1990-11-18) 1975---------- 1976Bug fixes 1977Changed /world to work more intelligently with multimudding 1978 1979This is the last time a version was released with code changes without 1980 updating the version number. 1981 19821.4.0 beta (1990-11-17) 1983---------- 1984Added /cleardone; /keys; /dc; /listsockets; arrow keys; /addworld file field. 1985Removed /pf. 1986Changed ^P and ^N keys to [ESC]P and [ESC]N 1987Added multi-mudding, with [ESC]B and [ESC]F 1988Allowed running Fugue without connecting 1989Represented tabs as '@' to make tab handling work 1990 19911.3.0 beta 1992---------- 1993Added /shpause, /addworld, /noworld, /saveworld, /loadworld, /clunused, 1994 /ptime, /qctries 1995Allowed config file to begin with commands 1996Changed /savedef to save only macros without triggers 1997Changed /quote to work without alarm() 1998 19991.2.6 beta 2000---------- 2001Bug fixes 2002Trigger functions work on basis of hilites first, then gags, then nothing 2003Expanded /stty to check window size 2004Added /packet (waits for 512 chars of output before sending packets). 2005Expanded /tinytalk to cause /stty, /log, /logme, /login and /quiet flags 2006 to turn on when called with no arguments. 2007 20081.2.5 beta 2009---------- 2010Bug fixes 2011/edit allows specifying macros by name, number, or trigger. 2012Added -DHARDCODE and non-termcap compile modes 2013 20141.2.4 beta 2015---------- 2016Changed /echo to do local echo 2017Added /kecho (echoes keyboard input), /techo (echoes trigger input) 2018 20191.2.2 beta 2020---------- 2021Added /tinytalk (some tinytalk compatibility), /no<flag> commands 2022 20231.2.1 beta 2024---------- 2025Bug fixes 2026Added /visual, /gpri, /hpri. 2027 20281.2.0 beta 2029---------- 2030Changed code organization 2031Added -f switch on /def for function 2032Added /trig, /trigp, /trigpc, /trigc, /act from TF 1.1.2 and tinywar 2033Changed /listdef command to use switches. 2034Allowed unnamed macros 2035Added /untrigt; /undeft; /purgedeft; /hn (removes blank line between output 2036 and divider by holding newlines) 2037 20381.1.5 beta 2039---------- 2040Bug fixes 2041Removed /nointr, /nolog, /nostty, etc. 2042Added /sh back in; /sub; /refill; /edit 2043 2044---------- 2045 2046The differences section only applies to things that need to be changed 2047or are not implemented in TinyFugue. Tf offers a lot more functionality 2048in many areas than the clients below, of course. 2049 2050------------- 2051Differences from TinyTalk (Tarrant's client) 2052------------- 2053Compatibility is almost complete. All .tinytalk files should work 2054with Fugue. The /tinytalk flag (defaults to on) makes the necessary 2055changes to convert between tinytalk command formats to tinyfugue 2056command formats. 2057 2058------------- 2059Differences from TinyWar (Grod's client) 2060------------- 2061Use /sub on to substitute %; and %\ for newlines in regular text 2062%n works only in macros and triggers, and in /sub full mode 2063/crypt and /random removed 2064"%2*" argument sub should be replaced by "%-1" 2065 2066