I'll list my changes here, it's too much to put my name on everything I alter since I'm the sort of person that fixes stuff that isn't broken. I also removed quite some unused stuff. I'll keep it short and brief, hopefully still leaving a good gist of what I've been doing. feb 2004 - net.c added telopt negotiations in net.c for naws, terminal type, and mccp (version 2) - tintin.h added the zlib library and a session buffer for mccp - tintin.h added a 64KB output buffer, I'll just asume that the mud output contains a linefeed before BUFFER_SIZE is reached. This should make output processing a bit smoother, and saves me from fiddling too much with chopped up data. - rl.c added the tintin_printf and tintin_printf2 functions which format the argument list and pass the data on to tintin_puts or tintin_puts2 - tintin.h changed the node list struct to work with a head/tail pointer, and turned it into a double linked list, updated all .c files affected by this change. - *.c cleaned up the code, using tabs instead of spaces and aligning the brackets. - main.c switched from rand to rand48, it's seeded once upon startup which is sufficient. - main.c added a global tintin session (gts) the idea is to get rid of most global variables. - tintin.h added a bitvector to the session structure which will contain all session flags, various changes throughout the code changing global variables into flags. - rl.c fixed up the cursor positioning for split mode and fixed the linewrap routine which was off by 1 character, resulting in extra lines on a perfect match. added a special flag for mud output for split mode, to avoid color loss when restoring the cursor (which also restores the cursor color, hence the color loss) - tables.c new c file, which will contain some tables, the current setup is a bit tedious. - tintin.h moved all header files into tintin.h cause the old setup with 40 headerfiles was giving me a headache (literally). Grouped it into typedefs, globals, constants, macros, structures and functions - tintin.h changed all commands to use the COMMAND typedef, as well as all commands now use universal arguments and naming, this to make a command table. - *.c There's always a session now, with a few checks for gts (global tintin session) which cannot send or receive data. Passing session data along with a couple of functions which should make background sessions less spammy. - strhash.c Added a simple string hash routines which I'll be using for a scroll back buffer. It uses a bit of memory, but should save a lot more for big scroll back buffers. - main.c changed tstphandler to call kill with a null pid, otherwise it wouldn't work when tintin was started from a script - ivars.c removed backwards compatibility for fixedmath - buffer.c scroll back buffer and a grep command added - rl.c made the init_readline function actually initilize readline, added 4 default keybinds for the scrollback buffer. - tintin.h added a keymap to the tintin_data structure, which will be used for keybinding. - text.c got rid of the linewrapper in rl.c and added a word wrap routine instead. - log.c all vt102 codes cept the linefeed are stripped for logged data, the lowlog thingie can still be used. - chat.c Removed this entirely, it's a mess and there are many stand alone p2p chat programs available. - *.c moved some more global data to the session and data structures - rltick.c removed entirely - ticks.c removed entirely - tick.c wrote a new ticker from scratch, uses alarm(1) to sleep 1 second, the user can now define a list of tickers, pretty much like aliasses, they'll trigger when the timer expires. Added the 'tick' and 'untick' command for manipulation. - macro.c added 'macro' and 'unmacro' commands for keybinding, I couldn't figure out how to actually undo the real macro's though without using a messy hack, so I just skipped that till later for now. - session.c Got rid of the zombi code, will try to add a better connection handler at a later data, but the zombi code is not the answer. - tintin.h Changed architecture further turning the lists from individual lists into an array of lists. Added an array in tables.c for additional data. - substitute.c Changed the default #gag char from '.' to 'ÿ' this to prevent weird behavior when a dot is displayed on an empty line for any kind of reason. - config.c Added a configuration menu, defaults are loaded upon startup. - walk.c Removed, didn't really look into it deeply, but I adjusted path.c to allow user progged walking using a ticker. - parse.c Added 2 action checkers, first one checks priority 0 to 4, after that substitutions are checked, priority 5 to 9 is checked after substitutions. - parse.c do_one_line now strips colors per default before passing the text on to check_one_action - action.c rewrote the %0 - %9 check_one_action regexp routine, it's a bit cleaner and slightly faster now. - action.c rewrote substitute_vars, ';' is changed to : per default - variable.c rewrote subsitute_myvariables, no longer supporting $number variables. ';' is stripped per default. This also easily allows a change so variables can contain numbers. - variable.c #format {variable} {format} {arguments} This allows string formatting, numbers are not supported. Added a format parser for further functionality, for now %l will lowercase, %u will upper, and %r will reverse the argument given. There's a maximum of 10 arguments. - variable.c Due to the format command, prepad, postpad, tolower, and toupper are no longer required, so I removed the commands. I realise this generates a backward compatibility issue, but it's easier to find the new commands without 70 old commands spamming the help files and command lists. - split.c moved the split screen stuff from rl.c to this new file, and placed the prompt commands/routines there as well. mar 2004 - math.c Added a close to complete mathematical expression routine. Needs some work still but it works. Also allows for comparing strings <= >= == != if you enclose the strings in " ". It's quite a bit better than the old one, though it's not supporting T, F, and '!' since it's string based, shouldn't be too hard adding some better string support. - ivars.c stripped all the stuff that is now covered by math.c or variables.c only leaving #ifexits. And then it occured to me that #if {"$variable" != "$*"} {true} {false} would very well replace the 'ifexits' check. So ivars.c is no more. - llist.c deletenode_list now properly keeps track of a global update node. Can only use one noderoot->update per program state. - session.c cleanup_session now properly keeps track of a global update node. Can only use one gtd->update per program state. - rl.c fixed up the split screen behavior, should be a stable prompt and correct text presentation in split mode now. -misc.c added a higher precision to the #sleep command, you can now enter #sleep 0.5 to sleep for half a second, precision is in miliseconds. Also using nanosleep now, with additional support to continue sleeping -variables.c added %t to #format, which will print the epoch time. added %T to #format, which will print the military time of the provided number as: hours:minuts added %d to #format, which will print the military data of the provided number as: day:month:year (if there's no such thing as a military date I hope you still know what I mean) -rl.c set tintin to 100 loops per second, might seem too much, but it doesn't matter cpu wise, and it's always fun when tintin's triggers beat those of most other client. -math.c added + - ! and ~ to the mathexp interpreter. -regexp.c added color support. codes are entered as and is pretty much translated as : \e[a;b+30;c+40m with '8' counting as a skipped color code. People can write their own functions to make tintin display colors of their own choice. -variables.c added %R to #format, which will print a number between 1 and the given number in the argument. Removed #random command. added %m to #format, which will do the same as #math -regexp.c added option for end of line terminator ^ so adding ^ to the end of the line will make tintin return false if the regexp returns with an unfinished match string. -main.c I update the credit screen, figured it would appropriate to put my own name on it after all this work. I turned it into a helpfile while at it, #help credits should show it. -regexp.c made the substitute recursively double check variables and functions if they hold a variable of a different kind, useful for variables or functions holding color codes. -misc.c added ignore and debug commands, debug won't do an aweful lot as of yet though. -variable.c figured I should add some more color support, so added a way to format tintin color names, using #format %c {name} -variable.c #format again, %h will create a tintin header line -variable.c fixed how variable assignment was being dealt with in triggers, can now change and display variables correctly on the fly. -rlhist.c changed command repeation behavior, works as follows: who where score ! -> repeats the last command. !w -> repeats last command starting with "w" !who -> repeats last command starting with "who" removed the history command, no longer needed to look up the index, just a working short memory. added repeat on enter option in config -parse.c the command part of a line received by parse input has vars and functions substituted right away. If passing a command to another session the functions and variables are substituted as well, setting the values of the controlling session. -math.c Added the tintoi and tincmp functions, which are enhanced versions of atoi and strcmp. net.c Added some code to stop enters being written to the scrollback buffer, useful for people using #cr to bust a prompt. rl.c Got rid of the prompt saving stuff, now using brute force, refresh the prompt everytime the screen is updated. This to work around a bug in readline that gives odd behavior with cursor movement. parse.c made sure $variables are substituted in the parsing command, as well as $vars being substituted as session A passes a command to session B. Otherwise variables remain variable untill the final execution stage. llist.c Added nesting syntax highlighting for lists. math.c Added support for "T" and "F" (feature was lost in rewrite) math.c Added the 'd' operator for a random dice roll config.c rewrote some basic stuff in the configuration routines, the original setup was a bit dodgy. highlight.c Added priorities to highlighting substitute.c Added priorities to substitutions split.c Added check so a prompt isn't shown for background sessions. variable.c Added %R and %C to #format for nr of rows and columns apr 2004 misc.c removed speedwalk command, it's a config option anyways. jun 2004 log.c added variable substitution to *arg misc.c added variable substitution to *arg parse.c changed escape character behavior, #format will need %+4s instead of %4s if used in an argument or action. Used to be possible to use \%4s but that's no good. tinexp.c \a \e \n \r \t are now translated to the according characters. (\a equals what #bell does, \r\n would equal #cr, \e is ESC) parse.c removed premature stripping of '\' character in the parsing routines. Escaped characters are dealt with when data is send to the mud or screen. jul 2004 tintin.h added a room and exit structure for an auto mapper mapper.c added a creation functions for rooms and exits files.c added the #readmap function to read in a map mapper.c added a routine to display an ascii map mapper.c added an algorithm to calculate the shortest path between two rooms main.c the verbatimchar is set as \\ instead of \ as default, this to allow escaping braces at a later date with this config option causing trouble. aug 2004 mapper.c added the redit command, for basic mapper manipulation, still needs a bit more work. telopts.c Added a telnet patch from Julia Longtin, see MODS.juri making a couple of modifications. Main one being instead of a 'telnet flag' tintin tries to initialize a telnet session when connecting to port 23. rl.c Seeming the readline_echoing_p is reset to TRUE whenever something is written to the terminal, so I simply set it to whatever it should be several times a second now in the main loop. sep 2004 log.c Fixed a typo that broke the log command, as well as adding newlines to plain logging. rlhist.c one letter commands are no longer added to the history. oct 2004 math.c Fixed a crash bug that slipped in tinexp.c Set \[ to escape as { and \] to escape as } main.c Now setting application keypad mode and ESC 0 prefix on startup telopt.c Changed dont_oldenviron response to wont_oldenviron response, reported to fix the ability to login on some server types. files.c Added the option to comment using /* comment */ in script files. math.c Upgraded to do 64 bit instead of 32 bit operations. variables.c Added the replacestring command. mapper.c Added the function find_coord, which tries to find a room at the given coordinate, starting room being 0,0,0 dec 2004 net.c Fixed a crash bug that slipped in with hiding passwords. net.c Commands are now added to the buffer/log files while in split mode. highlight.c Fixed bug with variables and functions not being used. Finished highlight code, it no longer messes up old colors. tinexp.c Now only converting ; to : for actions, not for aliasses etc. path.c Made END OF PATH message triggerable. variable.c added the do_internal_variable command, which does the same as do_variable, but allows to set a blank variable. Used by do_format and do_replacestring. rl.c added the show_message function which only shows messages from setting aliasses, variables, etc when called from the command line, unless debug is enabled. rl.c Now using the more_output buffer previously only used by the scrollback buffer to double check actions. feb 2005 tick.c Took care of uninitalized tickers firing prematurely. session.c Added option to make a trigger on session termination. files.c Added a check for #read being used on a directory. rl.c Fixed home/end keys being bound correctly split.c Allowing multiple prompt triggers to fire on the same line Fixed split line being 4 '-' short split.c Fixed infinite loop in do_unprompt rl.c Added the option to call show_message() with a NULL argument for more generic usage. tintin.h Set BUFFER_SIZE to 10000 OUTPUT_SIZE to 65000 and FILE_SIZE to 150000 files.c Added option to #read and #write using a variable buffer.c Fixed some dodgy behavior of the scroll back buffer, it should scroll ultra fast as well now. The buffer command now only prints the last screen worth of text, too lazy to re-code floating screen indexes atm. Added scroll lock to the config menu, to freeze the screen while scrolling. march 2005 rl.c mainloop now uses a threaded call for the old mainloop. This because the readline() function is blocking and I'm too lazy to code the stuff readline takes care of. The new mainloop tries to go at 100 loops per second. session.c Got rid of connect_delay for connecting sessions. Now using 1 timer. tick.c Changed #ticker to use floating point precision. Added delay command: #delay {seconds delay} {command} variable.c #format, added %L to print the argument's string length, and %U to print the number of micro seconds since epoch, increased the number of arguments from 10 to 20. misc.c Removed the #sleep command, never worked well and should be obsolete with the #delay command. misc.c #gagline, when called within an action it will gag the line. rl.c The #snoop code wasn't working, fixed it up. llist.c Increased the buffer of show_list a little to avoid an overflow macro.h Changed how macros work, fixing problems like needing a \n at the end, needing an empty line, macros being added to the command history. Still can't find a way to have rl erase macros. Players can enter a command within a line of text using [[ command ]]. Example: tell bubba (long line) [[chat hi bibbi]] (more text) rl.c Added the option to delay displaying and parsing possibly broken packets. Delay in micro seconds can be set with the PACKET PATCH config option. By default it's set to 0 (disabled). variables.c Fixed #replacestring which got messed up while I added variable substitution to it. rl.c Fixed echoing of commands in split mode. Makefile.in Adding -lncurses per default now, someone reported this to cause cursor problems if not included by the auto config. split.c Changes split and prompt to work more logical, people might have to change their scripts, new syntax: #split {number of top lines} {number of bottom lines} default equals: #split {0} {1} Fixed possible color bleeding in the split line, this for noobs who don't know how to use tintin's color codes. files.c /* and */ now only work when used outside braces. rl.c No more threading, made tintin crashy as well. variable.c Added %n (name) to #format, which capitalizes the first letter of the given string. buffer.c No longer resetting the buffer if the new scrollback size is the same as the old one. rl.c prompts automatically get a newline added in split mode. session.c Fixed problem with aliasses changing focus. rl.c Made #snoop output non triggerable. misc.c Added the $loop and $forall variables set in the #loop and #forall commands. Avoids dodgy &0 behavior in #functions. telopt.c Added dynamic allocation of buffer space for mccp and the normal output buffer. rlhist.c 1 character long commands are once again added to the command history. files.c If a bracket is missing TinTin gives a hint at what line the error might be. tinexp.c Added option to surround a variable with brackets. variables.c Removed restrictions on variable names. math.c Fixed bug with #if returning the wrong session pointer. log.c Added #logline command for actions to log 1 line of text rlhist.c If no repeat match is found an error message is printed. parse.c Added a check to ingore a trailing ';'. llist.c Increased buffer size for displaying aliasses. config.c Changed packet patch config option from micro to milli seconds. files.c Changed calls to isblank() (GNU only) with isspace() files.c Only stripping leading spaces now, so #var bla { } will work once again. files.c I got tired of confusing readnew and readold, so I removed readold. april 2005 log.c Added the option for a second argument to the #logline command. If second argument is used it will instead print the given line to file. variable.c Added %G thousandgroupingstring function to format to change for example 1000 into 1,000. rl.c Internal messages are now printed to both the logfile and scrollback buffer. rl.c Fixed internal messages bumping the screen while scrolling in locked mode. rl.c Fixed a bug with displaying text that slipped in. buffer.c Added the option to use #buffer h/u/d/e for scrolling. tintin.h Removed unused macro DEFAULT_FILE_DIR utils.c utime() function doesn't work correctly on cygwin, changed it's behavior to guarantee unique time stamps. buffer.c No longer writing #grep output the the scrollback buffer main.c Now clearing last command (often quit) when starting up tintin++ config.c Turned #debugtelnet command into a hidden config option. Added a hidden config option named CONVERT META, which turns key presses into macro readable keyboard input. class.c Added basic support for classes, which is grouping for real. tables.c Set substitute priority to save correctly. log.c Now flushing the log stream after every call so tailing a log file is an option. class.c Finished the #class command. split.c placed #prompt stuff in prompt.c tinexp.c Added option to start a trigger with ~ in which case colors are included in string comparisons and substitutions. buffer.c Removed the #writebuffer command, must now use: #buffer {write} {filename} tintin.h Now using strtoll instead of atoll since old platforms only support strtoll. telopt.c With #config {CONVERT META} set to ON mud output will have it's meta characters translated, this to aid in making color triggers. split.c Using #split 0 0 will create an input line without the split line. Useful for people who don't use #prompt. may 2005 rl.c Fixed a bug that caused prompts to be printed twice. debug.c Fixed possible crash from overloading the debug stack. variable.c Added #debug messages for #replacestring and #format. split.c Fixed various #split bugs when creating or switching sessions. buffer.c #buffer {i} will now give some info about the scrollback buffer. tick.c #delay now works in the startup session. Tickers are still disabled. class.c #class read , now only reads in stuff that belongs to the given class name. Hence in order for this to work you need #class open, and #class close, calls in the file itself for this to work. help.c Removed David Chan from the credit screen shown when starting up TinTin++. I'm sure he had the best intentions, but he should have let more capable persons develop instead of spending two years making 6 minor changes, fiddling with variables, adding patches written by others, and stuffing his name in the credit list before vanishing into thin air. rl.c Now adding all keyboard input to the scrollback buffer. rl.c When in #split mode with no #prompt defined tintin tries to mimic normal behavior, which includes placing input at the end of the prompt. prompt.c #prompt matched lines are now written to the scrollback buffer, to simulate the old behavior make an #action executing #gagline. main.c Fixed #split mode being handled correctly when suspending a session. llist.c Removed excessive color usage when displaying triggers which was resulting in crashes. rl.c No longer clearing the screen when exiting tintin++. table.c Added flags for commands, so far only automatically substituting variables and functions for commands that have the sub flag. rl.c Fixed packet patch, and added a default patcher for split mode. Fixed the displaying of #alias, #action, etc. files.c Added #scan {filename} which will read in a file and send it to the screen as if it was send by a mud. This allows one to view raw color logs, turn on logging and save the file in a different format, as well as adding gags and other text filters to make things more readable. I set the default logging mode to raw since ansi log files can now be converted to html ones. llist.c updatenode_list was acting odd, fiddled with it till it stopped crashing. Not sure what the problem was. macro.c Added prompt handling for macro's. Still not perfect. scrsize.c Fixed resetting of split data when resizing the screen. split.c Now drawing split lines on all static regions to increase clarity for newbies. misc.c Can now use #showme {text} {row}, with a row number given #showme will act like #prompt. misc.c Can use #echo {{format} {row}} {{arguments}} as well. rl.c Fixed #snoop messing up in #split mode. parse.c Got rid of the code seperating high and low priority actions, no longer valid with the #gagline command. antisubstitute Removed antisubstitutions since there seems little reason to ever need them. rl.c Checking internal messages for prompt gags now june 2005 files.c If the bracing level is off in the last line tintin reports the correct line instead of 0. rl.c reading the default readline init file when leaving tintin. Should help with a couple of shells not handling this properly. echo.c removed some experimental code that ended up causing double echoing when switching between sessions. split.c fixed screen switching for muds with native vt102 interfaces. session.c added #session {-|+|number} options to switch between sessions. files.c no longer showing output while using #scan to speed things up for huge log files. misc.c Added #return which used in an #if check allows bailing out of a semicolon seperated command string. If used in a #function you can also add an argument to it to set the result, as opposed to setting the $result variable directly. llist.c Added option to use 'all' in #message, #ignore, and #debug to toggle everything at once. files.c Removed the #writesession command, it's obsolete with the new #class command. class.c #class write now adds #class open/close to the begin and end of the file. files.c Cleaned up a bunch of confirmation messages and made them gaggable. tab.c Variables and functions in a #tab are now substituted at evaluation time. tinexp.c Now substituting functions and arguments (if needed) in a function's argument list. tinexp.c Ending a command with \ will escape the EOL (\r\n) which won't be appended to the end of the line. Same story for #showme. telopt.c Added negotiating of EOR (end of record) telopt.c IAC GA and EOR will now be seen as prompt markers. files.c Now skipping chinese characters in #read August 2005 tinexp.c Fixed some bugs in substitute that slipped in. tinexp.c Added skipping of chinese characters in regexp functions. llist.c Fixed crash bug with killing classes function.c Fixed an issue with #return in fuctions stopping the execution of multiple commands. rl.c pressing control-c while connecting will abort the connection instead of exiting the program. chat.c Added back the chat module that was originally included with version 1.86. I pretty much rewrote it while at it. configure BIG5 configuration was giving me issues on slackware. Since I didn't feel like figuring out how the script works I changed it from --enable-big5 to --big5 and fiddled with the script till it seemed to work again. September 2005 - 1.95.5 chat.c Added some extra chat functionality: paste, serve, forward, ignore and peek. tinexp.c Fixed parsing of function arguments some more. array.c Added #list command with basic list support. - 1.96.6 chat.c Added multi threading for opening new chat connections. parse.c Added protection for infinite loops. utils.c Added hex_number translation function. tinexp.c Can now use \x?? where ?? is a hexadecimal number. *.c Changed usage of \e with \033 since \e isn't supported on all systems. misc.c #debug all log, logs debug info without displaying it. Makefile.in make install now copies tt++ to /usr/bin parse.c Can now disable verbatim mode after enabling it. tables.c Got rid of unneeded table size for the command, help, and config table. variable.c Added %D %M %Y options to print the day month year misc.c Added parse command to parse strings misc.c Fixed double variable substitution for #echo - 1.95.7 main.c Added a command reference table to speed up the processing of commands slightly. tinexp.c The body of a by braces surrounded variable name will be substituted now, allowing variables as variable names. parse.c No longer sending message spam when using an alias buffer.c Fixed a long standing crash bug in the buffer cleanup routine. tinexp.c Now matching arguments in triggers like the old tintin did. This will interfere with a couple of triggers but shouldn't be too big a problem. %0 to %9 will capture the smallest possible amount of text instead of the biggest. telopt.c IAC EOR and GA spams are dealt with better with {debug telnet} enabled. telopt.c Dealing with packet fragmentation in the odd case an IAC EOR or GA code is split, not sure if it works since it's hard to test. - 1.95.8 buffer.c While the concept works the code should be more solid. Fixed some bugs in the buffer code causing scrolling to crash on long help files. buffer.c Added a #buffer lock option which resembles scroll lock. log.c Fixed a bug in #log append which caused it to not generate html headers. chat.c Modified the threaded chat functions to minimize accessing global data. chat.c Fixed formatting bug causing chat messages containing %s to crash the client. chat.c #chat who now shows user flags parse.c Removed old code that allowed using " " instead of { } in a couple of commands such as #format. While I used it in some example scripts the code is causing problems. llist.c Can now use #unmacro by exactly matching the macro instead of having to use \\ for a single \. input.c TinTin now enables character mode with echo off and SGA enabled. - 1.95.9 input.c Fixed some bugs in the character mode support. misc.c Placed the functions in alphabetic order and added #SEND which will send the given argument directly to the mud. Useful for sending escape sequences because you cannot start a mud command with an escape sequence. scrsize.c If in character mode tintin depreps the terminal temporarily when sending NAWS. Yet another annoying readline bug. chat.c Added DND (do not disturb) feature. When enabled tintin will no longer accept new chat connections. Fixed a bug in the DNS lookup routine for addresses starting with a number. Can now chat to people by entering their ip address. Useful to deal with auto ip bans. parse.c Complex multi words aliasses are now possible. llist.c Priority lists are now sorted alphabetically per priority level class.c #class class read no longer parses files for the given class. The code was too messy to maintain. Instead it'll open the class, read the file, and close the file. alias.c Added support for complex multi word aliasses. chat.c Added #chat public option, accepts the all argument. chat.c Added #forward all which included session output chat.c Added #color which sets the default color chat.c Added a boost option for #chat accept to quadruple download speeds, might cause file corruption on bad connections. class.c Rewrote some code, #unclass should work now. llist.c Issueing #tick {name} twice will now reset the ticker. math.c Fixed invalid input handling. misc.c Snooping a non existant session no longer crashes tintin. April 2006 - 1.96.0 llist.c Rewrote #killall to accept arguments to kill specific lists. chat.c Added #chat unitialize. chat.c Added basic support for group chats. chat.c Added support for colored names. highlight.c Fixed crash bug for invalid highlights. class.c Fixed crash bug with #killall related to classes. chat.c Added #chat send which allows sending custom chat commands. chat.c Fixed link lost crash bug. June 2006 - 1.96.1 misc.c Fixed a spacing issue in do_showme. mapper.c Fixed map drawing. telopt.c Fixed telnet negotations to login on ISCA BBS. math.c Commas are now stripped from numbers. math.c Added support for floating point math. tick.c Can use 1d10 etc for the times in #delay. main.c Added -h and -e as startup options. August 2006 - 1.96.2 variables.c Removed #getitemnr, obsolete with the #list command. variables.c Removed #getlistlength, obsolete with the #list command. variables.c Removed #removestring, obsolete with the #replacestring command. math.c Added tineval to properly evaluate == and != chat.c Now setting NONBLOCK on the chat port due to reports about disconnects hanging tintin. config.c Added #config {log level} {low|high} which is a hidden config option. Defaults to high, when set to low tintin will log the raw mud output. October 2006 - 1.96.3 telopt.c Updated telopts to login on globalvillage bbs. buffer.c Added buffer find option, which works much like grep but instead places the scrollback buffer at the given search string. tinexp.c Can now add lists of keywords between square brackets divided by seperators, for example [his|her|its] in actions. The actual text is stored in the next %0-9. Cannot be used for highlights. array.c array_fnd function allows searching for words in lists. path.c can now save loaded paths backward. November 2006 - 1.96.4 class.c classes are now properly inherited from the main session. misc.c fixed chinese character issue with #parse. parse.c fixed parsing issues introduced in 1.96.3. mapper.c debugged and updated alpha mapping code to beta. tables.c added a mapping related sub-command table. December 2006 - 1.96.5 buffer.c fixed up color handling of commands. *.c Put on my dirty boots and annihilated all lib readline related stuff. Readline sucks donkey balls. You can quote me on that. terminal.c Merger of echo.c and scrsize.c terminal.c Added init_terminal to force character mode for input handling. terminal.c Added custom screensize handling. rl.c Now forwarding data on stdin to input.c input.c Added basic command parsing options. history.c Added tintin-esque command history support. cursor.c Deals with cursor handling for input.c tables.c Added a command table for cursor.c cursor.c Added support for some readline-esque input handling. tab.c Added my own (improved) tab handling. tab.c Moved tab handling to cursor.c vt102.c Made some improvements to the VT102 support. cursor.c Added history browsing with up, down, ctrl-p and ctrl-n. Made some minor improvements over the readline version. utils.c Added ins_sprintf function that properly inserts a string within another strong. Has formatting capabilities. input.c Added process_input as the main input function. input.c Added read_line function for default command parsing. input.c Added read_key function for character mode. main.c Moved suspend and exit functions to main.c main.c Fixed #suspend handling. split.c Now adjusting NAWS when changing split screen. cursor.c Added do_cursor for using cursor features in macros. history.c Added do_history for history manipulation. rl.c Moved to update.c *.c Tintin is now officially lib readline free. Good riddance. The binaries are 40% smaller. tinexp.c Added 256 xterm color support using to with rgb values. Background colors are set with to tintin.h Added gtd->flags for global flags instead of using cludgy flags on gts->flags. cursor.c Added cursor_redraw_line routine which adds readline input scrolling behavior. Tintin will probably work quite poorly on non VT100 terminals now. tables.c Added list flags to work around the fact that I use lists for stuff they weren't originally intended for. Updated list parsers throughout the source code. main.c Added a signal handler for SIG_TSTP to handle ctrl-z smoothly. input.c Escaped unmatched sequences are now automagically meta converted. cursor.c history prev and next can now be used in combination with the history search function. mapper.c Improved map drawing by using virtual coordinates. mapper.c Added a flag to enable vt graphics mode. A hopefully universal legenda is: 250 223 222 200 220 186 201 204 221 188 205 202 187 185 203 206 246 mapper.c Added a flag to draw 6x3 ascii graphics which allows displaying rooms going ne, nw, se, sw, u, and d. misc.c Can no longer use commas in #loop. When using 1 argument with #loop it's assumed misc.c Can now use math in delays, as in #delay 1d5 smile. mapper.c Added the void roomflag which can be used to turn rooms into links. This is mainly useful to fit overlapping areas on the same map without using the hide flag. December 2006 1.96.6 cursor.c Fixed behavior of ctrl-e for osx. log.c Fixed newly introduced crashbug with #logline highlight.c Now parses <###> color codes to allow for 256 colors. function.c Can now use undescores in function names. tables.c Added map list for #map undo and message handling. main.c Added pathdirs for diagonal exits and spatial coordinate info. mapper.c Now using spatial coordinates from pathdirs. This requires users to reset their saved pathdirs. If used correctly mapping should work for muds with a non standard exit system. mapper.c Added movement history for #map undo mapper.c Updated #map undo to use the map movement history cursor.c Fixed bug in ctrl-e behavior misc.c Removed old debug message in #send. mapper.c Added room symbols. mapper.c Added #map set to set various attributes mapper.c Added #map get to get various attributes and store them as variables. mapper.c #map walk {location} {0.5} will now run to the location with 0.5 second delays between commands. input.c Added input_printf for consistent echo handling tables.c Added generic variable and function substitution for #map input.c Now checking for negative characters when converting meta characters. Should fix issues when creating macros with swedish and german characters. buffer.c Can now use #buffer f with negative numbers to find the first instead of last occurance of a string. Also made the no match found string triggerable. mapper.c Can now use case insenstive room finding with wildcards in #map find and other room search related commands. tintin.h Placed lists in alphabetical order. event.c Added a basic event system, check #event January 2007 1.96.7 mapper.c Fixed fast forwarding shortest path searches through void rooms. mapper.c Fixed #map link not deleting old links. mapper.c Fixed drawing of void rooms. help.c Added a cleaned up version by Simon. cursor.c History next and prev now put the cursor at the end of the line. gag.c Seperated gags from substitutions. files.c Inproved accuracy of #read's error report. path.c Merged all path commands into one generic path command. March 2007 1.96.8 main.c Added getopt supported command-line argument handling. main.c Added [-t title] option to set the title bar. files.c Now stripping all trailing spaces and tabs in #read. utils.c Added show_debug command to display debug messages a bit easier. net.c Added IPv6 support. cursor.c Added cursor_echo function to toggle local echo. cursor.c Added cursor_insert function to toggle insert mode. tinexp.c Using $variable[index] now works with lists. variable.c Can set list indexes with #var {variable[index]} {text} March 2007 1.96.9 array.c Added #list {list} clr option to empty a list. array.c Added #list {list} srt option to insert in alphabetic order. parse.c Defined a COMMAND_SEPARATOR variable instead of ';' checks. utils.c Fixed some display issues for #showme and untriggered prompts in split mode. session.c Now uses #session {name} {host} {port} tinexp.c Can now use %0 (all args) and %1 to %9 in functions.