tt/0000750060175006010010000000000013412676700010743 5ustar eigenaarNonett/COPYING0000664060175006010010000004313013343017612012000 0ustar eigenaarNone GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. tt/CREDITS0000664060175006010010000000373013343017612011767 0ustar eigenaarNoneSpecial thanks to the following ------------------------------- Peter Unold The original TINTIN III Jeremy C. Jack see mods/1.5.mods Bill Reiss see mods/1.5.mods David A. Wagner see mods/1.5.mods Harald Evensen Many bug insights David Hedbot Original GNU autoconfig Andrew Chernov FreeBSD bug fixes Jim Goddard SOCKS #ifdefs Greg Jarman Original #if code Peter Kjellerstedt see mods/pkj.mods Sean Butler see mods/xin.mods Original #chat code Robert Ellsworth see mods/rse.mods Sverre Norrman see mods/dsc.mods mods/svr.mods Davin Chan see mods/dsc.mods Chitchat see mods/dsc.mods Kuang-che Wu see mods/dsc.mods Yoon-Chan Jhi see mods/dsc.mods mods/ycj.mods Igor van den Hoven see mods/igr.mods Julia Longtin see mods/igr.mods Telnet enhancements Bryan Turner see mods/igr.mods Mapper enhancements David Champion see mods/igr.mods Solaris forkpty fix Ben Love see mods/igr.mods Tab enhancements Adam Borowski see mods/igr.mods SSL implementation Modification History -------------------- 1.5.mods jan 1994 jan 1995 pkj.mods apr 1997 may 1997 xin.mods dec 1998 jan 1998 rse.mods aug 1998 mar 1999 dsc.mods oct 1999 oct 2001 igr.mods feb 2004 Current Tintin++ Development Team --------------------------------- Igor van den Hoven - mudclient@gmail.com The email must contain either tintin, tintin++, mud, or client in the subject or message, otherwise it may not get forwarded to my main email account. tt/docs/0000750060175006010010000000000013406427730011673 5ustar eigenaarNonett/docs/chat_protocol.txt0000664060175006010010000002043513343017613015302 0ustar eigenaarNoneMud Master Chat Protocol Establishing a Connection Caller: Once a connection is made the caller sends a connection string; which looks like: "CHAT:\n". The sprintf syntax is: "CHAT:%s\n%s%-5u". The port must be 5 characters, padded on the right side with spaces. Once this string has been sent it waits for a response from the other side. If a "NO" is received the call is cancelled. If the call was accepted the string "YES:\n" is received. Receiver When a socket call is detected it accepts the socket then waits for the "CHAT:" string to be send from the caller. If the receiver wishes to deny the call, the string "NO" needs to be sent back to the caller. To accept the call, the string "YES:\n" is sent back. Chat Data Blocks A chat data block looks like this: . All data dealing with needs to follow this format with a couple exceptions. The connection process doesn't use the data blocks and the file transfer blocks are a fixed size and don't need the byte. Default Port The default port should always be 4050. Below is a list of the values: #define CHAT_NAME_CHANGE 1 #define CHAT_REQUEST_CONNECTIONS 2 #define CHAT_CONNECTION_LIST 3 #define CHAT_TEXT_EVERYBODY 4 #define CHAT_TEXT_PERSONAL 5 #define CHAT_TEXT_GROUP 6 #define CHAT_MESSAGE 7 #define CHAT_DO_NOT_DISTURB 8 #define CHAT_VERSION 19 #define CHAT_FILE_START 20 #define CHAT_FILE_DENY 21 #define CHAT_FILE_BLOCK_REQUEST 22 #define CHAT_FILE_BLOCK 23 #define CHAT_FILE_END 24 #define CHAT_FILE_CANCEL 25 #define CHAT_PING_REQUEST 26 #define CHAT_PING_RESPONSE 27 #define CHAT_PEEK_CONNECTIONS 28 #define CHAT_PEEK_LIST 29 #define CHAT_SNOOP_START 30 #define CHAT_SNOOP_DATA 31 #define CHAT_END_OF_COMMAND 255 The byte is 255: When a user changes their chat name the new name needs to be broadcast to all of their connections. The sender requests connections from another connection asking to see all the people that person has marked as public, then try to connect to all of those yourself.
,,
, The receiver needs to put all the ip addresses and port numbers in a comma delimited string and send them back as a connection list. Used to send some chat text to everybody. All the text you want to be displayed needs to be generated on the sender's side, including the line feeds and the " chats to everybody" string. Receiver: If the chat connection isn't being ignored, you simply print the string. If you have any connections marked as being served you need to echo this string to those connections. Or if this is coming from a connection being served, you need to echo to all your other connections. This allows people who cannot connect directly to each other to connect with a 3rd person who *can* connect to both and be a server for them. This works the same way as CHAT_TEXT_EVERYBODY as far as what you need to send. The text should obviously be changed so the person receiving knows this was a personal chat and not broadcast to everybody. "\n%s chats to you, '%s'\n" Receiver: Just print the string that comes in if you aren't ignoring this connection. Used when you send text to a specific group of connections. Works basically the same as the other text commands. The group name is a 15 character string. It *must* be 15 characters long, pad it on the right with spaces to fill it out. "\n%s chats to the group, '%s'\n" Receiver: Just print the string that comes in if you aren't ignoring this connection. This is used to send a message to another chat connection. An example of this is when you try to send a command (action, alias, etc) to another chat connection and they don't have you flagged as accepting commands. In that case a chat message is sent back to the sender telling them that command are not being accepted. To let the other side know the message is generated from the chat program it is a good idea to make the string resemble something like: "\n %s is not allowing commands.\n" Receiver: Just print the message string. This is used to send your client's name and version. This is sent to start sending a chat connection a file. The filename should be just the filename and not a path. Length is the size of the file in bytes. Receiver: First should check to make sure you are allowing files from this connection. Make sure the filename is valid and that the length was trasnmitted. MM by default won't allow you to overwrite files; which keeps people from messing with file already in your directory. If for any reason the data isn't valid or you don't want to accept files from this person a CHAT_FILE_DENY should be sent back to abort the transfer. If you want to continue with the transfer you need to start it off by requesting a block of data with CHAT_FILE_BLOCK_REQUEST. This is used when a CHAT_FILE_START has been received and you want to prevent the transfer from continuing. is a string telling the reason it was denied. For example, if the file already existed you might deny it with: "File already exists." Receiver: Print the deny message. Deal with cleaning up any files you opened when you tried to start the transfer. Sent to request the next block of data in a transfer. Receiver: Need to create a file block to be sent back. File blocks are fixed length so they don't need the CHAT_END_OF_COMMAND byte. If the end of file is reached need to send a CHAT_FILE_END close up the files and let the user know it is done sending. A file block is 500 bytes. A file block is ALWAYS 500 bytes so no CHAT_END_OF_COMMAND should be added. Receiver: The receiver needs to keep track of the number of bytes written to properly write the last block of data. If you keep track of the bytes written you know when to expect that last block that probably doesn't have a full 500 bytes to be saved. File transfers are receiver driven, so for each block of data you accept, you need to send another CHAT_FILE_BLOCK_REQUEST back out to get more data. Close up your files and be done with it. This command isn't required for TinTin since it keeps track of the file transfer progress itself. Either side can send this command to abort a file transfer in progress. The timing data is up to the ping requester. TinTin sends a 64 bit time stamp. Send back the timing data is the data that was sent with the CHAT_PING_REQUEST. The sender requests connections from another connection asking to see all the people that person has marked as public.
~~~ The receiver needs to put all the ip addresses, port numbers, and names in a tilda delimited string and send them back as a peek list. The sender requests to start or stop snooping data from a chat connection. The Receiver decides whether to allow snooping or not. Send by a client in snoop or forward mode. The message should be echoed by the receiver, but not be further forwarded to avoid infinite loops.tt/docs/ssl.txt0000664060175006010010000001016013406427730013242 0ustar eigenaarNoneSERVER CONFIGURATION -------------------- No changes are made to tintin or script configuration. The plan is to tunnel an SSL connection to your #port or #chat port. One problem is that redirected connections will appear to originate from localhost. Fortunately tintin can handle this if needed. You'll need to install the 'stunnel' package or download it from the www.stunnel.org website. There is a Windows version of stunnel with essentially the same interface. You'll also need the 'openssl' package. If you do this on Ubuntu the package might install the command as stunnel4 while stunnel calls stunnel3. Be mindful of that. Create a directory to store the certificates, and the stunnel config file. Create a self-signed certificate using openssl. For more info see: http://www.stunnel.org/faq/certs.html Switch to the directory where you want to store the certs, and then run the command to generate a self-signed cert: openssl req -new -x509 -days 3650 -nodes -out stunnel.pem -keyout stunnel.pem It will prompt you for some information. The only thing you really need to change from default, is the Common Name entry, which you should specify the full hostname of your server, for example: server.domain.com Do not enter a passphrase for the cert, otherwise you will be prompted to enter this passphrase every single time you start stunnel. Run chmod 660 stunnel.pem Stunnel will fail if the permissions are not correct on the file. Create the config file for stunnel4, for example tinssl.conf, and use the following contents, adjusting where necessary: Code: [Select] foreground = no pid=/home/user/.tintin/ssl/tinssl.pid [tinssl] accept=4051 cert=/home/user/.tintin/ssl/stunnel.pem key=/home/user/.tintin/ssl/stunnel.pem client=no connect=localhost:4050 The foreground option - change this to 'yes' to keep stunnel in the foreground initially. Useful to see errors. Specify the pid to a writable path, or set it to "pid=" for no pid file. If you don't know what a pid file is you can leave it blank. The segment headed by [tinssl] is the service entry. The name is arbitrary, and there can be multiple entries if you want more tunnels. "accept=4051" is the port for stunnel to listen for connections. "client=no" is software default - this specifies a server connection, so stunnel must listen on 4051 for SSL connections. "connect=localhost:4050" This specifies where stunnel will direct the incoming SSL connection. In this case, to tintin's default chat port. Now run: stunnel4 tinssl.conf It should disappear into the background, or if you set foreground=yes, you will see the basic log. Run "ps -aux|grep stunnel" to verify that stunnel is running. There will probably be around 4 processes running (For some odd reason). For Windows, you should have an icon in the system tray. With tintin you can now connect to the port using the #ssl command. To connect to a chat port you'd have to run the connetion through another stunnel proxy. If there are problems check the logs and verify you opened the port on your firewall, etc. CLIENT CONFIGURATION -------------------- If you want to use an SSL connection over #chat you can set up stunnel in client mode to connect to your new SSL proxy. In this case we'll use Windows, but it's virtually identical on any supported platform. Install stunnel for Windows. Edit the stunnel config from the convenient menu entry. Leave everything as is, and add a service entry at the bottom of the file: Code: [Select] [tinssl] accept = 12345 connect = server.domain.com:4051 client = yes "accept=12345" is the LOCAL port for stunnel to listen on. "connect=server.domain.com:4051" is the SSL server to connect to, in this case, your newly configured stunnel on your host server. "client=yes" This is important, stunnel will NOT work properly if you do not set client=yes here. Run stunnel, and you will get a new icon in your systray. You can right-click it and 'View Log' to see what's going on, if you like. Run tintin and create a sessuib connection to localhost, port 12345 (or whatever you configured). You should be momentarily connected to the given ssl port. Special thanks to Vilentus for the original documentation.tt/docs/tintin19.txt0000664060175006010010000002657613343017613014135 0ustar eigenaarNone ooooooooooo ooooo oooo oooo ooooooooooo ooooo oooo oooo 88 888 88 888 8888o 88 88 888 88 888 8888o 88 888 888 88 888o88 888 888 88 888o88 888 888 88 8888 888 888 88 8888 o888o o888o o88o 88 o888o o888o o88o 88 ooo ooo 888 888 oooo888oooo oooo888oooo 888 888 888 888 Original documentation by Peter Unold Table of Contents ----------------- 1) What is TinTin++? ............................. 2) Giving Credit Where Credit is Due ............. 3) Starting TinTin++ ............................. 3) Basic Features ................................ 4) Connecting to a MUD ........................... 5) Split Screen .................................. 6) Aliases ....................................... 7) Actions ....................................... 8) Highlights .................................... 9) Speedwalk ..................................... 10) Tickers ....................................... 11) Command Files ................................. 12) Command History ............................... 13) Path Tracking ................................. 14) Advanced Features ............................. 15) Help .......................................... T I N T I N ++ (T)he K(I)cki(N) (T)ick D(I)kumud Clie(N)t ========= What is TinTin++? ========= TinTin++ is a client program specialized to help playing muds. This is a souped up version of TINTIN III with many new features. ========= Giving Credit Where Credit is Due ======== None of this work would be possible, without the work done by Peter Unold. He was the author of TINTIN III, the base of TinTin++. Hats off to ya Peter, You started the ball rolling. ========= Starting TinTin++ ========= The syntax for starting tintin is: ./tt++ [command file] Read more about the command file in the 'files' section below. Remember one thing however. All actions, aliases, substitutions, etc, defined when starting up TinTin++ are inherited by all sessions. If you want to get out of tintin after starting it type: #end or press ctrl-d. If you want to paste text use shift-insert, text is automatically copied upon selection. ======== Basic Features ========= I'll start by explaining some of the very basic and important features: All TinTin++ commands starts with a '#'. (can be changed with #config) Example: #help -- #help is a client command, and isn't send to the mud. All TinTin++ commands can be abbreviated when typed. Example: #he -- Typing #he is the same as typing #help All commands can be separated with a ';'. Example: n;l green;s;say Dan Dare is back! -- do these 4 commands There are several ways ';'s can be overruled. Example: \say Hello ;) -- Lines starting with a '\' aren't parsed by tintin. Example: say Hello \;) -- The escape character can esape 1 letter. ======== Connecting to a Mud ========= Command: #session {session name} {mud address} {port} {filename} Example: #session bob tintin.sf.net 4321 You can have more than one session, in which case you can switch between sessions typing #. You can get a list of all sessions by typing: #session. Providing a filename is optional. ======== Split Screen ========= Command: #split The split command will create a separated input and output area. This allows you to see the entire line that you are typing, without having the mud scroll your text off the screen, or breaking up the line. Using the #prompt command you can capture the prompt and place it on the split line. To get rid of the split interface you can use #unsplit which will restore the terminal settings to default. ========= Aliases ========= Command: #alias Usage: #alias {name} {commands} Use this command to define aliases. The variables %0, %1.. %9 contain the arguments to the aliases-command as follows: the %0 variable contains ALL the arguments. the %1 variable contains the 1. argument .... the %9 variable contains the 9. argument Example: #alias nice say Hello Mr %1 If there are no variables on the right-side of the alias definition, any arguments following the aliases-command will be appended to the command string. Example: #alias ff cast 'fireball' -- 'ff bob' equals: cast 'fireball' bob If you want an alias to execute more commands, you must use braces. Example: #alias ws {wake;stand} To delete an alias use the #unalias command. TinTin++ doesn't baby sit, and will not check for recursive aliases! You can avoid recursion by escaping the entire line so it is send directly to the mud. Example: #alias put \put %1 in %2 ========= Actions ========= Command: #action Usage: #action {action-text} {commands} Actions, also known as triggers, are used to define an action to take place when a particular text appears on your screen. There are 99 variables you can use as wildcards in the action-text. These variables are %1, %2....%9, %10....%98, %99. Examples: #action {You are hungry} {get bread bag;eat bread} #action {%1 has arrived.} shake %1 -- shake hands with people arriving. #action {%1 tells you '%2'} {tell bob %1 told me '%2'} -- forward tells to Bob. #action {tells you} #bell -- beep the terminal when you get a tell. You can have tintin ignore the actions if you type '#ignore action on'. You can see what commands TINTIN executes when an action triggers, by typing '#debug action on'. You can remove actions with the #unaction command. ========= Highlights ========= Command: #highlight (remember you can abbreviate commands) Usage: #high {text} {color} This command works a bit like #action. The purpose of this command is to substitute text from the mud with color you provide. This command is a simplified version of the #substitute command. Examples: #high {Snowy} {light yellow} -- colors the word Snowy. #high {%1Snowy%2} {light yellow} -- colors a line containing Snowy Use #unhigh to delete highlights. ========= Speedwalk ========= If you type a command consisting ONLY of numbers and the letters n, e, s, w, u, d - then this command can be interpreted as a serie of directions you want to go to. Example: ssw2n -- go south, south, west, north, north If you have problems with typing some commands that actually ONLY consists of these words, then type them in CAPS. For example when checking the NEWS or when asked to enter NEW as your name. You must enable speedwalking with: #config speedwalk on ========= Tickers ========= Command: #ticker {name} {commands} {seconds} Every 60 seconds on a standard dikumud a so called tick occures. You regenerate faster hp/mana/mp if you're sleeping/resting during a tick. So it's pretty nice to know when the next tick occurs. TinTin++ helps you with that. #ticker {tick} {#show TICK!!!;#delay 50 #show 10 SECONDS TO TICK!} {60} This creates a ticker with the name {tick} which will print TICK!!!, as well as print a warning when the next tick will occure. Use #untick to delete tickers. ========= Command Files ========= When you order TinTin++ to read a command file, tintin parses all the text in the file. You can use command files to keep aliases/actions in, login to a mud(name, password etc..) and basically all kinds of commands. You can make the command files with either a text editor (strongly suggested), or use the #write command to write out a file. Commands for files: #read filename -- read and execute the file. #write filename -- write all actions/aliases/substitutes known for the current session to a file. When you use #session you can tell it to read a command file with the 4th argument. Example: #session bob tintin.sf.net 4321 bobthemage.tin ========= Command History ========= If you want to use your command history you have 2 options. If you gave Mashiranou a 4 lines long tell about the weather or something, but she was AFK, and 15 minuts later she comes back to the keyboard and you want to give her the exact same message you would type: !tell mashiran TinTin++ will search through your command history for the command starting with 'tell mashiran' and execute it. Another slightly more flexible option is typing control-r which will display the reverse search prompt. Simply type in a substring of a command previously entered and it will keep showing matches till you find the command you are looking for. ========= Path Tracking ========= Tintin tries to keep track of your movement. That is whenever you type either north/south/east/west/up/down, tintin will push the direction and it's opposite direction into a queue (the path) if '#path new' has been used. Commands for path: #path new -- start path mode, and resets queue. #path end -- stop path mode. #path map -- show the path #path ins {forward} {backward} -- insert commands into the queue #path del -- forget last move in the path #path save {f|b} {alias} -- save the path to the given alias #path load {alias} -- load a path alias into the map queue #path walk {forward|backward} -- walk 1 step forward or backward of a queue. #action {Alas, you cannot go that way.} {#path del} real life example.. tatataaaa: You want a fast run to the master mindflayer and back. You go to the dump and type: #path new. Then you run down and kill the master. To go back you just type: #path save backward tmp;$tmp You could of course just as well have recalled out of there, but... Hell it's just an example. ========= Advanced Features ========= Command: #run {name} {shell command} #run lets you run any console application interactively inside tintin. Learning how to use tintin will not only allow you to customize and automate a telnet connection, but any console application can be enhanced with triggers. ========= Help ========= Command: #help {subject} The help command is your friend, and also contains the most up to date information of all available tintin commands. If you type #help without an argument you will see the various help subjects, most of which aren't described in this manual since it only covers the basics to get you started. Enjoy tt/FAQ0000664060175006010010000001177413412673426011320 0ustar eigenaarNoneThis document will hopefully answer most questions regarding tintin++ (tt++). Last updated: 12/28/2010 Q00) I'm new to tintin, how do I get started? A00) Quite easy, start tintin using tt++ or ./tt++, to connect to a mud type: #session The name can be whatever you want it to be. If you start up 2 or more sessions you can switch between the sessions using # or use # [command] to have that session execute a command keeping the session in the background. Type #help for a list of help subjects, #help for more information. Q01) What machines does tintin work on? A01) Pretty much any UNIX machine with a modern compiler as well as Windows, Mac OS X, and Android. Q02) What version should I use 1.50 or 1.86 or 2.00 ? A02) TinTin++ 2.00 is twice the size of 1.86 with over 90% of the 1.86 code rewritten. 2.00 is not backward compatible with TinTin++ 1.50 or 1.86. Q06) I can't get tintin compiled still. Where can I get more help? A06) You can get help from a couple of places. The first place to start is to take a look at the message board, there should be a link to this message board on the tintin++ website. Check to see if your problem has been asked before and if there is a solution. If you don't see anything that looks like your problem, post a message and ask. Please provide as much information as possible such as the OS, compiler, error messages, etc. Q07) I can't get tintin compiled, can't you send me a binary of tintin? A07) See the install section on the website for help. A pre-compiled binary is only available for Windows. Q08) I would like to help, how can I contribute to tintin? A08) You can assist people on the message board and give bug reports or suggestions. A link to the beta version is often available on the forum as well in the Announcements section, beta testing is very helpful to avoid buggy releases. If you can program you can write snippets, though inclusion in the main branch isn't guaranteed. Snippets should be released into the public domain. Q09) Tintin is so awesome, how can I thank you guys for spending all that time to write tintin for free?? A09) Fan mail is always welcome :) Q11) Can I use code from tintin? A11) Yes, provided that you follow the terms of the license. The license used for tintin 1.86 and higher is GPL 2. TINTIN III and TinTin++ 1.5 are public domain, meaning there are no restrinctions whatsoever. Q12) I contributed code X, why isn't my name listed in the CREDITS file? A12) Most likely your name slipped by before Davin Chan started maintaining tintin and adding people to the CREDITS file. If you believe you have contributed code to tintin, please email me and let me know. Make sure to see if your code is still existent in this version as little of the original code has remained. Q14) I've seen some nifty code and would like to use it in a different program. A14) If you read the COPYING file you will see you are allowed to modify and redistribute this version as long as you make it clear you made changes, and what those changes are. If you want to use tintin code in another program not licensed under GPL you need to get permission from the author. Make sure to see if the exact code you want to use isn't existent in older tintin++ versions before contacting me, because I obviously cannot give permission for code I didn't write :) Also notice that older tintin++ versions are not licensed under the GPL. Q15) My old script files do not work, is this a bug? A15) Possibly, more likely your old script files do not work because a lot has changed. Try reading #help about the subject. Also the new script parser more closely resembles the working of common scripting languages. Also try to look through the examples, they are supposed to work, and you might find out what you are doing wrong. Feel free to ask for help on the forum. The README file lists most compatibility issues. Q16) #prompt {string} does not work A16) That's because the new syntax is: #prompt {string} {substitution} Read the help for the substitute command for more information. Q17) I want to make an ALIAS that creates an ACTION, but both use %0, how to go about this? A17) Use %%0 %%1 %%2 for the arguments of the nested action. Q18) How to enable support for chinese muds? A18 Use: #config BIG5 on Q19) I use Mac OS X and ran tintin a few times, now every time I open a terminal window, it runs tintin automatically. A19) You clicked "use settings as default" while running tintin. There's a few ways out of this, but the easiest is locating your terminal preference (home : library : com.apple.Terminal.plist) and deleting it. You'll have to redo anyting custom you set up (screen size, colors, etc.), but it will get the terminal back to the default of loading into your home directory. tt/INSTALL0000664060175006010010000000236213412673744012013 0ustar eigenaarNoneInstallation is easy; cd to the src/ directory, then type this: ./configure make make install If this went without errors or serious warnings type this to start tintin: tt++ You might need to compile and install the following libraries: pcre: pcre.org zlib: zlib.net gnutls: gnutls.org If you wish, you can edit src/Makefile.in before running ./configure. It shouldn't be necessary unless you have some unorthodox request (such as wanting to install tintin++ /usr/local). If you have any trouble with installing/compiling tintin you should check out the install section on the website, if that doesn't do the trick you can ask for assistance on the forum. TERMINAL EMULATION: In order to run tintin full featured you will need a vt100 emulator. If your OS doesn't use one per default it's suggested to install xterm or rxvt (also known as wterm). STATIC LINKING: This is more so a note to myself to statically link PCRE on Cygwin. $ wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.bz2 $ tar xvf pcre-8.34.tar.bz2 $ cd pcre-8.34/ $ ./configure CC=i686-pc-mingw32-gcc CXX=i686-pc-mingw32-g++ --enable-jit --enable-unicode-properties --disable-shared $ make $ ./configure --libdir='../pcre-8.34' --includedir='../pcre-8.34' tt/mods/0000750060175006010010000000000013412671364011706 5ustar eigenaarNonett/mods/1.5.mods0000664060175006010010000003274113343017613013105 0ustar eigenaarNone1/25/95 Added #split functionality, in case screen size autodetection doesn't work. Added #purist mode: in #split mode, commands typed at the bottom window are not echoed in the top window too. Diddled with the ./configure, Makefile, install.sh, gripe stuff in hopes of making it a bit more portable. 1/5/95 Added string comparison capability to #if; format is #if {[string1=string2]} ... Thanks to jes3659@gold.acns.fsu.edu (Jeff Sandler) for the code! Changed: ivars.c -- daw 1/5/95 Added else to #if command; new format is #if {expression} {then-cmd} [ else {else-cmd} ] where stuff inside [ ] is optional. Thanks to Greg Jarman for the code! Changed: ivars.c -- daw 1/5/95 Added SOCKS #ifdefs as requested by Jim Goddard ; now people who want to use SOCKS can define the -DSOCKS part of Makefile.in. This is only intended for the clueful user. Changed: Makefile.in main.c parse.c -- daw 1/5/95 Added FreeBSD bug fixes kindly submitted by Andrew Chernov ache@astral.msk.su. Changed: main.c misc.c net.c parse.c utils.c configure configure.in -- daw 1/4/95 Fixed all the bugs on the bigbuglist: mostly easy (but important) portability fixes. Added autodetection of screen size for #split mode. Added autodetection when screen is resized (i.e. with an xterm). Added: scrsize.c Changed: main.c rl.c Makefile.in Makefile -- daw 10/26/94 Made ! and ^d behave more like the old tintin. Hopefully fixed bug with #zap logging people out. Fixed history expansion so it only expands on lines that begin with !. Added redraw, according to #redraw (only in #unsplit mode). Added echoing of each command in #split mode. Decided that echo.c is now useless. Deleted: echo.c Changed: rl.c rlhist.c -- daw 10/25/94 Changed to readline 2.0. Fixed a few bugs; there were still spaces before #defines, and still an ANSI function declaration left over from pl6, and I made a dumb mistake in the Makefile which I fixed. Added a compile script; hope it's convenient and durable. Fixed bug where tt++ got in an infinite loop if it never connected. New files: install, src/readline/* Changed: README, INSTALL, Makefile.in, help.c, aliases.c, net.c and maybe a few more. -- daw 10/24/94 Added readline support. Now works in both #split and #unsplit modes -- but better in #split. Added history expansion and whatnot. Rewrote the tab stuff, fixed the bugs, and added #tabsave command. Fixes the bug with keystrokes getting dropped because of raw mode. No longer need echo.c and associated unportabilities (I think). Rewrote the ticker, because alarms() and readline don't seem to like each other. [It was doing an alarm() every second anyways! ] Fixed loop in the Makefile. Made lotsa random changes throughout the code to get it to coexist happily with readline. Probably lots of bugs left to fix. :-( Still need to write docs for all this. :-( New files: rl.c rltab.c rlhist.c rlvt100.c rltick.c log.c Changed: main.c parse.c misc.c utils.c ticks.c and maybe more. -- daw 8/28/94 Patch 6: Fixed to use Autoconf which makes installation alot more easier. Also fixed help.c so it works better. (David Hedbot, neotron@lysator.liu.se) Changed: All files, more or less. 7/21/94 Patch 5: Fixed compile errors for HP-UX users. HP-UX likes to use their own structure name conventions which differs slightly from SYS V conventions. Placed a few #if's for (HPUX) and the rest is history. Compiles like a champ now :-). Makefile totally re-written to elieviate the common questions asked about compiling. New script called gripe added. Helps us in determining what you have when you have a problem. If a problem occurs during compile, just type gripe and follow the instructions. Mail will be sent to the devel team automatically. (JE/DW) Changed: echo.c main.c tintin.h Makefile install.sh gripe 7/10/94 Patch 4: Fixed #return once and for all. The moves were being placed back onto the path list when you did a return That's a BIG NONO. Linked List bug fixed (priority vairable was being assigned improperly). Help file corrections and README changed to hopefully help users out more. .tintinrc now shows the proper pathdirs, to allow #return to play nicely with the rest of the program. Makefile now calls the install script copying the helpfile automatically to the home directory (If users don't like it, we'll know). (JE) Changed: llist.c path.c tintin.h docs/tintin15.* 5/13/94 Patch 3: fix for speedwalking. Tintin will no longer go apeshit on text like "u7"; Also changed llist.c and glob.c. Made pre-decalrations and function declarations conform to K&R C. (See 4/20/94 for how new functions should look) (JE) Changed: llist.c, parse.c, tintin.h, glob.c 4/30/94 Patch 2: fix for #action {^%0 foo}; removed memory leak in insert_history(); added #toupper and #tolower; added the help text for #variable, which was somehow inadvertently left out; a few minor #includes added. Thanks you Spencer Sun and Harald Evensen! (DW) 4/27/94 Patch 1: no error message shown if ~/.tintinrc can't be found; if can't find ./tab.txt look for ~/tab.txt; changed help so that the helpfile can go into a non-world-writeable directory; #showme is now tested for actions; bug fix -- it would sometimes coredump upon exiting session. (JE) 4/25/94 Fixed bug in insertnode_list. #action {zzzz} {foo} {0} was guaranteed to delete all actions in the list that had priority 1 or higher because a ->next pointer was getting set to NULL when it should have been set to point to the rest of the list. Affects llist.c. (DW) 4/24/94 Fixed logging so that all ^M's were removed before writing to the log. This can be changed back to the origional type of logging, by modifying tintin.h (OLD_LOG). Changed: main.c, tintin.h (JE) 4/24/94 Changed part of Dave's modification to session.c. I have been getting messages (and experiencing myself), cores when you try to open a "sign" session, which shows a sign then closes the session. Problem being though, for some reason, even though a pointer may exist of (char *), and the length of the string is 0, free cores. Being that Mem fixes like this can take a long time, I've fudged it for now, in that it won't free up pointers that have strlen's of less than 1. Changed: session.c (JE) 4/24/94 Fixed -v option and changed a couple of notification messages in action.c and alias.c, basically just making a couple more messages lower case and less annoying. Changed: action.c, alias.c, files.c (BR) 4/22/94 Fixed highlighting to make it backwards compatible, 1-32 should now be valid fields for highlighting, there is a little more that can be done to speed up highlighting a bit. Not critical, we'll see how this works. Changed: highlight.c (BR) 4/20/94 Nothing major, just re-wrote Dave's function declaration for his stop signal trapper. Converted it to the convention we have been using since 1.2: (name of args) ; ; ; { } Changed: main.c (JE) 4/19/94 Minor plug to a memory leak in session_cleanup. It never killed all the linked lists associated with actions, aliases, sub, highlights, etc, so I added that. Also changed kill_all so that it deletes stuff from the path lists, too. Also, kill_all was made to remove lists completely if session was being killed (kill_all used to reinitialize the list.) Now it only initializes IF mode CLEAN is sent to kill_all. If END is sent, then it removes and does not re-initialize the list. Changed: llist.c, session.c (DW/JE) 4/19/94 Bug fix to searchnode_list: it assumed that linked lists were in alphabetical order, but as this assumption is now invalid, the function needed a small change. Files affected: llist.c. Doesn't affect the speed of action matching on lines that come from the mud!! (JE/DW) 4/17/94 Bug fix to the wildcard matching in search_list_with_wild. #unaction {* foo} removed all actions, when it obviously shouldn't. Also added backslash recognition to escape asterisks. This change affects #action, #alias, #sub, and their corresponding #un commands. [Maybe more.] llist.c, Makefile, .tt_help.tar.Z changed; glob.c added. (DW) 4/14/94 Quick fix to the session delete code to remove a minor memory leak. session.c was the only file changed. (DW) 4/11/94 Added #tabadd and #tabdelete. Adding of words to the tab completion list are done to the end of the list. #tabdelete just searches the list for the word designated, and deletes it from the list. Also corrected a bug that I found in my tablist routine. The complete tablist wasn't being displayed. edited files: files.c, parse.c, misc.c (JE) 4/10/94 Added #cr command. Useful for sending carriage returns to different sessions. You would do something like #grim {#cr}. main.c, parse.c, misc.c were edited..(JE) 4/9/94 Ohh.. forgot to mention.. another new command is #killall. It'll nuke just about every list related to a session. Now you don't have to exit tintin++ to load up a new set of coms. (JE) 4/8/94 Fixed the double-echoing bug that bit you when tintin++ was suspended and then resumed. Added a SUSPEND command, which simply acts just as though you had typed control-z at the keyboard. Anyone wanna test this thang on a SysV machine? I only have access to SunOS today, and god only knows if signal() and friends are compatible... Also added a fix to the way aliases and their parameters are expanded. Brace grouping used to be ignored for aliases but now it has an effect. Try these commands #alias foo {#showme $1; #showme $2; #showme $3} foo testing {testing 125} and compare between the new and old versions. Finally, I added #include back into tintin.h. Who removed that? Grr... :-) The affected files were main.c, parse.c, tintin.h, and .tt_help.txt.Z. (DW) 4/1/94 Made Tintin++ think by itself! (April Fools!!! Sorry.. I had to get that in :-) Anyways, Here are the final changes for this revision. First off, the Makefile has been completely re-written, adding to it clean and install. Also added was the TEXTIN command, and fixed it so that Jeremy's path commands worked (added PATHDIR). A few more compilation bugs were removed, and some install scripts were written. Time to go BETA with this pup now. (JE) 3/8/94 Made numberous bug fixes. Eliminated the bug with #split and no argument. Fixed #sys to work on most (if not all) system. The bug was, that the user would receive an alarm call and the user would still be at the prompt. Hopefully, this is fixed. People using SGI machines and Linux please get back to me on this one. You were the ones having the most problems. #loop now accepts large numbers as well. Added a new command called #info. It allows the user to get some statistical information about their current session. Added a compiler option called -DDEBUG. It turns all alarms off. The tickcounter won't work, but hey.. You're not playing with this flag set. It's so gdb will work properly. (JE) 2/2/94 Rewrote insertlist_node in llist.c. Added a mode switch to the parameters (as well as the additional priority field for the listnode). Mode PRIORITY will insert the node onto the list according to the priority the node was given (0 highest pritority, 9 lowest). Mode ALPHA will insert nodes alphabetically. Thinking was that if the node appears closer to the head of the list, the action would react sooner. All inserts were changed throughout the code. Rewrote searchnode_list_begin in llist.c as well, to take care of searches based on priority or alphabetically stored lists. All searchs were modified throughout the code. Added #retab, which allows the user to re-load tab.txt. All I do is just make another call to read_complete(). Rather simple and effective. Added #tablist, which will display all the words in the tab completion list. (in order from beginning to end). Modified help.txt to accomodate the changes I've made as of now. Once all changes are complete, I'll re-modify help.txt (JE) 1/24/94 Moved the ignore variable to the session struct. Now the #ignore command is isolated within a session. (i.e. you can have one session ignored, and one session not) The default is now set to DEFAULT_IGNORE in new_session. (JCJ) 1/19/94 Rewrote path.c to take a different set up. Rewritten to a link list structure. Added #pathdir command. Upped mesvar to size 7 with mesvar[6] being #pathdir. Wrote fixed array style linked list as well, but not implemented. Added addnode_list to file.c to add a node to the end of a list (not in lexicographical order as insertnode_list does). Implemented pathdir using the listnode struct, but it does not use the char *right. This can be improved. Perhaps with the completenode struct. (JCJ) 1/10/94 Rewrote the highlight parse functions to a) not use the ends and tails, b) use the color names instead of the numbers, c) allow multiple types to the first arg. (JCJ) tt/mods/dsc.mods0000664060175006010010000007752413412671362013367 0ustar eigenaarNone7/12/01 Released tintin v1.86 -- dsc 7/12/01 Updated the copyright notice to reflect the GPL license. Changed: all files -- dsc 7/8/01 Added COPYING file and offical place tintin under GPL and updated the FAQ file to reflect the change. Changed: FAQ Added: COPYING -- dsc 6/27/01 Added the ability to either append to a log file or to overwrite the log file (default) as requested. You can change the behavior of the #log command via the #appendlog command. Changed: tintin.h, main.c, parse.c, misc.c, files.c, include/main.h, include/misc.h -- dsc 6/21/01 Release tintin v1.85. -- dsc 6/8/01 Added a #show_pretick command. This will toggle on/off the #10 SECONDS TO TICK message, but it will still show the #TICK message. Changed: main.c, rltick.c, tintin.h, include/main.h, include/misc.h, misc.c, parse.c -- dsc 5/13/01 Removed the include/Makefile and include/Makefile.in. Deleted: include/Makefile, include/Makefile.in Changed: configure.in -- dsc 5/13/01 Added a TINTIN_HISTORY enviroment variable to set the location of the .tt_history file. Changed: main.c, rl.c -- dsc 5/13/01 Removed the -Iinclude from the Makefile.in and cleaned up referances to protos. Changed: Makefile.in, all .c files -- dsc 5/13/01 Added a check for an enviroment variable called TINTIN_CONF so that tintin will check for the tt.conf file at that location before checking for it in your home directory. Changed: chat.c -- dsc 5/13/01 Renamed the send_file command to tt_send_file to avoid a name conflict under AIX. Thanks to Yoon-Chan Jhi for pointing it out. Changed: chat.c, parse.c, include/chat.h -- dsc 4/3/01 Fixed the newline string that tintin sends. It really should be \r\n. Thanks to Emil Isberg for pointing that out. Left in the broken_telnet thing but I'm hoping it isn't needed anymore as tintin was sending out the wrong newline sequence. Changed: net.c -- dsc 3/28/01 Updated the FAQ. Changed: FAQ -- dsc 3/17/01 Renamed all of the protos directory to include and renamed all the proto files to .h. Updated all the .c files to reflect the change and updated the Makefile.in. Changed: all files -- dsc 3/17/01 Changed the BUFFERSIZE to 2048. And fixed the hard coded values in the protos to use the BUFFERSIZE value. Changed: tintin.h, protos/main.proto, protos/function.proto -- dsc 2/25/01 Commented out the SIGWINCH line in main.c that was spamming some people (appears to be only sun users). Need to investigate this when I some time. Changed: main.c -- dsc 12/29/00 Fixed some warnings messages by gcc with -Wall enabled. Changed: help.c, files.c, ivars.c, main.c, misc.c, path.c, rl.c, ticks.c -- dsc 12/29/00 Updated the readline.sh slightly to reflect the use of --includedir and --libdir instead of having to modify the Makefile. Changed: readline.sh -- dsc 12/28/00 Fixed a few warnings that appear on sun machines. And replaced usage of bzero with memset and assorted clean ups. Changed: scrsize.c, chat.c, net.c -- dsc 12/26/00 Released tintin v1.84. It's been a while since my last release. Pushing this out the door so that people can make use of some of the fixes. There are some rough spots that I need to tidy up, but there shouldn't be any problems. -- dsc 12/26/00 Updated the FAQ file. Changed: FAQ -- dsc 12/26/00 Added a toggle to enable and disable the saving of history. The command is #savehistory. This will need to be intergrated into the configuration file. Changed: main.c, misc.c, rl.c, tintin.h, protos/misc.proto, protos/rl.proto -- dsc 12/26/00 Fixed it so that tt.conf is looked for in the user's home directory instead of the current directory. The tt.conf file and the .tintinrc files need to be merged at some point so that there is only one configuration file. Changed: chat.c -- dsc 12/17/00 Removed some debug statements in the #ifstrequal command. Changed: ivars.c -- dsc 12/13/00 Added in saving of history. Tintin will write out a .tt_history file to your home directory and read that back in the next time you start up tintin. Keep in mind that it will write everything you enter as a command, including your character's password. You can do a #clearhistory to delete all the history as well. I'll probably make the saving of history optional as some may be parnoid and some may not have alot of space in their home directory to save a history of commands. Feedback on the usefulness of this feature would be welcome. Changed: main.c, tintin.h, rl.c -- dsc 11/07/00 Hmm, tintin regressed in respect to the broken_telnet fix. Seems that the fix for muds that wanted only \n instead of the standard \n\r was lost. I've reintergrated the fix, but I guess it really doesn't affect most users since it's been missing since 1.81. Changed: net.c -- dsc 11/07/00 Updated the install-sh script to reflect the change in the name of the chat.conf file to tt.conf. tt.conf will be a generic tintin configuration file. It's purpose will be to store custom configurations of tintin. Changed: install-sh Renamed: chat.conf -- dsc 11/07/00 Slight update to the INSTALL file to make it more clear on compiling tintin with non-standard locations of readline. Changed: INSTALL -- dsc 11/07/00 Put in a #include for stat.h that is needed for sun machines that wasn't needed on my linux box. Changed: chat.c -- dsc 10/09/00 Relocated the chat.conf file to the src/support directory and updated the install-sh script to reflect that. Changed: install-sh Moved: chat.conf -- dsc 10/09/00 Fixed the problem with + - in the math function that was reported by Kuang-che Wu. Let me know if the #math function does anything strange. The original (buggy) math is still available via the #fixedmath toggle, but by default it will use correct math. Changed: ivars.c -- dsc 10/03/00 Updated the install-sh script so that it will install the chat.conf file in the same location as your tintin helpfile. Changed: install-sh -- dsc 10/03/00 Updated the FAQ and added some comments to the chat.conf file. Changed: FAQ, chat.conf -- dsc 10/02/00 Added a new configure option, --enable-big5. This allows users to select Big5 encoding without needing to manually edit the Makefile. Changed: configure.in, Makefile.in, INSTALL -- dsc 10/02/00 Small update to the FAQ file. Changed: FAQ -- dsc 09/27/00 Cleaned up chat.c some. Removed some un-needed header files. Mac OS X can compile tintin now. Changed: chat.c -- dsc 09/27/00 Added misc patches by Kuang-che Wu. Changed: misc.c, rl.c, net.c -- dsc 09/27/00 Added support for Big5 encoding. This has not been tested by myself nor do I have any method of testing it. This was sent to me by Kuang-che Wu. Current, you need to manually edit the Makefile to have a -DBIG5 to the DEFINES line. If you have language specific patches, I will be willing to add them as well, but you must provide me with the code to be be added. Changed: action.c, parse.c, variables.c, functions.c -- dsc 09/16/00 Fixed the typo with the checking for ncurses and curses. Changed: configure.in -- dsc 09/10/00 Replaced DST_NONE with 0 as not all machines have that defined. Changed: chat.c -- dsc 09/07/00 Released tintin v1.83 -- dsc 09/07/00 Made it so that tintin will check first for termcap, then check for curse and then for ncurse. Hopefully that will resolve the problem some people having with the tgetent. Changed: configure.in -- dsc 09/07/00 tintin will check for a TINTIN_HELP environment variable. This will allow you to get tintin to check a shared tintin help file. All you need to do is to set the TINTIN_HELP variable to the directory your help file is located. Changed: help.c -- dsc 09/06/00 Found a error with the install-sh script. The script would FAIL. Fixed the problem with it. Changed: install-sh -- dsc 09/03/00 Corrected a bug with the #random function. asd@scene-hu.com provided the one line fix. Changed: misc.c -- dsc 08/26/00 Corrected a bug with the install.sh script. There was a typo in the installing gzip version of the help files. Decided that the dl directory isn't needed in the tintin++ directory. Users should create a dl or change the download location in the chat.conf file. Changed: install.sh Deleted: dl directory -- dsc 08/25/00 Fixed the problem of HP-UX not linking because of the order of the libraries. Put -lreadline before everything else. Also put in -lhistory for the history stuff. It seems that my compiler isn't as picky as others and allowed me to link without the -lhistory. Changed: Makefile.in -- dsc 08/16/00 Released tintin v1.82 -- dsc 08/16/00 Movied the MODIFICATIONS and MOD.ycjhi files into the docs directory. Moved: MODIFICATIONS, MOD.ycjhi -- dsc 08/16/00 Added a FAQ file. Hopefully it will answer some of the most commonly asked questions. Added: FAQ -- dsc 08/12/00 Added an ENABLE field to the chat.conf file. It is enabled by default, but you can turn off the chat feature by setting the value of ENABLE to 0. There still isn't all that much error checking with the chat features, which will be corrected in the future. Changed: main.c, rl.c, chat.c -- dsc 07/25/00 Cleaned up all the warnings in chat.c. Changed: chat.c -- dsc 07/21/00 Updated the .tt_help.txt file with the new chat commands. Also added in a helpversion entry, this just lists the date the helpfile was last modified to track which version of the helpfile that is installed. Make sure you do a make install to update your help files. Changed: support/.tt.help.txt.Z -- dsc 07/20/00 With the addition of chat, the encryption code that I hacked together is really not needed. I've removed the code for it as chat looks to be a nicer command than my ugly encrypt code. If people really want it, let me know and I'll put it back in, but I don't think it's really needed. Changed: misc.c, protos/misc.proto, parse.c -- dsc 07/20/00 chat has been added. This is very similiar to using an instant messager program or using irc. The chat feature is compatiable with mudmaster (or it should be). The code is by Sean Butler. I tried to contact him about the use of his code, but could not contact him. And I am assuming he would allow for the use of his code unless notified otherwise. Added him to the credit file. The code needs alot of clean up and modifications still, but the basic functionality is all there. Currently, it will try to figure out your IP address, unless you set it in your chat.conf file. To start a chat, you would do a #call . Once you have connected, you can do a #chat . You can also do a #chatall to send a message to everybody your connected to. Bug me to write up some docs on it, but the commands should be pretty straight forward (take a peek in the chat.c for a list of commands). You can also transfer files (I personally haven't tested it). Added: chat.c -- dsc Created: protos/chat.proto -- dsc Changed: CREDITS, main.c, rl.c, parse.c -- dsc 07/16/00 Added a --libdir to configure. This is needed if you don't have your libraries (readline) in standard library locates. This change is kind of a hack since I need to hardcore the -lreadline in the Makefile.in, but since you can't really use tintin without readline, having it hardcoded isn't a problem. Need to play with autoconf more to see if there is a better solution. Changed: configure.in, Makefile.in, INSTALL -- dsc 07/06/00 Added a #clearhistory command. This will clear out your history of commands entered. Changed: parse.c -- dsc 07/06/00 Added a BUG and TODO file. This is to let everybody know what I think are bugs and what I plan on working. If you have any input on bugs or things you would like to see added to tintin, feel free to let me know. Added: BUGS, TODO -- dsc 07/05/00 Worked some on the bindkey command. It doesn't do anything really, but I spent some time playing with readline and now have a better idea of how to get it to work. Changed: bindkey.c, protos/bindkey.proto -- dsc 06/23/00 Fixed a bug with the #read and #newread. They both would fail if your command file contain any blank lines. Changed: files.c -- dsc 06/23/00 I've decided to move the #read command now to be #newread and move the #oldread back as the default #read command. If you wish to use the multi-line code, use the #newread command. After it's been tested a while, I will make it the default #read command. Changed: parse.c, files.c, protos/files.proto -- dsc 06/23/00 Added in the fixes for functions submitted by Kaung-che Wu. Functions still need work though. Changed: variables.c, protos/variables.proto, function.c -- dsc 06/22/00 Cleaned up the install-sh script a bit. Changed: install-sh -- dsc 06/22/00 Played more and now you can select the default directory tt++ is put. It will default to the src directory. Like the --includedir, you change the bindir by doing a ./configure --bindir=. Example: You want to put tt++ in ~/bin ./configure --bindir=~/bin make make install Changed: Makefile.in, configure.in, INSTALL -- dsc 06/22/00 I've played with the autoconf some and made some improvements to it. If you put readline in a non-standard directory (ie not in /usr/local/include), you can specify that with ./configure --includedir=. For example, if you put the readline library in say tintin/src/readline. Then in the tintin/src directory, you can do a ./configure --includedir=. (current directory). Another example, if you put readline in /tmp/readline, you can do a ./configure --includedir=/tmp As you need to put in the parent directory of the readline directory. Changed: Makefile.in, configure.in, INSTALL -- dsc 06/19/00 I've added some missing code for functions that was submitted by Kuang-Che Wu. Changed: llist.c, files.c -- dsc 06/18/00 I've enabled the fixed_math by default now. This probably will not affect most tintin users, but if you use / or * you may be affected and may want to either change your script or to use the #fixedmath to disable it. Changed: tintin.h -- dsc 06/18/00 Put in a fix to a crash bug with verbatim when you don't have a session. Thanks to Kuang-che Wu for the bug report and fix. Changed: parse.c -- dsc 06/18/00 Made a fix to the #message command. It was not listing out the different message toggle-ables and made some slight improvements to it. Changed: misc.c -- dsc 06/18/00 Did further testing and I found a work around. I'll look into this problem further when I get a chance, but the working will allow people to use the #crypt and #decrypt functions. Added an example of how to make use of it in the docs/example1.script file. Somebody probably can write a something better, but it does work. If anybody wants to write better examples (with explainations) I would be happy to include them. Also if you use it, you may want to disable the variable messages (#message variable off) to reduce the spam (it is on by default). -- dsc 06/09/00 Modified the #crypt and #decrypt functions. They currently used a fixed key, but will change that soon. I had to change the way it was set up because I was trying to do it the lazy way and use the ASCII character set table. The old function mostly worked, but for some keys it would give you funky results. The work around noted in the previous entry does not work. I will need to fix the bug for these commands to be useful. The problem is in the parser. Changes: misc.c -- dsc 06/03/00 Added a #crypt and a #decrypt function for "encrypting" text. I remember seeing a tintin script that did this ages ago on the newsgroup. I decided to implement the code into tintin. Although shortly this code will not be so useful with the incoming chat feature, but this feature might be fun to use to annoy imms with *polishes his halo* :) It's extremely simple, but it should be more than enough to ensure nobody that you don't want to read the text will. The syntax is: #crypt #decrypt Currently, the key used to encrypt the data is a fixed key, but will add in a feature to change the key. This works fine except I seem to hit a bug when testing the feature. The bug is that tintin will substitutue everything in an alias with multiple commands #alias {ereply} {#crypt {$$0} {bleh}; reply $bleh} however #alias {ereply} {#unvar {$bleh} #crypt {$$0} {bleh}; reply $bleh} will work fine. I will probably fix this bug at a future date, but it looks to be a bit mess/large change to fix in a critical function. And it would be far to easy to introduce new bugs there. Changed: misc.c, protos/misc.proto, parse.c -- dsc 05/29/00 Added the option of stripping the binary in the install-sh script. Striping will produce a smaller execuatable, but it makes it harder to debug. But most people will not need to debug tintin and would probably want to strip tt++. Changed: install-sh -- dsc 05/29/00 *cough* hacked a*cough* Fix to the issue #2 (see 5/5/00 entry) with the new read_command(). The read_command function will ignore any line that starts with a "#nop" and will not parse it so it will not care about unbalanced braces. I probably will look for a better fix/rewrite the code in the future. This should resolve all the problems with the read_command. Changed: files.c -- dsc 05/27/00 Put in Yoon-Chan Jhi's fix to the syserr(). This should solve solve the problem some people have with compiling tintin. Changed: utils.c -- dsc 05/23/00 Made a few some modifications to the configure.in script to hopefully make it more informative when running ./configure. Changed: configure.in -- dsc 05/05/00 Fixed the problem with the read_command() not taking commands with no arguments (ie #fixedmath). Changed: files.c -- dsc 05/05/00 Ran dos2unix on the example2.script. This solves part of the problem, with the new read_command(), but still have the following issues. 1) it will not allow unbalanced braces in #nop. 2) it will not take commands with no arguments (ie #fixedmath). Changed: docs/example2.script -- dsc 05/05/00 Modified the translate_telnet_protocol() to be a void function. There really isn't a need for it to return anything. Changed: net.c, protos/net.proto -- dsc 04/30/00 Released tintin v1.81. I want to push it out now or else it would probably be another 3+ weeks and I've promised to put this out within a week or two (and it's been like 2 1/2 weeks now). -- dsc 04/30/00 Tracked down a problem I was having connecting to a mud server. tintin was just kicking me out at the same point. This was due to a change in the read_mud_buffer to use the new translate_telnet_protocol(). I've put in a fix for it, but I'll probably redo the fix later. Changed: net.c -- dsc 04/30/00 Made a bug fix to the read_command function. If your command file only contained a "#ses {l} {localhost 4000}" It wasn't connecting when you started up tintin or when you #read your command file. Changed: files.c -- dsc 04/29/00 I've included the sample tintin command file that Greg Milford sent me as it's a nice demostration of how to use tintin. This may be useful to people in learning how to make the best use of tintin. Created: docs/example2.script (the script by Greg) Renamed: docs/example.script to docs/example1.script -- dsc 04/29/00 I've intergrated a change to the read_command function by Greg Milford. The change allows for multi-line command files. See the docs/example.script for how it will look. The only downside to the change is that you must use braces ie #alias a {say blah} will not work, you need to do #alias {a} {say blah}. The read_command will try to recover from commands that are not written correct by ignore it and everything after the error and then return to tintin. So if you have 10 aliases and tintin says that it read in 5 aliases, then tintin didn't like your 6th aliases you wrote and you should go check it. I've kept the old #read command as #oldread if you really want to use that, but it will probably be removed at a future date. Changed: files.c, protos/files.proto, CREDITS, docs/example.script -- dsc 04/29/00 I've updated the tintin help file so that it now includes all the tintin commands. Some of the tintin help files are a *cough* bit sparse, but they are now listed :) I still need to update the manual and some of the entries in the tintin help file needs to be expanding (just a tinnie bit ;)) Changed: support/.tt_help.Z -- dsc 04/12/00 Put in Yoon-Chan Jhi's change to #ifmatch. The only real change is that it no longer has an else keyword. This matchs the syntax of other tintin commands. Changed: ivars.c -- dsc 04/09/00 Cleaned up some warning. Changed: walk.c, session.c -- dsc 04/09/00 I've added an example.script in the tintin/docs directory. This includes some basic examples (which I will expand on when I have more time) and it includes Yoon-Chan Jhi's auto reconnect script. Created: docs/example.script -- dsc 04/09/00 I've put in all of Yoon-Chan Jhi's changes which includes a zMud-like slow walk function (I don't know, I never used zMud before), an auto reconnect feature. I'm testing them to make sure I've gotten everything that he submitted to me working correctly There were alot of changes and hopefully some changes didn't slip by me. I've made some minor modifications to his code, but they were very limited at this point. (Don't ask me what they were, cuz I don't remember :)) Created: walk.c, protos/walk.proto Changed: net.c, session.c, tintin.h, parse.c -- dsc 04/08/00 Put in Yoon-Chan Jhi's change to connect_mud so that the error messages would be more helpful than just couldn't connect. Didn't know about the strerror() till now. Learned something :) Changes: net.c -- dsc 04/08/00 It's amazing what you can learn if you read :) According, to man (3) bcopy, bcopy has been deprecated. So that explains why some compilers give you those problems when compiling with the -O2 flag. This was chitchat's suggestion on how to solve the problem, but I wasn't comfort just commenting out the use of a function to silence a compiler warning. But on further research saw that bcopy was deprecated. In light of that, I've added back in -O2 flag and I've removed the use of bcopy. I've also updated the configure script to stop checking for bcopy since it isn't used anymore. Changes: Makefile.in, tintin.h, configure -- dsc 04/08/00 Added chitchat and Yoon-Chan Jhi to the credits file for their contributions to tintin. Changes: CREDITS -- dsc 04/05/00 I've added in ycjhi's change to read_buffer_mud, which fixes the problem with tintin sometimes eating a character after getting an GA. As a note the GA sequence will send a \n in tintin to solve an occassion problem with actions not being triggered. The code, except for minor modifications, were done by Yoon-Chan Jhi. Changes: net.c, protos/net.c -- dsc 04/05/00 Changed the tickset command so that the code and the manual both agree with each other. According to the manual tickset will turn on the timer if it's not on, but the code doesn't do that. Now it will. This is minor, but the code and manual should agree with each other, or what's the point of the manual if it's wrong? Changed: ticks.c -- dsc 04/03/00 Changed the ticksize command so that you will need to enter a number between 1 and 1000. You previous could crash tintin because it would try to divide by 0. There isn't any reason why you would want to set your ticksize to zero unless you wanted to crash tintin :P So 1 to 1000 should be a suitable range. Let me know if there is a reason why you would want to have anything outside that range. Changed: ticks.c -- dsc 03/08/00 Added a bindkey.proto and a bindkey.c file for the future bindkey command. This will be for binding keys to a command. ie #bindkey {f1} {}. This doesn't do anything yet. Created: bindkey.proto and bindkey.c -- dsc 02/23/00 Fixed a bug with the parsing of input. It would display the wrong value, but the result is correct. If you did the following: #var {a} {1} #math {a} {$a+1};#showme $a This would show you 1 and not 2. The value stored in $a is correct, but it would display 1. It will now show the correct value 2. Thanks to aladrin@elven.comm.au for the bug report. Changed: parse.c, protos/parse.proto -- dsc 02/23/00 Removed the -ansi flag from the Makefile and removed the declaration of popen and pclose and made asorted cleanup of things that were hacks/bad ideas. Changed: Makefile.in, protos/help.proto, misc.c -- dsc 02/19/00 Added in the brokentelnet value to the #info command. 02/12/00 Released tintin v1.80 -- dsc 02/12/00 Verified that the fix for CR/LF worked on the test mud listed on the webboard. 02/09/00 I think I corrected the problem with CR/LF with certain muds. Please let me know if I did/or didn't. Do a #brokentelnet to enable it to test. Changed: net.c, misc.c, main.c, parse.c, protos/misc.proto, protos/main.proto -- dsc 12/26/99 Updated the README and the doc/sgi files Changed: README, doc/sgi -- dsc 12/26/99 Increased the buffer for #textin for people that need to read in a large text file. Didn't increase all buffers since that may be a waste of memory, but for #textin you may need more than 1024 so I've increased it to 4096. Problem was brought to my attention by chitchat's ytin. Changed: text.c -- dsc 12/26/99 Fixed the math command completely (I think, let me know if i'm wrong). You *MUST* have #fixedmath 1 set for you to use the new math, or else it will continue to use the old broken math. Eventually, this will be the default but for now, you will have to enable it. Fix came from chitchat's ytin. With the fixed math, you will get 4 from #math {a} {6/3*2}. With the old math, you will get 1 from #math {a} {6/3*2}. Changed: ivars.c, protos/ivars.proto -- dsc 12/21/99 Ahh, gotta love short-circuit evalation :) Fixed a crash bug. If you did a #message 1, it will crash. It's fixed now. Who says it doesn't pay to be lazy? :) Changed: misc.c -- dsc 12/19/99 Added Fixed Math to the #info output. Changed: misc.c -- dsc 12/18/99 Added a new command to enable and disable the math code (will also be used for priority on math symbols when I add in that code). THE DEFAULT IS TO USE THE BROKEN CODE. To enable the fixed math code do a #fixedmath. Eventually, I will make it default to fixedmath on, but for now, I'll keep it at off. Changed: main.c, parse.c, misc.c, protos/main.proto, protos/misc.proto -- dsc 12/18/99 Looked at the #math {x} {$x+1} problem. I've decided to just return an error instead of initializing the undefined variable to 0. No answer is better than a wrong answer in my opinion. If tintin automatically creates a variable, typos would create new variables and people would wonder why it kept failing. This way, there is no doubt, that something is wrong with the math expression. This should save people time trying to debug their scripts looking for why their math call always returns the same (wrong) value. #math {x} {$x+1} -> old math will create and set x to zero -> new math will error and not create a variable Changed: ivars.c, protos/ivars.proto -- dsc 12/17/99 Added a sanity check for values entred for #sleep, #timetry #tries. Changed: misc.c -- dsc 12/17/99 Added in the code for #sleep. The syntax is #sleep