1.0.14: * logging to .xz * proper handling of long lines when screen width changes * don't include soft line wrapping in #condump * omit the greeting message (credits, etc) in #condump 1.0.13: * handle broken terminals which report screen size of 0x0 a bit better * increase several fixed limits * bugfix: crash if a session is closed from an event or tick * drop support for single byte only compilation * yTin's pseudovars: _random, _time, _clock, _msec, HOME * #ctoi for Chinese numbers, taken from yTin * start month and yday from 1, not 0 (#localtime, #gmtime) * fix compilation without zlib. Fail such compilation with a help message if --disable-mccp is not given. * auto-remake function prototypes * bugfix: UTF-8 chars split by a packet boundary were mangled in the log. * SSL support (#sslsession). 1.0.12: * #localtime, #gmtime * bugfix: segfault on MCCP end (not exploitable) * bugfix: active session changes inside of compound commands didn't propagate properly * another stab at gnome-terminal and blue lines... * ansi2html: skip a character on unknown codes * necrocomputing -- support for BSD's iconv brain damage. Hey, guys, it's 2008, even _SCO_ does basic POSIX. * new BSD has grantpt() but no getpt() or /dev/ptmx, handle this 1.0.11: * bugfix: don't double the asterisks when typing in a password * turn PARTIAL_LINE_MARKER into a variable (not settable yet) * bugfix: -r starting with a non-letter * work around gnome-terminal's blue lines 1.0.10: * more transliterations, mostly for line-drawing characters * support for Form Feed and ANSI CLS * support for CJK double-width chars (TTY driver) * TTY driver: combining chars on output, still buggy on input * CJK and combining chars in #substr, #postpad and #prepad * bugfix: #prepad took the end not start of the string, as opposed to what the documentation said * use glib's g_slice instead of malloc if it's installed, it's insanely faster * allow "weeks" in #time * re-written from scratch ansi2html, using CSS instead of tables * bugfix: input and #logcomment were mangled in ttyrec logs * new #mess type: logging 1.0.9: * #ord as inline * MCCP compression * workaround for a gnome-terminal bug * 'make bin' target 1.0.8: * in the dumb terminal mode, "assphrase:" will trigger password protection as well * bare \r will turn the line into a draft, and thus cause it to be cleared when some new text appears * bugfix: pathologic action priorities were ordered wrong * #doactions, #dopromptactions * #chr, #ord, #hexord, bugfixes in UTF-8 parsing * bugfix: #textin with an empty line 1.0.7: * end-of-file ends KBtin when in non-fullscreen UI and no sessions are left * explicit -q or #verbose 0 hushes #read * UTF-8 support; likely to be buggy and/or incomplete (massive change) * IPv6 support * UI drivers support (specify -p or -i on command line) * some basic regression tests * #read ignores #! on the first line * history is no longer local to a session 1.0.6a: * bugfix: variables were not resolved in #log 1.0.6: * made commands case-insensitive, so #ALIAS works * bugfix: the prority of "6a" is supposed to come before "60" * made KBtin a more responsive to keyboard input when under a heavy load * #gagthis * made "#system something &" actually work * intelligent use of TCP_NODELAY * add a hook for closing KBtin for sessions started with -r/-s which didn't make any use of #hook * bugfix: #listlength * logging by >, >> and | * #condump won't insert unneeded background colour codes anymore * logging to .bz2 * #logtype * bugfix: highlights prevented prompts from being recognized as such * moved to automake1.9 1.0.5: * added a symlink kbtin -> KBtin to avoid mixed-case executable name while retaining old name as well * \e[39m, \e[49m * manual.html (just a converted version of the online help) * commands that don't work on an architecture are no longer accesible * outgoing 0xff bytes are sent as IAC IAC telnet sequences * the terminal string will cycle between "KBtin", "hardcopy", "unknown" and "KBtin-1.0.4" (conforming to RFC 1091) * if you undefine UI_FULLSCREEN in tintin.h, KBtin will be pipe- friendly; for use as a scripting language or for regression tests * telnet EOR sequences are allowed and treated as GAs * bugfix: unterminated TELNET IAC SB subnegotiations no longer cause a buffer overflow * bugfix: sometimes TELNET sequences were not carried properly over a packet boundary * cleaned up command line parsing, added -q, -c, -s and -r * a (too short) manpage added * axed the old BSD license with advertising clause from acinclude.m4, the only snippet we use is in public domain * window title in xterms * #undelay as an alias for #remove=#unevent * bugfix: \e[K and \e[D used to swallow some text * core dumps will now be properly generated when appropiate * #pretick * some tintin++ 1.86 compatibility: * #ifexists * #ifstrequal (=#strcmp) * #show_pretick (=#pretick) * bugfix: no more corrupted logs when KBtin gets killed by a SIGINT (^C) or a SIGHUP (disconnect) * \e[J clears the current line (\e[1J and \e[2J still don't work ok) * bugfix: #grep's regexp can now contain variables * terminal size data is now passed to the pseudo-terminals * bugfix: hangup if >29 sessions (oh well... :p) * bugfix: #act {blah} {#unact *} no longer causes an infinite loop * inlines: #grep, #match, #strcmp * pty handling code changed * consider \r to be an end-of-line char in #read, for M$-DOS files * workaround for dorky bg color handling in PuTTY and screen. Will slow down innocent xterm users, too :( * information about logging in #info * the echo for player's input has it's own color (#define ECHO_COLOR) * #collate * #expand * #hook/#unhook * all (?) flags are saved by #write and #writesession * You can use #delay with a delay of 0. * log only commands explicitely typed by the player * #logcomment * Use exec when invoking something using /bin/sh 1.0.4: * changes needed to compile on Tru64: * no "extern inline" * \e -> \033 * autoconf checks to test whether the code for inlined functions is actually generated * changes needes to compile on Cygwin: * checking for stropts.h Note: As opposed to UNIX systems, which all enjoy the whole functionality, KBtin is crippled on Win32 systems. Basically, while the core functionality works, #run, #system, #shell, #keypad, #suspend, gzip logging and COMPRESSED_HELP are broken. Hell, it won't even compile from the sources without your manipulation right now (no autoconf check to disable COMPRESSED_HELP). * #grep * #retain 1.0.3: * bugfix: color codes in programs spawned by #systems work correctly once again * removed Esc from editing keys * made it possible to #bind sequences containing Alt * added Alt-{<,>,B,F,L,U,C,Backspace,T} to the editing keys * #gauge renamed to #timecommand, and documented * bugfix: don't use pclose(), as we're not using real popen() * bugfix: #reverse 1.0.2: * bugfix: #send with no session * #gauge * #debuglog (not officially introduced as it's not finished yet) * bugfix: some commands ignored variables * proper handling of IAC IAC sequences * bugfix: '#<sesname> {command}' sent verbatim {}s. * bugfix: #message types were not propagated correctly to new sessions, that could crash KBtin * Nazi protection against too deep recursion. * bugfix: #path did something completely different than the docs said * added italic and underline as valid "colors" * when a session is started, it will inherit all settings from the currently active session instead of the null session 1.0.1: * a slight change of the logic of highlights being suppressed before/after alphanumeric characters * don't disagree when a server tells us they want to turn on echo, some MUDs take offense if we do * IRIX64 has no snprintf, cope with that 1.0.0: * first public release * the message prompting to read #news is disabled for this version 0.4.5: * man pages for ansi2txt and ansi2html * added ^P, ^N and ^U to the editing keys * $IDLETIME * #change * added tab as a valid separator between command and its arguments * changed all(?) error messages to use tintin_eprintf() instead of tintin_printf(). If "#message error" is on, eprintf will pierce even the !#verbose gag. * added ^A, ^E, ^F, ^B, ^T, ^K, ^W and ^Y, changed behavior of ^D on non-empty lines * bugfix: undefined non-alphabetic variables no longer cause expressions to fail * #send added in place of #verbatim <text>, so no #verbatim is not overloaded any longer * bugfix: resizing the window or using #status no longer screws up the display on SunOS * proper signal handling for systems where signals follow System V semantics * added support for BSD-style pseudoterminals, needed for run.c to compile on BSD systems 0.4.4: * #dogoto * bugfix: #ticksize 0, #ticksize 123blah * bugfix: #gag with invalid syntax was handled incorrectly * removed #strip, it was completely useless * bugfix: {* /}, {+ -}, {<= < > >=} evaluate correctly now * renamed log2{html,txt} to ansi2{html,txt} and actually bundled them with KBtin 0.4.3: * action/promptaction priorities are sorted in a semi-lexicographic order, so numbers sort properly * new #message type: error (to show error messages even if they would be otherwise hidden) * #verbose * the following flags are now local to sessions: verbose, verbatim, blank, echo, speedwalk, togglesub, presub and the #message toggles * shell-style "!!" history commands will now obey #verbatim 0.4.2: * bugfix: #writeses doesn't forget about pathdirs anymore * bugfix: #killall doesn't forget about binds (+plus a memory leak) * hash tables instead of lists for: variables, aliases, binds and pathdirs * #unpathdir * bugfix: lines of background color no longer appear on the screen * the list of commands is no longer hardcoded as a looong list of is_abrev()s; we use a generated hash table of code pointers instead * KBtin_help is now distributed in uncompressed form * protection against division by zero in #math and friends 0.4.1: * bugfix: #cr doesn't send two lines instead of one any longer * #atoi * #verbatim <line> * #strcmp 0.4.0: * TELNET protocol support. KBtin understands the following options: - ECHO (we attempt to turn off their echo) - SUPPRESS GO AHEAD - TERMINAL-TYPE (type sent is "KBtin") - NAWS (window size updated every SIGWINCH) * catching SIGCONT to redraw screen after being stopped * --More-- kludge. We now hide the input line by default once the remote end tells us to turn echo off, to protect passwords on non-English MUDs. * "make install" will install NEWS and KBtin_help.gz * TERM environment option in #run passed as "KBtin" 0.3.9: * multiple config files given from command-line when invoking KBtin * #sub {a} {b} works as old #sub {%1a%2} {%1b%2} * substitutes can trigger multiple times in a single line (#sub {a} {b} on "hahahaha" -> "hbhbhbhb") * bugfix: #action no longer segfaults * bugfix: changing the routes while in #goto won't crash KBtin anymore (we use the old data) * we send \r\n instead of \n, for compatibility with the telnet protocol (only for real sockets, of course) * the NEWS file is statted to tell if KBtin was updated since the last time you read it. BUG: the check will fail if several users share the same copy of KBtin 0.3.8: * changed tintin_puts2 to tintin_printf through the whole source * more verbose error messages in most cases * bugfix: #verbatim can be used in the middle of an alias * incomplete lines are no longer considered prompts if the background color is non-black at the end * promptactions fire on "blank" with nothing but spaces and colorcodes only if they're complete -- to prevent expensive processing of highlights and substituties * optimized set_variable * buffer-overflow checks in most functions * aborting commands in case of a buffer overflow (incomplete!) * #match doesn't substitute old values of variables in its command anymore (use $$1 to get them) * bugfix: #delay can be called from events without events disappearing * bugfix: write errors while logging no longer crash KBtin * #condump can dump log to a .gz file * changed configure.in to work with newer versions of autoconf * ESC[m properly recognized as ESC[0m * #shell * bugfix: \line before creating a session was improperly echoed * bugfix: tab (ASCII 09) characters no longer screw up linewrap * help.c now uses mypopen instead of popen to hide "Broken pipe" messages * workaround for systems with no *n*printf * ignoring errors on ioctl(TIOCSWINSZ) 0.3.7: * & added to the list of possible prompt chars * #sortlist * bugfix: no more segfaults in #write * #match * messages from successful calls of #system can be disabled by #mess #system * lines are joined together in #read only in case of a tintin-command * #decolorize 0.3.6: * parse.c didn't check for #unpromptaction! Aargh! * #char now accepts also ASCII characters >127 * all bindable keys scroll screen to the bottom of output * #gag and #ungag no longer touch regular substitutes * promptactions fire on complete lines as well * a quirk in VT100 standard: \n as 81th character in line should be ignored * bugfix: ${varname} with positional variables in varname * #dosubstitutes * #dohighlights * incomplete lines ending with one of: ?:>.*$#] are considered prompts and left there if the user types something * local echo shows color codes intact instead of changing color text * #run now sets the pseudo-terminal modes correctly. This means no double-echoing unless a stupid program like telnet changes the modes. * bugfix: #zap doesn't (hopefully) leave zombie processes anymore * tilde conversion in filenames: "~/" = home dir, "~user/" = user's home dir * #if substituted variables in its command part too early 0.3.5: * most commands substitute variables in their args * #help checks also the dir where KBtin binary resides * #removeevent can be used to remove #delays * #event and #unevent as other names for #delay and #remove * bugfix: #foreach no longer prepends space to implicit arguments 0.3.4: * KBtin now compiles with -Wall with almost no warnings (save for those related to ioctl and pseudo-terminals) * delayed variable substitution - FINALLY!!! * #foreach can now use positional parameters instead of simple append * spaces between the command and first argument are not ignored if it's a MUD command * statistics from multiple #reads are combined into one * split-line in #read * #map works again only on #pathdirs * bugfix: cannot delete the same action twice * bugfix: deleting an alias being executed 0.3.3: * $COLS and $LINES pseudovariables will give you the terminal size * >place as a shortcut for $loc>place * spaces before the command are no longer ignored * #strlen command and inline * #map now doesn't ignore commands which are not among #pathdirs * #log <name> now works properly if already logging * variable names can now contain digits and underscores * events no longer ignore '#message events' turned off (duh!) * #explode and #implode commands * #substr instead of #index * $PATH pseudovariable * help file added 0.3.2: * #index uses now 1-based indices (for consistency with other commands) * #select and old #foreach removed - variable names shouldn't be used for storing values! * #foreach command: iterating through a list * bugfix: #suspend now deals properly with terminal settings * bugfix: #system no longer screws up display if the command writes anything to the screen * #boss - removed, the input line will give you away anyway * #write and #writesession now write #gag instead of #substitute {-gag-} * bugfix: ~~ is no longer considered a color code 0.3.1: * ~fg:bg:blink~ color codes * ESC[nC * #promptaction command added * splitting long lines coming from MUD to prevent buffer overflows 0.3.0: * background and blink color codes (0..255) * rewriting last line of output to make actions guaranteed * more flexible time format * portable implementation of run.c 0.2.9: * #margin command added * actions, delays and binds ignore #verbatim * bugfix: ^D now works ok in #verbatim mode * #bind command added * bugfix: #blank should now work properly, fixing this bug improved KBtin's speed about twice BTW :-) * incoming ~n~ codes are changed to `n~ instead of working as a colorcode * unused listnode->pr fields now use 0 instead of allocating a string just to put "0" there (that was a waste of memory) 0.2.8a: * gz-logging 0.2.8: * bugfix: [Esc] works again * #write and #writesession now support routes * #writesession now writes also changed aliases/actions/whatsoever * multi-color highlights 0.2.7: * KBtin no longer uses the ncurses library! (major rewrite of user.c) 0.2.6: * fixed bug in simplify_list when an item is a single character Ex.: #splitlist head tail {a b c d} * fixed bug if an argument of an alias has embedded braces Ex.: #alias aa {#showme $1} aa {{a b} c d} * bugfix: #verbatim no longer crashes KBtin * no longer removing braces from the tail of the list in #splitlist Ex.: iterating through list 'a {b c} d e {f g}' * #deleteitems command added