This is a patch to update the C ICB client from version 5.0.7 to 5.0.8. It is designed to be applied by Larry Wall's "patch" program; if you don't have patch, you may obtain it from ftp.gnu.ai.mit.edu in the /pub/gnu directory (the latest version as of this writing is 2.1; the file is patch-2.1.tar.gz). To apply: cd to the icb-5.0.7 directory (the directory containing the "icb", "readline", "murgil", etc. subdirectories), and type: patch -s -p1 causes core dump + + ICB-BUG-5.0.7-2: parts of split messages end in garbage + + ICB-BUG-5.0.7-3: frequent coredumps under AIX 3.2.5 and Irix + + ICB-BUG-5.0.7-4: s_open has incorrect usage message + + + Features added: + + [The first two features were actually present in 5.0.7, but were not + mentioned in the 5.0.7 release notes] + + ICB-FEATURE-5.0.5-4: key behavior should be extended to commands + other than /m + + Description: + + When pressed at the beginning of a blank line, the behavior of + the tab key is unchanged - m is + inserted, where is the nickname at the top of your + tab history. + + When pressed anywhere else on a line that begins with the + command character, the second word of the line is changed + to the nickname at the top of your tab history; the rest of + the line, including the command, is unchanged; in this + way you my use the tab history on commands other than /m. + + + ICB-FEATURE-5.0.5-5: idle times should not lose resolution after one + hour + + Description + Times in the "idle" column of the /who output are now displayed + to the minute, even when the idle time is over an hour. The + format is "HHh MMm"; the 'HHh' is omitted for idle times under + an hour. + + + ICB-FEATURE-5.0.7-1: the /version command should display the client + version + + Description + The /version command now displays the current client version + as well as the server version. Optionally, the output may + be restricted to just the client or server versions by + specifying -c or -s, respectively. Common subdirectories: icb-5.0.7/contrib and icb-5.0.8/contrib Common subdirectories: icb-5.0.7/docs and icb-5.0.8/docs Common subdirectories: icb-5.0.7/glob and icb-5.0.8/glob Common subdirectories: icb-5.0.7/icb and icb-5.0.8/icb Common subdirectories: icb-5.0.7/malloc and icb-5.0.8/malloc Common subdirectories: icb-5.0.7/murgil and icb-5.0.8/murgil Common subdirectories: icb-5.0.7/readline and icb-5.0.8/readline Common subdirectories: icb-5.0.7/support and icb-5.0.8/support Common subdirectories: icb-5.0.7/tcl and icb-5.0.8/tcl diff -c -r icb-5.0.7/docs/tcl.man icb-5.0.8/docs/tcl.man *** icb-5.0.7/docs/tcl.man Wed Feb 16 01:42:28 1994 --- icb-5.0.8/docs/tcl.man Wed Apr 6 19:35:49 1994 *************** *** 6,12 **** '\" the suitability of this material for any purpose. It is '\" provided "as is" without express or implied warranty. '\" ! '\" $Header: /sprite/src/lib/tcl/RCS/Tcl.man,v 1.29 90/04/18 17:19:18 ouster Exp $ SPRITE (Berkeley) ' .so tmac.sprite .de UL --- 6,12 ---- '\" the suitability of this material for any purpose. It is '\" provided "as is" without express or implied warranty. '\" ! '\" $Header: /home/aurora1/mark/tmp/icb/docs/RCS/tcl.man,v 4.5 1993/02/10 04:19:39 mark Exp $ SPRITE (Berkeley) ' .so tmac.sprite .de UL diff -c -r icb-5.0.7/icb/Make icb-5.0.8/icb/Make *** icb-5.0.7/icb/Make Wed Feb 16 01:44:35 1994 --- icb-5.0.8/icb/Make Wed Apr 6 19:36:26 1994 *************** *** 21,26 **** --- 21,27 ---- c_shell.c \ c_time.c \ c_usage.c \ + c_version.c \ cute.c \ defprocs.c \ dispatch.c \ *************** *** 72,77 **** --- 73,79 ---- c_shell.o \ c_time.o \ c_usage.o \ + c_version.o \ cute.o \ defprocs.o \ dispatch.o \ *************** *** 116,122 **** help/hush \ help/input \ help/intro \ - help/news \ help/options \ help/primitives \ help/rules \ --- 118,123 ---- *************** *** 225,231 **** oset.o: funcs.h externs.h getline.o: icb.h ../protocol.h ../tcl/tcl.h getline.o: funcs.h externs.h ! globals.o: icb.h ../protocol.h ../tcl/tcl.h globals.o: funcs.h ../murgil/ipcf.h history.o: icb.h ../protocol.h ../tcl/tcl.h history.o: funcs.h externs.h --- 226,232 ---- oset.o: funcs.h externs.h getline.o: icb.h ../protocol.h ../tcl/tcl.h getline.o: funcs.h externs.h ! globals.o: icb.h ../protocol.h ../tcl/tcl.h ../version.h globals.o: funcs.h ../murgil/ipcf.h history.o: icb.h ../protocol.h ../tcl/tcl.h history.o: funcs.h externs.h *************** *** 232,238 **** ipcf.o: icb.h ../protocol.h ../tcl/tcl.h ipcf.o: funcs.h externs.h main.o: icb.h ../protocol.h ../tcl/tcl.h ! main.o: funcs.h externs.h ../version.h msgs.o: icb.h ../protocol.h ../tcl/tcl.h msgs.o: funcs.h externs.h ../version.h parse.o: icb.h ../protocol.h ../tcl/tcl.h --- 233,239 ---- ipcf.o: icb.h ../protocol.h ../tcl/tcl.h ipcf.o: funcs.h externs.h main.o: icb.h ../protocol.h ../tcl/tcl.h ! main.o: funcs.h externs.h msgs.o: icb.h ../protocol.h ../tcl/tcl.h msgs.o: funcs.h externs.h ../version.h parse.o: icb.h ../protocol.h ../tcl/tcl.h diff -c -r icb-5.0.7/icb/bindings icb-5.0.8/icb/bindings *** icb-5.0.7/icb/bindings Wed Feb 16 01:44:36 1994 --- icb-5.0.8/icb/bindings Wed Apr 6 19:36:26 1994 *************** *** 141,148 **** c_usage add topic m "topicname" "set your group's topic" proc topic args {s_group topic $args} ! c_usage add version i "" "display server version info" ! proc version {} {s_version} c_usage add who i "\[.\] \[group\]" "list users" proc who {args} {s_who long $args} --- 141,155 ---- c_usage add topic m "topicname" "set your group's topic" proc topic args {s_group topic $args} ! c_usage add version i "\[-s|-c\]" "display server and/or client version info" ! proc version {args} { ! if { [ string compare $args "-c" ] !=0 } { ! s_version ! } ! if { [ string compare $args "-s" ] != 0 } { ! c_version ! } ! } c_usage add who i "\[.\] \[group\]" "list users" proc who {args} {s_who long $args} diff -c -r icb-5.0.7/icb/c_version.c icb-5.0.8/icb/c_version.c *** icb-5.0.7/icb/c_version.c Wed Apr 6 19:37:19 1994 --- icb-5.0.8/icb/c_version.c Wed Apr 6 19:36:29 1994 *************** *** 0 **** --- 1,20 ---- + /* Copyright 1994 by Mark J. Reed */ + /* For copying and distribution information, see the file COPYING. */ + + /* primitive to display client version info */ + + #include "icb.h" + #include "externs.h" + + c_version(TARGLIST) + TARGDEFS + { + static char *usage = "usage: c_version"; + + /* check the arg count */ + if (argc != 1) + TRETURNERR(usage) + + putl(icb_version, PL_SCR); + return(TCL_OK); + } diff -c -r icb-5.0.7/icb/defprocs.c icb-5.0.8/icb/defprocs.c *** icb-5.0.7/icb/defprocs.c Wed Feb 16 01:44:51 1994 --- icb-5.0.8/icb/defprocs.c Wed Apr 6 19:36:30 1994 *************** *** 53,65 **** "proc boot nick {s_group remove $nick}", "c_usage add bug g \"\" \"send mail to the author\"", "proc bug {} {c_shell \"mail mark@cad.gatech.edu\"}", - "c_usage add bump nick \"\\[password\\]\" \"bump someone who's using your registered nick\"", - "proc bump {args} {s_bump $args}", "c_usage add cancel m \"nick\" \"cancel an invitation\"", "proc cancel nick {s_group cancel $nick}", "c_usage add commands i \"\" \"list commands\"", "proc commands {} {c_usage list}", ! "c_usage add cp \"\\[old\\]\" \"\\[new\\]\" \"change your password\"", "proc cp {args} {s_chpw $args}", "c_usage add echoback g \"on|off\" \"turn on/off echoback\"", "proc echoback onoff {s_user echoback $onoff}", --- 53,65 ---- "proc boot nick {s_group remove $nick}", "c_usage add bug g \"\" \"send mail to the author\"", "proc bug {} {c_shell \"mail mark@cad.gatech.edu\"}", "c_usage add cancel m \"nick\" \"cancel an invitation\"", "proc cancel nick {s_group cancel $nick}", "c_usage add commands i \"\" \"list commands\"", "proc commands {} {c_usage list}", ! "c_usage add bump nickname \"\\[password\\]\" \"bump someone who is using your registered nickname\"", ! "proc bump {args} {s_bump $args}", ! "c_usage add cp \"\\[old\\]\" \"\\[new\\]\" \"change your registration password\"", "proc cp {args} {s_chpw $args}", "c_usage add echoback g \"on|off\" \"turn on/off echoback\"", "proc echoback onoff {s_user echoback $onoff}", *************** *** 102,109 **** "proc time {} {c_time}", "c_usage add topic m \"topicname\" \"set your group's topic\"", "proc topic args {s_group topic $args}", ! "c_usage add version i \"\" \"display server version info\"", ! "proc version {} {s_version}", "c_usage add who i \"\\[.\\] \\[group\\]\" \"list users\"", "proc who {args} {s_who long $args}", "proc a_su pass {s_user nick admin $pass}", --- 102,116 ---- "proc time {} {c_time}", "c_usage add topic m \"topicname\" \"set your group's topic\"", "proc topic args {s_group topic $args}", ! "c_usage add version i \"\\[-s|-c\\]\" \"display server and/or client version info\"", ! "proc version {args} {\ ! if { [ string compare $args \"-c\" ] !=0 } {\n\ ! s_version\n\ ! }\n\ ! if { [ string compare $args \"-s\" ] != 0 } {\n\ ! c_version\n\ ! }\n\ ! }", "c_usage add who i \"\\[.\\] \\[group\\]\" \"list users\"", "proc who {args} {s_who long $args}", "proc a_su pass {s_user nick admin $pass}", diff -c -r icb-5.0.7/icb/externs.h icb-5.0.8/icb/externs.h *** icb-5.0.7/icb/externs.h Wed Feb 16 01:44:54 1994 --- icb-5.0.8/icb/externs.h Wed Apr 6 19:36:30 1994 *************** *** 15,20 **** --- 15,22 ---- extern TTYINFO ttyinfo; /* defined in globals.c */ + extern char *what_version; /* ICB client version */ + #define icb_version (what_version+5) /* . . . without leading what(1) key */ extern char *pp; /* packet pointer */ extern char *pbuf; /* packet buffer pointer */ extern char *mynick; /* nickname of user */ diff -c -r icb-5.0.7/icb/funcs.h icb-5.0.8/icb/funcs.h *** icb-5.0.7/icb/funcs.h Wed Feb 16 01:44:55 1994 --- icb-5.0.8/icb/funcs.h Wed Apr 6 19:36:30 1994 *************** *** 3,9 **** If you edit this file, your changes may be lost later. */ ! STRLIST *strgetnode(); STRLIST *strmakenode(); char *ampm(); --- 3,9 ---- If you edit this file, your changes may be lost later. */ ! #include "externs.h" STRLIST *strgetnode(); STRLIST *strmakenode(); char *ampm(); *************** *** 18,24 **** char *strscat(); char *tildexpand(); int addusage(); ! int askquit(); int beep(); int bufferadd(); int bufferlist(); --- 18,24 ---- char *strscat(); char *tildexpand(); int addusage(); ! sighandler askquit(); int beep(); int bufferadd(); int bufferlist(); *************** *** 64,70 **** --- 64,74 ---- int inserttab(); int ishushed(); int lcaseit(); + #ifdef linux int linebuffer(); + #else + int linebuffer(); + #endif int listusage(); int listvars(); int logging(); *************** *** 113,119 **** int strlinktail(); int strncasecmp(); int strunlink(); ! int suspend(); int tclinit(); int tclreadicbrc(); int tclrestrict(); --- 117,123 ---- int strlinktail(); int strncasecmp(); int strunlink(); ! sighandler suspend(); int tclinit(); int tclreadicbrc(); int tclrestrict(); *************** *** 135,137 **** --- 139,142 ---- struct server *getserver(); struct server *getservbyname(); void listservers(); + sighandler icbexit(); diff -c -r icb-5.0.7/icb/globals.c icb-5.0.8/icb/globals.c *** icb-5.0.7/icb/globals.c Wed Feb 16 01:45:01 1994 --- icb-5.0.8/icb/globals.c Wed Apr 6 19:36:32 1994 *************** *** 1,4 **** --- 1,5 ---- /* Copyright (c) 1990 by Carrick Sean Casey. */ + /* Copyright (c) 1990-1993, 1994 Mark J. Reed */ /* For copying and distribution information, see the file COPYING. */ /* icb global variables */ *************** *** 5,10 **** --- 6,12 ---- #include "icb.h" #include "../murgil/ipcf.h" + #include "../version.h" /* non-global definitions */ char packetbuffer[USER_BUF_SIZE]; /* packet buffer */ *************** *** 12,17 **** --- 14,20 ---- char messagebuffer2[256]; /* generic large buffer */ /* global defs */ + char *what_version = WHAT_VERSION; /* ICB Client Version */ char *pp = packetbuffer; /* packet pointer */ char *pbuf = packetbuffer + 1; /* packet buffer pointer */ char *mbuf = messagebuffer; /* message buffer */ Common subdirectories: icb-5.0.7/icb/help and icb-5.0.8/icb/help diff -c -r icb-5.0.7/icb/helpdata.c icb-5.0.8/icb/helpdata.c *** icb-5.0.7/icb/helpdata.c Wed Feb 16 01:45:01 1994 --- icb-5.0.8/icb/helpdata.c Wed Apr 6 19:36:32 1994 *************** *** 12,18 **** "hush", "input", "intro", - "news", "options", "primitives", "rules", --- 12,17 ---- *************** *** 26,33 **** "Group concepts and commands.", "Using hush to silence annoying users.", "Input and editing characters", ! "Introduction to ICB.", ! "News regarding release 0.10.", "Runtime options and environment variables", "Primitives for building icb commands.", "Rules for ICB use.", --- 25,31 ---- "Group concepts and commands.", "Using hush to silence annoying users.", "Input and editing characters", ! "Introduction to ICB..", "Runtime options and environment variables", "Primitives for building icb commands.", "Rules for ICB use.", *************** *** 38,73 **** char *ht_groups[] = { ! "All ICB users are divided into groups. A group may be thought of", "as a room, where what you say out loud goes to everyone else in that", ! "group.", "", "Users can jump from group to group, and create their own new groups.", ! "When the last person leaves a group, it dissapears.", "", ! "Moderated groups", "", ! "Creating your own group automatically makes you the moderator. As", ! "moderator, you have special privileges that allow you to control", ! "various things about the group, including it's topic, protection", ! "status, and who is allowed inside.", "", ! "The topic command will set the topic of the group. The status command", ! "will tell you about the group, and let you change its protection", ! "status. Invite may be used to invite users, and boot may be used to", ! "kick people out. Pass can be used to give moderatorship to someone", ! "else, or to relinquish it entirely.", "", ! "Restricted groups", "", ! "A moderator can make a group restricted, which means that you must be", ! "explicitly invited to join. Only the moderator may invite people into a", ! "restricted group.", "", ! "Invisible groups", "", ! "Invisible groups have names that start with \"..\". These groups, and the", ! "people in them, are completely invisible.", NULL }; --- 36,123 ---- char *ht_groups[] = { ! "All ICB users are divided into \"groups\". A group may be thought of", "as a room, where what you say out loud goes to everyone else in that", ! "group. In keeping with the CB analogy, you may think of a group as a", ! "channel.", "", "Users can jump from group to group, and create their own new groups.", ! "When the last person leaves a group, it disappears.", "", ! "Group Attributes", "", ! "Groups have three administrative attributes: moderatorship,", ! "visibility, and volume. The values of these attributes appear as", ! "three letters in parentheses next to the group name.", "", ! "1. Moderatorship", "", ! " A group may be public (p), moderated (m), or restricted (r). A public", ! " group has no moderator; no one person has any more control over", ! " the group than any other. A moderated group has a single ", ! " moderator, whose nickname appears in the group header and", ! " is starred in the group listing. Only the moderator may change", ! " the group attributes, set the group topic, boot people out of the", ! " group, and issue invitations into the group. A restricted group", ! " is a moderated group which no-one may enter without an invitation.", "", ! "2. Visibility", "", ! " A group may be visible (v), secret (s), or invisible (i). A visible", ! " group is one whose name and occupants are visible to everyone on", ! " ICB. A secret group is one whose occupants are visible, but whose", ! " name is not; the group name shows up as '*Secret'. This prevents", ! " anyone who does not know the group name from entering the group.", ! " An invisible group does not show up in the /w listing at all unless", ! " you are in that group. However, it is counted in the summary", ! " statistics at the bottom of the /w listing.", ! " ", ! "3. Volume", "", ! " A group may be quiet (q), normal (n), or loud (l). In a quiet group,", ! " no open messages are permitted. If you wish to receive only personal", ! " messages, a quiet group is a good place to hang out. In a normal", ! " group, open messages are permitted. Loud is the same as normal,", ! " with one exception: if the group is restricted and someone without an", ! " invitation tries to enter the group, the moderator will receive a", ! " message indicating that fact.", ! "", ! "Creating your own group automatically makes you the moderator of that group.", ! "Additionally, the moderator of any group may at any time decide to turn over", ! "moderatorship of that group to you. ", ! "", ! "Numeric groups are initially public, visible, and loud (pvl). Named groups", ! "are initially moderated, visible, and loud (mvl), with two exceptions. If", ! "the group name begins with a single period, the group is initially secret.", ! "If the group names begins with two or more periods, the group is initially", ! "invisible.", ! "", ! "Commands", ! "", ! "The following are the commands for manipulating groups. Commands marked with", ! "(m) may only be issued by the moderator if the group is moderated; otherwise", ! "anyone may issue them. Commands marked with (M) may only be issued by the", ! "moderator; if there is no moderator, no-one may issue them.", ! "", ! " group change to a new group, creating it if it", ! " does not exist.", ! "", ! "(m) topic [] set or display the current topic string", ! "", ! " status display group attributes, topic, and invitation", ! " list", ! "(m) status [pmrqnlvsi] set group attributes", ! "(M) status name change the group's name", ! "", ! " topic display the topic string", ! "(m) topic set the topic string", ! "", ! "(m) invite [] invite someone to the group", ! "", ! "(M) boot kick someone out of the group", ! "", ! "(M) pass [] turn moderation over to someone else, or", ! " give up moderation completely", NULL }; *************** *** 87,92 **** --- 137,147 ---- "you can reenable them by hushing them again. If you give the hush command", "without a nickname, a list of currently hushed people will be printed.", "", + "Hush operates on a nickname; a hushee may get around your hushlist by", + "changing his or her nickname. You may prevent this by using the s_hush", + "(server hush) command; this command lets you define a set of users", + "to ignore based on their sites. ", + "", "Hush is the preferred way of dealing with problem users. Other means", "include using the moderated group facility, and when all else fails,", "complaining to the administration. If a user is persistent enough that", *************** *** 98,130 **** { "EDITING CHARACTERS", "", ! "ICB uses simple line editing just like csh in BSD Unix. If you have", ! "these characters set for your terminal (with the stty command), icb will", ! "use them.", "", - "CHARACTER USUALLY", - "----------------- ----------", - "Delete Character ^H and DEL", - "Delete Word ^W", - "Delete Line ^U", - "Reprint Line ^R", "", "NICKNAME HISTORY", "", ! "ICB remembers to whom you send personal messages, and makes those names", "available by hitting the TAB key at the beginning of a line. This makes", "sending personals very easy. Try it! If you strike the TAB key more", "than once at the beginning of a line, it cycles through the list of", "personals, up to the number specified by the \"history\" variable.", "", ! "You may use the \"hclear\" to clear out this history list and start over.", "", "THE COMMAND CHARACTER", "", "All lines starting with the command character are assumed to be commands.", "If you wish to send a line of text starting with the command character,", ! "type it double at the beginning of the line. ", "", "TCL QUOTING", "", "Tcl has several characters with special meaning. For example, dollar", --- 153,197 ---- { "EDITING CHARACTERS", "", ! "ICB uses the GNU readline library for input lines. This library lets you", ! "edit commands as you type them and retrieve previous commands that you have", ! "typed. Readline will emulate either of the vi or emacs editors; you may control", ! "which by using the 'oset' command to set the 'editmode' variable to either", ! "\"vi\" or \"emacs\". The original default is picked up by the setting of your", ! "EDITOR environment variable; if that variable is not set, vi is used.", "", "", "NICKNAME HISTORY", "", ! "ICB remembers to whom you send messages, and makes those names", "available by hitting the TAB key at the beginning of a line. This makes", "sending personals very easy. Try it! If you strike the TAB key more", "than once at the beginning of a line, it cycles through the list of", "personals, up to the number specified by the \"history\" variable.", "", ! "If you have already typed a command and part of a nickname when you hit", ! "TAB, it will attempt to complete the nickname from the list in your ", ! "history. If you have already typed a command, a nickname, and more text on the", ! "line, then pressing TAB will cause the nickname to cycle through your history", ! "without affecting the rest of your command line.", "", + "You may selectively delete nicknames from your history with the \"hdel\"", + "command, or you may use the \"hclear\" to completely clear out this history list", + "and start over.", + "", + "If you set the value of the \"autodel\" variable to \"true\", then any nickname", + "that generates a \"not signed on\" error message will be automatically removed", + "from your history .", + "", + "", "THE COMMAND CHARACTER", "", "All lines starting with the command character are assumed to be commands.", "If you wish to send a line of text starting with the command character,", ! "type it double at the beginning of the line. The default command character", ! "is '/'; you may change it by changing the value of the 'commandchar' variable.", "", + "", "TCL QUOTING", "", "Tcl has several characters with special meaning. For example, dollar", *************** *** 186,192 **** "", "Still assuming your name was \"x\". You could reply with:", "", ! "/m joe Joe you are being silly.", "", "Which would only go to Joe.", "", --- 253,259 ---- "", "Still assuming your name was \"x\". You could reply with:", "", ! "/m joe Joe, you are being silly.", "", "Which would only go to Joe.", "", *************** *** 193,199 **** "I hope this is enough to get you started talking. In other help files,", "you can learn more about groups, how to change groups, how to make your", "own, etc. I suggest you read--or at least skim--all of the help files.", ! "That way, you'll be able to get the most out of icb and ICB.", "", "As a final note, please read the rules. Not only do they say what is", "tolerated and what is not (ICB is pretty liberal), but they also tell", --- 260,266 ---- "I hope this is enough to get you started talking. In other help files,", "you can learn more about groups, how to change groups, how to make your", "own, etc. I suggest you read--or at least skim--all of the help files.", ! "That way, you'll be able to get the most out of icb.", "", "As a final note, please read the rules. Not only do they say what is", "tolerated and what is not (ICB is pretty liberal), but they also tell", *************** *** 201,286 **** "", "Have fun, and feel free to send me suggestions and bug reports.", "", ! "Sean Casey", ! "", NULL }; ! char *ht_news[] = { ! "TCL has been incorporated into client, making the command set", ! "extendable and programmable. ", "", ! "Hush has been implemented. It only currently works by nickname, but", ! "there are plans to extend it in various ways.", "", ! "A review buffer is now implemented and may be accessed with the \"display\"", ! "command and the \"bufferlines\" variable.", "", ! "Paging is now implemented, usable with the \"paging\" variable.", "", ! "The online help system has been totally redone. It has help encoded", ! "into the client sorted by subject. This makes icb independent of outside", ! "files and easier to correctly install.", "", ! "Murgil now accepts and properly uses numeric addresses. This speeds things", ! "up by bypassing the nameserver. It also makes icb more portable.", "", ! "The shell command \"/!\" works better, faithfully looks at the \"SHELL\"", ! "environment variable, and no longer requires a space between the", ! "exclamation mark and the command.", "", ! "A new status command shows you the information for the current group, and", ! "what groups you have been invited to.", "", ! "Session logging and \"alert\" have been temporarily removed. That", ! "facility will undergo an upgrade next release. It is hoped that output", ! "can be hooked into a Tcl display routine, making message displays user", ! "customizable.", "", ! "The groupname output has been changed yet again in the never ending", ! "search for aesthetically pleasing output.", "", ! "The who command has been extended to allow a groupname to be specified", ! "as an argument, giving the list of users for just that group.", "", ! "ICB variables are now set with the \"fset\" command, which also can be used", ! "to display the value of those variables.", "", ! "The routine to determine your login name should now work under programs", ! "like \"script\" and \"screen\".", "", - "ICB reads the editing characters from the tty struct. This means that users", - "with modified characters will be able to use those.", "", - "Internally, some of the code has been cleaned up and de-linted.", - NULL - }; - - char *ht_options[] = - { - "Runtime options for icb:", - "", - " -c Try to clear the arguments from the command line. This", - " won't work for all systems, and may even crash on some.", - "", - " -g group Enter directly into \"group\" instead of a default group.", - "", - " -n nick Enter using nickname \"nick\".", - "", - " -r Start in restricted mode. See the help on variables.", - "", - " -w Give a who report without signing on.", - "", - "", "ICB environment variables:", "", ! " FNRC Name of file to source instead of \"$HOME/.fnrc\". If this", " path is not an absolute path name, it is considered to be", ! " relative to HOME. If FNRC is specified and the corresponding", " file is not found, and error message will be printed.", "", ! " FORUMNAME Default nickname to use, instead of your login id.", "", " SHELL Shell to use for shellouts. If unspecified then /bin/sh", " is assumed.", --- 268,315 ---- "", "Have fun, and feel free to send me suggestions and bug reports.", "", ! "Mark J. Reed", ! "", NULL }; ! char *ht_options[] = { ! "Runtime options for icb (these may be abbreviated):", "", ! " -nickname nick sign on with nickname nick.", "", ! " -password pass set password to pass (implies -clear).", "", ! " -password - prompt for password.", "", ! " -group group sign on into group group.", "", ! " -server name connect to server named name.", "", ! " -host host connect to server on host host.", "", ! " -port port try to connect to port port.", "", ! " -list list known servers, in order.", "", ! " -clear wipe args from command line.", "", ! " -who see who's on; don't sign on.", "", ! " -restricted restricted mode", "", ! " -help display help message.", "", "", "ICB environment variables:", "", ! " ICBRC Name of file to read instead of \"$HOME/.icbnrc\". If this", " path is not an absolute path name, it is considered to be", ! " relative to HOME. If ICBRC is specified and the corresponding", " file is not found, and error message will be printed.", "", ! " ICBNAME Default nickname to use, instead of your login id.", "", " SHELL Shell to use for shellouts. If unspecified then /bin/sh", " is assumed.", *************** *** 428,434 **** " to see any ICB messages that they would not normally be", " permitted to see. Please don't mess it up for others.", "", ! "What is \"lewd\" or \"offensive\" is up to the ICB administration. If", "you have doubts, don't use it. Harassment is also largely a matter of", "opinion.", "", --- 457,463 ---- " to see any ICB messages that they would not normally be", " permitted to see. Please don't mess it up for others.", "", ! "What is \"lewd\" or \"offensive\" is up to the ICB server administrator. If", "you have doubts, don't use it. Harassment is also largely a matter of", "opinion.", "", *************** *** 435,445 **** "Violations are usually straighted out via friendly email. If that fails", "to work, a lot of things can happen. In some cases in the past, remote", "administrations have been contacted, and even whole sites have been", ! "locked out. I am not above contacting the law if a persistent problem", ! "user simply won't quit.", "", "If you find someone violating the rules, please contact the ICB", ! "administrator. The address is available with the version command.", NULL }; --- 464,473 ---- "Violations are usually straighted out via friendly email. If that fails", "to work, a lot of things can happen. In some cases in the past, remote", "administrations have been contacted, and even whole sites have been", ! "locked out. ", "", "If you find someone violating the rules, please contact the ICB", ! "server administrator. The address is available with the \"version\" command.", NULL }; *************** *** 490,495 **** --- 518,529 ---- " a nickname is not signed on, that nickname will be deleted from your", " \"tab\" history.", "", + "autoreg (boolean) default: false", + "", + " If true, whenever the server sends a message indicating that you must", + " send your password to register your nickname, the client will prompt you", + " for your password and send it to the server.", + "", "beeps (boolean) default: true", "", " If true, a received beep will make your terminal beep (with a ^G).", *************** *** 556,562 **** " group.", " ", " If you specify the -permanent flag on the /message command, this", ! " variable will be set to the target of that /m. The -lear flag of", " /message will unset this variable.", "", "pauseonshell (boolean) default: false", --- 590,596 ---- " group.", " ", " If you specify the -permanent flag on the /message command, this", ! " variable will be set to the target of that /m. The -clear flag of", " /message will unset this variable.", "", "pauseonshell (boolean) default: false", *************** *** 598,604 **** ht_hush, ht_input, ht_intro, - ht_news, ht_options, ht_primitives, ht_rules, --- 632,637 ---- diff -c -r icb-5.0.7/icb/main.c icb-5.0.8/icb/main.c *** icb-5.0.7/icb/main.c Wed Feb 16 01:45:06 1994 --- icb-5.0.8/icb/main.c Wed Apr 6 19:36:33 1994 *************** *** 1,9 **** ! /* Copyright (c) 1990 by Carrick Sean Casey. */ /* For copying and distribution information, see the file COPYING. */ #include "icb.h" #include "externs.h" - #include "../version.h" #include #include #include "getswitch.h" --- 1,10 ---- ! /* Portions copyright (c) 1990 by Carrick Sean Casey. */ ! /* Portions copyright (c) 1990-1993, 1994 Mark J. Reed */ /* For copying and distribution information, see the file COPYING. */ + #include "icb.h" #include "externs.h" #include #include #include "getswitch.h" *************** *** 217,229 **** /* initialize everybody and say hello. */ if (gv.interactive) { tclinit(); readlineinit(); if (restrictflg && !gv.restricted) restrict(); - sprintf(mbuf, "ICB revision %s.\r\n", VERSION); - write(1, mbuf, strlen(mbuf)); } /* try to connect to port - if it fails, start server if we are on */ --- 218,231 ---- /* initialize everybody and say hello. */ + write(2, icb_version, strlen(icb_version)); + write(2, "\n", 1); + if (gv.interactive) { tclinit(); readlineinit(); if (restrictflg && !gv.restricted) restrict(); } /* try to connect to port - if it fails, start server if we are on */ Common subdirectories: icb-5.0.7/icb/perl and icb-5.0.8/icb/perl diff -c -r icb-5.0.7/icb/s_open.c icb-5.0.8/icb/s_open.c *** icb-5.0.7/icb/s_open.c Wed Feb 16 01:45:24 1994 --- icb-5.0.8/icb/s_open.c Wed Apr 6 19:36:39 1994 *************** *** 10,18 **** s_open(TARGLIST) TARGDEFS { ! static char *usage = "usage: s_send text ..."; ! if (argc < 2 || !*argv[1]) TRETURNERR(usage) csendopen(catargs(&argv[1])); --- 10,18 ---- s_open(TARGLIST) TARGDEFS { ! static char *usage = "usage: s_open text ..."; ! if (argc < 2 || !argv[1][0]) TRETURNERR(usage) csendopen(catargs(&argv[1])); diff -c -r icb-5.0.7/icb/s_person.c icb-5.0.8/icb/s_person.c *** icb-5.0.7/icb/s_person.c Wed Feb 16 01:45:25 1994 --- icb-5.0.8/icb/s_person.c Wed Apr 6 19:36:39 1994 *************** *** 1,4 **** --- 1,5 ---- /* Copyright 1990 by Carrick Sean Casey. */ + /* Copyright 1990-1993,1994 by Mark J. Reed */ /* For copying and distribution information, see the file COPYING. */ /* primitive to send a personal message */ *************** *** 119,125 **** histput(nick); ! buf = (char *)malloc(strlen(nick)+strlen(text)+4); if (!buf) { putl("[=Error=] No memory to build packet",PL_SCR); --- 120,126 ---- histput(nick); ! buf = (char *)malloc(strlen(nick)+strlen(text)+5); if (!buf) { putl("[=Error=] No memory to build packet",PL_SCR); diff -c -r icb-5.0.7/icb/send.c icb-5.0.8/icb/send.c *** icb-5.0.7/icb/send.c Wed Feb 16 01:45:32 1994 --- icb-5.0.8/icb/send.c Wed Apr 6 19:36:42 1994 *************** *** 138,143 **** --- 138,150 ---- free(chunks); } + if (!s) + { + chunks = (char **)calloc(nelem, sizeof(char *)); + chunks[0] = (char *) 0; + return chunks; + } + nelem = strlen(s)/size+2; chunks = (char **)calloc(nelem, sizeof(char *)); *************** *** 162,167 **** --- 169,175 ---- return (char **) 0; } strncpy(chunks[i],s,length); + chunks[i][length]='\0'; s+=length; if (ch) *(--s) = ch; diff -c -r icb-5.0.7/icb/tcl.c icb-5.0.8/icb/tcl.c *** icb-5.0.7/icb/tcl.c Wed Feb 16 01:45:41 1994 --- icb-5.0.8/icb/tcl.c Wed Apr 6 19:36:43 1994 *************** *** 28,33 **** --- 28,34 ---- int c_shell(); int c_time(); int c_usage(); + int c_version(); int s_admin(); int s_beep(); int s_bump(); *************** *** 66,71 **** --- 67,73 ---- Tcl_CreateCommand(interp, "c_shell", c_shell, (ClientData) 0); Tcl_CreateCommand(interp, "c_time", c_time, (ClientData) 0); Tcl_CreateCommand(interp, "c_usage", c_usage, (ClientData) 0); + Tcl_CreateCommand(interp, "c_version", c_version, (ClientData) 0); Tcl_CreateCommand(interp, "s_admin", s_admin, (ClientData) 0); Tcl_CreateCommand(interp, "s_beep", s_beep, (ClientData) 0); Tcl_CreateCommand(interp, "s_bump", s_bump, (ClientData) 0); diff -c -r icb-5.0.7/icb/help/groups icb-5.0.8/icb/help/groups *** icb-5.0.7/icb/help/groups Wed Feb 16 01:45:49 1994 --- icb-5.0.8/icb/help/groups Wed Apr 6 19:36:47 1994 *************** *** 1,32 **** groups Group concepts and commands. ! All forumnet users are divided into groups. A group may be thought of as a room, where what you say out loud goes to everyone else in that ! group. Users can jump from group to group, and create their own new groups. ! When the last person leaves a group, it dissapears. ! Moderated groups ! Creating your own group automatically makes you the moderator. As ! moderator, you have special privileges that allow you to control ! various things about the group, including it's topic, protection ! status, and who is allowed inside. ! The topic command will set the topic of the group. The status command ! will tell you about the group, and let you change its protection ! status. Invite may be used to invite users, and boot may be used to ! kick people out. Pass can be used to give moderatorship to someone ! else, or to relinquish it entirely. ! Restricted groups ! A moderator can make a group restricted, which means that you must be ! explicitly invited to join. Only the moderator may invite people into a ! restricted group. ! Invisible groups ! Invisible groups have names that start with "..". These groups, and the ! people in them, are completely invisible. --- 1,84 ---- groups Group concepts and commands. ! All ICB users are divided into "groups". A group may be thought of as a room, where what you say out loud goes to everyone else in that ! group. In keeping with the CB analogy, you may think of a group as a ! channel. Users can jump from group to group, and create their own new groups. ! When the last person leaves a group, it disappears. ! Group Attributes ! Groups have three administrative attributes: moderatorship, ! visibility, and volume. The values of these attributes appear as ! three letters in parentheses next to the group name. ! 1. Moderatorship ! A group may be public (p), moderated (m), or restricted (r). A public ! group has no moderator; no one person has any more control over ! the group than any other. A moderated group has a single ! moderator, whose nickname appears in the group header and ! is starred in the group listing. Only the moderator may change ! the group attributes, set the group topic, boot people out of the ! group, and issue invitations into the group. A restricted group ! is a moderated group which no-one may enter without an invitation. ! 2. Visibility ! A group may be visible (v), secret (s), or invisible (i). A visible ! group is one whose name and occupants are visible to everyone on ! ICB. A secret group is one whose occupants are visible, but whose ! name is not; the group name shows up as '*Secret'. This prevents ! anyone who does not know the group name from entering the group. ! An invisible group does not show up in the /w listing at all unless ! you are in that group. However, it is counted in the summary ! statistics at the bottom of the /w listing. ! ! 3. Volume ! A group may be quiet (q), normal (n), or loud (l). In a quiet group, ! no open messages are permitted. If you wish to receive only personal ! messages, a quiet group is a good place to hang out. In a normal ! group, open messages are permitted. Loud is the same as normal, ! with one exception: if the group is restricted and someone without an ! invitation tries to enter the group, the moderator will receive a ! message indicating that fact. ! ! Creating your own group automatically makes you the moderator of that group. ! Additionally, the moderator of any group may at any time decide to turn over ! moderatorship of that group to you. ! ! Numeric groups are initially public, visible, and loud (pvl). Named groups ! are initially moderated, visible, and loud (mvl), with two exceptions. If ! the group name begins with a single period, the group is initially secret. ! If the group names begins with two or more periods, the group is initially ! invisible. ! ! Commands ! ! The following are the commands for manipulating groups. Commands marked with ! (m) may only be issued by the moderator if the group is moderated; otherwise ! anyone may issue them. Commands marked with (M) may only be issued by the ! moderator; if there is no moderator, no-one may issue them. ! ! group change to a new group, creating it if it ! does not exist. ! ! (m) topic [] set or display the current topic string ! ! status display group attributes, topic, and invitation ! list ! (m) status [pmrqnlvsi] set group attributes ! (M) status name change the group's name ! ! topic display the topic string ! (m) topic set the topic string ! ! (m) invite [] invite someone to the group ! ! (M) boot kick someone out of the group ! ! (M) pass [] turn moderation over to someone else, or ! give up moderation completely diff -c -r icb-5.0.7/icb/help/hush icb-5.0.8/icb/help/hush *** icb-5.0.7/icb/help/hush Wed Feb 16 01:45:50 1994 --- icb-5.0.8/icb/help/hush Wed Apr 6 19:36:47 1994 *************** *** 1,6 **** hush Using hush to silence annoying users. ! Forumnet has a large base of diverse users. It is inevitable that there are going to be people who do not get along. Rather than censoring users, I prefer to give people tools that allow them to reduce or negate the problem. --- 1,6 ---- hush Using hush to silence annoying users. ! ICB has a large base of diverse users. It is inevitable that there are going to be people who do not get along. Rather than censoring users, I prefer to give people tools that allow them to reduce or negate the problem. *************** *** 13,18 **** --- 13,23 ---- Hush acts a toggle, so if you decide that person doesn't bug you anymore, you can reenable them by hushing them again. If you give the hush command without a nickname, a list of currently hushed people will be printed. + + Hush operates on a nickname; a hushee may get around your hushlist by + changing his or her nickname. You may prevent this by using the s_hush + (server hush) command; this command lets you define a set of users + to ignore based on their sites. Hush is the preferred way of dealing with problem users. Other means include using the moderated group facility, and when all else fails, diff -c -r icb-5.0.7/icb/help/input icb-5.0.8/icb/help/input *** icb-5.0.7/icb/help/input Wed Feb 16 01:45:52 1994 --- icb-5.0.8/icb/help/input Wed Apr 6 19:36:48 1994 *************** *** 2,33 **** EDITING CHARACTERS ! ICB uses simple line editing just like csh in BSD Unix. If you have ! these characters set for your terminal (with the stty command), icb will ! use them. - CHARACTER USUALLY - ----------------- ---------- - Delete Character ^H and DEL - Delete Word ^W - Delete Line ^U - Reprint Line ^R NICKNAME HISTORY ! ICB remembers to whom you send personal messages, and makes those names available by hitting the TAB key at the beginning of a line. This makes sending personals very easy. Try it! If you strike the TAB key more than once at the beginning of a line, it cycles through the list of personals, up to the number specified by the "history" variable. ! You may use the "hclear" to clear out this history list and start over. THE COMMAND CHARACTER All lines starting with the command character are assumed to be commands. If you wish to send a line of text starting with the command character, ! type it double at the beginning of the line. TCL QUOTING --- 2,45 ---- EDITING CHARACTERS ! ICB uses the GNU readline library for input lines. This library lets you ! edit commands as you type them and retrieve previous commands that you have ! typed. Readline will emulate either of the vi or emacs editors; you may control ! which by using the 'oset' command to set the 'editmode' variable to either ! "vi" or "emacs". The original default is picked up by the setting of your ! EDITOR environment variable; if that variable is not set, vi is used. NICKNAME HISTORY ! ICB remembers to whom you send messages, and makes those names available by hitting the TAB key at the beginning of a line. This makes sending personals very easy. Try it! If you strike the TAB key more than once at the beginning of a line, it cycles through the list of personals, up to the number specified by the "history" variable. ! If you have already typed a command and part of a nickname when you hit ! TAB, it will attempt to complete the nickname from the list in your ! history. If you have already typed a command, a nickname, and more text on the ! line, then pressing TAB will cause the nickname to cycle through your history ! without affecting the rest of your command line. + You may selectively delete nicknames from your history with the "hdel" + command, or you may use the "hclear" to completely clear out this history list + and start over. + + If you set the value of the "autodel" variable to "true", then any nickname + that generates a "not signed on" error message will be automatically removed + from your history . + + THE COMMAND CHARACTER All lines starting with the command character are assumed to be commands. If you wish to send a line of text starting with the command character, ! type it double at the beginning of the line. The default command character ! is '/'; you may change it by changing the value of the 'commandchar' variable. ! TCL QUOTING diff -c -r icb-5.0.7/icb/help/intro icb-5.0.8/icb/help/intro *** icb-5.0.7/icb/help/intro Wed Feb 16 01:45:53 1994 --- icb-5.0.8/icb/help/intro Wed Apr 6 19:36:48 1994 *************** *** 1,13 **** ! intro Introduction to Forumnet. ! Welcome to Forumnet! ! Forumnet is an ongoing project to connect people together. It provides a forum where people can meet and share information, ideas, or opinions; conduct meetings; play games; or do just about anything made possible with fast electronic communications. ! Getting started using forumnet is easy. You run "icb" and after a few seconds, you will be signed on in one of the default groups. A group is a place where people can talk with one another. Chances are, there will be other people there, and you'll see them talking. It might look --- 1,13 ---- ! intro Introduction to ICB.. ! Welcome to ICB! ! ICB is an ongoing project to connect people together. It provides a forum where people can meet and share information, ideas, or opinions; conduct meetings; play games; or do just about anything made possible with fast electronic communications. ! Getting started using ICB is easy. You run "icb" and after a few seconds, you will be signed on in one of the default groups. A group is a place where people can talk with one another. Chances are, there will be other people there, and you'll see them talking. It might look *************** *** 19,25 **** Usually when you first "sign on", people will say hello to you. Here, Joe and Amelia said hi, assuming your nickname was "x". ! Everyone in forumnet has a "nickname". These are used because many login names are difficult to type, and don't tell you much about the user. Some users have nicknames like "Dr. X". Others use their real life names. --- 19,25 ---- Usually when you first "sign on", people will say hello to you. Here, Joe and Amelia said hi, assuming your nickname was "x". ! Everyone in ICB has a "nickname". These are used because many login names are difficult to type, and don't tell you much about the user. Some users have nicknames like "Dr. X". Others use their real life names. *************** *** 47,53 **** Still assuming your name was "x". You could reply with: ! /m joe Joe you are being silly. Which would only go to Joe. --- 47,53 ---- Still assuming your name was "x". You could reply with: ! /m joe Joe, you are being silly. Which would only go to Joe. *************** *** 54,66 **** I hope this is enough to get you started talking. In other help files, you can learn more about groups, how to change groups, how to make your own, etc. I suggest you read--or at least skim--all of the help files. ! That way, you'll be able to get the most out of icb and forumnet. As a final note, please read the rules. Not only do they say what is ! tolerated and what is not (forumnet is pretty liberal), but they also tell you what to do if you run into trouble. Have fun, and feel free to send me suggestions and bug reports. ! Sean Casey ! --- 54,66 ---- I hope this is enough to get you started talking. In other help files, you can learn more about groups, how to change groups, how to make your own, etc. I suggest you read--or at least skim--all of the help files. ! That way, you'll be able to get the most out of icb. As a final note, please read the rules. Not only do they say what is ! tolerated and what is not (ICB is pretty liberal), but they also tell you what to do if you run into trouble. Have fun, and feel free to send me suggestions and bug reports. ! Mark J. Reed ! diff -c -r icb-5.0.7/icb/help/options icb-5.0.8/icb/help/options *** icb-5.0.7/icb/help/options Wed Feb 16 01:45:55 1994 --- icb-5.0.8/icb/help/options Wed Apr 6 19:36:48 1994 *************** *** 1,27 **** options Runtime options and environment variables ! Runtime options for icb: ! -c Try to clear the arguments from the command line. This ! won't work for all systems, and may even crash on some. ! -g group Enter directly into "group" instead of a default group. ! -n nick Enter using nickname "nick". ! -r Start in restricted mode. See the help on variables. ! -w Give a who report without signing on. ICB environment variables: ! FNRC Name of file to source instead of "$HOME/.fnrc". If this path is not an absolute path name, it is considered to be ! relative to HOME. If FNRC is specified and the corresponding file is not found, and error message will be printed. ! FORUMNAME Default nickname to use, instead of your login id. SHELL Shell to use for shellouts. If unspecified then /bin/sh is assumed. --- 1,40 ---- options Runtime options and environment variables ! Runtime options for icb (these may be abbreviated): ! -nickname nick sign on with nickname nick. ! -password pass set password to pass (implies -clear). ! -password - prompt for password. ! -group group sign on into group group. ! -server name connect to server named name. + -host host connect to server on host host. + -port port try to connect to port port. + + -list list known servers, in order. + + -clear wipe args from command line. + + -who see who's on; don't sign on. + + -restricted restricted mode + + -help display help message. + + ICB environment variables: ! ICBRC Name of file to read instead of "$HOME/.icbnrc". If this path is not an absolute path name, it is considered to be ! relative to HOME. If ICBRC is specified and the corresponding file is not found, and error message will be printed. ! ICBNAME Default nickname to use, instead of your login id. SHELL Shell to use for shellouts. If unspecified then /bin/sh is assumed. diff -c -r icb-5.0.7/icb/help/rules icb-5.0.8/icb/help/rules *** icb-5.0.7/icb/help/rules Wed Feb 16 01:45:58 1994 --- icb-5.0.8/icb/help/rules Wed Apr 6 19:36:49 1994 *************** *** 1,12 **** ! rules Rules for Forumnet use. ! In general, Forumnet is a "free speech" system. Users are encouraged to air their viewpoints and to comment freely on the viewpoints of others. Nonetheless, there are rules designed to "keep the peace" and in general protect people from abuse. ! Forumnet usage may be reduced, suspended, or revoked for: Using lewd or offensive words in nicknames, visible group names, or topics. --- 1,12 ---- ! rules Rules for ICB use. ! In general, ICB is a "free speech" system. Users are encouraged to air their viewpoints and to comment freely on the viewpoints of others. Nonetheless, there are rules designed to "keep the peace" and in general protect people from abuse. ! ICB usage may be reduced, suspended, or revoked for: Using lewd or offensive words in nicknames, visible group names, or topics. *************** *** 14,20 **** Harassing another user. Harassment is defined as behavior towards another with the intent purpose of annoying them. ! Sending files or "pictures" through forumnet to users that don't want to see them. Falsifying your identity to the server. Why is this bad? --- 14,20 ---- Harassing another user. Harassment is defined as behavior towards another with the intent purpose of annoying them. ! Sending files or "pictures" through ICB to users that don't want to see them. Falsifying your identity to the server. Why is this bad? *************** *** 22,32 **** resolve various problems. Any behavior whose purpose is to reduce the functionality of ! forumnet, violate the security thereof, or see or allow others ! to see any forumnet messages that they would not normally be permitted to see. Please don't mess it up for others. ! What is "lewd" or "offensive" is up to the Forumnet administration. If you have doubts, don't use it. Harassment is also largely a matter of opinion. --- 22,32 ---- resolve various problems. Any behavior whose purpose is to reduce the functionality of ! ICB, violate the security thereof, or see or allow others ! to see any ICB messages that they would not normally be permitted to see. Please don't mess it up for others. ! What is "lewd" or "offensive" is up to the ICB server administrator. If you have doubts, don't use it. Harassment is also largely a matter of opinion. *************** *** 33,40 **** Violations are usually straighted out via friendly email. If that fails to work, a lot of things can happen. In some cases in the past, remote administrations have been contacted, and even whole sites have been ! locked out. I am not above contacting the law if a persistent problem ! user simply won't quit. ! If you find someone violating the rules, please contact the forumnet ! administrator. The address is available with the version command. --- 33,39 ---- Violations are usually straighted out via friendly email. If that fails to work, a lot of things can happen. In some cases in the past, remote administrations have been contacted, and even whole sites have been ! locked out. ! If you find someone violating the rules, please contact the ICB ! server administrator. The address is available with the "version" command. diff -c -r icb-5.0.7/icb/help/variables icb-5.0.8/icb/help/variables *** icb-5.0.7/icb/help/variables Wed Feb 16 01:46:01 1994 --- icb-5.0.8/icb/help/variables Wed Apr 6 19:36:50 1994 *************** *** 23,28 **** --- 23,34 ---- a nickname is not signed on, that nickname will be deleted from your "tab" history. + autoreg (boolean) default: false + + If true, whenever the server sends a message indicating that you must + send your password to register your nickname, the client will prompt you + for your password and send it to the server. + beeps (boolean) default: true If true, a received beep will make your terminal beep (with a ^G). *************** *** 89,95 **** group. If you specify the -permanent flag on the /message command, this ! variable will be set to the target of that /m. The -lear flag of /message will unset this variable. pauseonshell (boolean) default: false --- 95,101 ---- group. If you specify the -permanent flag on the /message command, this ! variable will be set to the target of that /m. The -clear flag of /message will unset this variable. pauseonshell (boolean) default: false Common subdirectories: icb-5.0.7/readline/doc and icb-5.0.8/readline/doc Common subdirectories: icb-5.0.7/readline/examples and icb-5.0.8/readline/examples diff -c -r icb-5.0.7/tcl/list.h icb-5.0.8/tcl/list.h *** icb-5.0.7/tcl/list.h Wed Feb 16 01:43:16 1994 --- icb-5.0.8/tcl/list.h Wed Apr 6 19:36:03 1994 *************** *** 12,18 **** * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * rcsid "$Header: /sprite/src/lib/include/RCS/list.h,v 1.3 89/06/23 11:29:49 rab Exp $ SPRITE (Berkeley)" */ #ifndef _LIST --- 12,18 ---- * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * rcsid "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/list.h,v 4.6 1993/02/10 20:03:58 mark Exp $ SPRITE (Berkeley)" */ #ifndef _LIST diff -c -r icb-5.0.7/tcl/panic.c icb-5.0.8/tcl/panic.c *** icb-5.0.7/tcl/panic.c Wed Feb 16 01:43:18 1994 --- icb-5.0.8/tcl/panic.c Wed Apr 6 19:36:04 1994 *************** *** 14,20 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/etc/RCS/panic.c,v 1.7 89/04/12 12:43:02 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 14,20 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/panic.c,v 4.6 1993/02/10 20:04:02 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/sprite.h icb-5.0.8/tcl/sprite.h *** icb-5.0.7/tcl/sprite.h Wed Feb 16 01:43:19 1994 --- icb-5.0.8/tcl/sprite.h Wed Apr 6 19:36:04 1994 *************** *** 12,18 **** * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /sprite/src/lib/include/RCS/sprite.h,v 1.6 89/09/08 16:27:43 mgbaker Exp $ SPRITE (Berkeley) */ #ifndef _SPRITE --- 12,18 ---- * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /home/aurora1/mark/tmp/icb/tcl/RCS/sprite.h,v 4.6 1993/02/10 20:04:05 mark Exp $ SPRITE (Berkeley) */ #ifndef _SPRITE diff -c -r icb-5.0.7/tcl/stdlib.h icb-5.0.8/tcl/stdlib.h *** icb-5.0.7/tcl/stdlib.h Wed Feb 16 01:43:20 1994 --- icb-5.0.8/tcl/stdlib.h Wed Apr 6 19:36:04 1994 *************** *** 13,19 **** * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /sprite/src/lib/include/RCS/stdlib.h,v 1.12 90/01/06 13:45:29 rab Exp $ SPRITE (Berkeley) */ #ifndef _STDLIB --- 13,19 ---- * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /home/aurora1/mark/tmp/icb/tcl/RCS/stdlib.h,v 4.6 1993/02/10 20:04:07 mark Exp $ SPRITE (Berkeley) */ #ifndef _STDLIB diff -c -r icb-5.0.7/tcl/strchr.c icb-5.0.8/tcl/strchr.c *** icb-5.0.7/tcl/strchr.c Wed Feb 16 01:43:22 1994 --- icb-5.0.8/tcl/strchr.c Wed Apr 6 19:36:04 1994 *************** *** 14,20 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strchr.c,v 1.2 89/03/22 16:06:40 rab Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 14,20 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strchr.c,v 4.6 1993/02/10 20:04:10 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/strerror.c icb-5.0.8/tcl/strerror.c *** icb-5.0.7/tcl/strerror.c Wed Feb 16 01:43:23 1994 --- icb-5.0.8/tcl/strerror.c Wed Apr 6 19:36:05 1994 *************** *** 14,20 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strerror.c,v 1.5 89/03/22 16:06:57 rab Exp Locker: shirriff $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 14,20 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strerror.c,v 4.6 1993/02/10 20:04:12 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/string.h icb-5.0.8/tcl/string.h *** icb-5.0.7/tcl/string.h Wed Feb 16 01:43:25 1994 --- icb-5.0.8/tcl/string.h Wed Apr 6 19:36:05 1994 *************** *** 12,18 **** * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /sprite/src/lib/include/RCS/string.h,v 1.5 89/03/22 16:03:43 rab Exp $ SPRITE (Berkeley) */ #ifndef _STRING --- 12,18 ---- * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /home/aurora1/mark/tmp/icb/tcl/RCS/string.h,v 4.6 1993/02/10 20:04:14 mark Exp $ SPRITE (Berkeley) */ #ifndef _STRING diff -c -r icb-5.0.7/tcl/strpbrk.c icb-5.0.8/tcl/strpbrk.c *** icb-5.0.7/tcl/strpbrk.c Wed Feb 16 01:43:26 1994 --- icb-5.0.8/tcl/strpbrk.c Wed Apr 6 19:36:05 1994 *************** *** 14,20 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strpbrk.c,v 1.2 89/03/22 16:07:46 rab Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 14,20 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strpbrk.c,v 4.6 1993/02/10 20:04:17 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/strspn.c icb-5.0.8/tcl/strspn.c *** icb-5.0.7/tcl/strspn.c Wed Feb 16 01:43:27 1994 --- icb-5.0.8/tcl/strspn.c Wed Apr 6 19:36:05 1994 *************** *** 14,20 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strspn.c,v 1.2 89/03/22 16:07:53 rab Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 14,20 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strspn.c,v 4.6 1993/02/10 20:04:21 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/strstr.c icb-5.0.8/tcl/strstr.c *** icb-5.0.7/tcl/strstr.c Wed Feb 16 01:43:28 1994 --- icb-5.0.8/tcl/strstr.c Wed Apr 6 19:36:06 1994 *************** *** 14,20 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/string/RCS/strstr.c,v 1.2 89/03/22 16:07:57 rab Exp $ SPRITE (Berkeley)"; #endif /* not lint */ /* --- 14,20 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strstr.c,v 4.6 1993/02/10 20:04:19 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ /* diff -c -r icb-5.0.7/tcl/strtol.c icb-5.0.8/tcl/strtol.c *** icb-5.0.7/tcl/strtol.c Wed Feb 16 01:43:30 1994 --- icb-5.0.8/tcl/strtol.c Wed Apr 6 19:36:06 1994 *************** *** 15,21 **** #ifndef NeXT #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/stdlib/RCS/strtol.c,v 1.4 89/03/22 00:47:30 rab Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 15,21 ---- #ifndef NeXT #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strtol.c,v 4.6 1993/02/10 20:04:23 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/strtoul.c icb-5.0.8/tcl/strtoul.c *** icb-5.0.7/tcl/strtoul.c Wed Feb 16 01:43:31 1994 --- icb-5.0.8/tcl/strtoul.c Wed Apr 6 19:36:06 1994 *************** *** 15,21 **** #ifndef NeXT #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/c/stdlib/RCS/strtoul.c,v 1.2 89/03/22 00:47:33 rab Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 15,21 ---- #ifndef NeXT #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/strtoul.c,v 4.6 1993/02/10 20:04:26 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/tcl.h icb-5.0.8/tcl/tcl.h *** icb-5.0.7/tcl/tcl.h Wed Feb 16 01:43:32 1994 --- icb-5.0.8/tcl/tcl.h Wed Apr 6 19:36:06 1994 *************** *** 13,19 **** * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /sprite/src/lib/tcl/RCS/tcl.h,v 1.35 90/04/18 16:05:56 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TCL --- 13,19 ---- * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tcl.h,v 4.6 1993/02/10 20:04:28 mark Exp $ SPRITE (Berkeley) */ #ifndef _TCL diff -c -r icb-5.0.7/tcl/tclAssem.c icb-5.0.8/tcl/tclAssem.c *** icb-5.0.7/tcl/tclAssem.c Wed Feb 16 01:43:33 1994 --- icb-5.0.8/tcl/tclAssem.c Wed Apr 6 19:36:07 1994 *************** *** 16,22 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclAssem.c,v 1.4 90/03/23 16:26:20 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclInt.h" --- 16,22 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclAssem.c,v 4.6 1993/02/10 20:04:31 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclInt.h" diff -c -r icb-5.0.7/tcl/tclBasic.c icb-5.0.8/tcl/tclBasic.c *** icb-5.0.7/tcl/tclBasic.c Wed Feb 16 01:43:35 1994 --- icb-5.0.8/tcl/tclBasic.c Wed Apr 6 19:36:07 1994 *************** *** 16,22 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclBasic.c,v 1.72 90/03/29 10:36:39 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 16,22 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclBasic.c,v 4.7 1994/02/16 00:40:21 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/tclCmdAH.c icb-5.0.8/tcl/tclCmdAH.c *** icb-5.0.7/tcl/tclCmdAH.c Wed Feb 16 01:43:36 1994 --- icb-5.0.8/tcl/tclCmdAH.c Wed Apr 6 19:36:07 1994 *************** *** 16,22 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclCmdAH.c,v 1.45 90/04/18 17:09:19 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #ifdef linux --- 16,22 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclCmdAH.c,v 4.9 1994/02/16 02:54:59 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #ifdef linux diff -c -r icb-5.0.7/tcl/tclCmdIZ.c icb-5.0.8/tcl/tclCmdIZ.c *** icb-5.0.7/tcl/tclCmdIZ.c Wed Feb 16 01:43:38 1994 --- icb-5.0.8/tcl/tclCmdIZ.c Wed Apr 6 19:36:08 1994 *************** *** 16,22 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclCmdIZ.c,v 1.36 90/04/18 17:09:07 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 16,22 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclCmdIZ.c,v 4.6 1993/02/10 20:04:43 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/tclExpr.c icb-5.0.8/tcl/tclExpr.c *** icb-5.0.7/tcl/tclExpr.c Wed Feb 16 01:43:40 1994 --- icb-5.0.8/tcl/tclExpr.c Wed Apr 6 19:36:08 1994 *************** *** 15,21 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclExpr.c,v 1.13 90/03/22 15:24:59 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 15,21 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclExpr.c,v 4.6 1993/02/10 20:04:48 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/tclGlob.c icb-5.0.8/tcl/tclGlob.c *** icb-5.0.7/tcl/tclGlob.c Wed Feb 16 01:43:41 1994 --- icb-5.0.8/tcl/tclGlob.c Wed Apr 6 19:36:09 1994 *************** *** 15,21 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclGlob.c,v 1.4 90/04/19 14:53:59 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 15,21 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclGlob.c,v 4.6 1993/02/10 20:04:52 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/tclHistory.c icb-5.0.8/tcl/tclHistory.c *** icb-5.0.7/tcl/tclHistory.c Wed Feb 16 01:43:42 1994 --- icb-5.0.8/tcl/tclHistory.c Wed Apr 6 19:36:09 1994 *************** *** 17,23 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclHistory.c,v 1.6 90/03/29 13:20:04 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclInt.h" --- 17,23 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclHistory.c,v 4.6 1993/02/10 20:04:57 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include "tclInt.h" diff -c -r icb-5.0.7/tcl/tclInt.h icb-5.0.8/tcl/tclInt.h *** icb-5.0.7/tcl/tclInt.h Wed Feb 16 01:43:44 1994 --- icb-5.0.8/tcl/tclInt.h Wed Apr 6 19:36:09 1994 *************** *** 12,18 **** * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /sprite/src/lib/tcl/RCS/tclInt.h,v 1.22 90/03/29 10:55:01 ouster Exp $ SPRITE (Berkeley) */ #ifndef _TCLINT --- 12,18 ---- * software for any purpose. It is provided "as is" without * express or implied warranty. * ! * $Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclInt.h,v 4.6 1993/02/10 20:05:02 mark Exp $ SPRITE (Berkeley) */ #ifndef _TCLINT diff -c -r icb-5.0.7/tcl/tclProc.c icb-5.0.8/tcl/tclProc.c *** icb-5.0.7/tcl/tclProc.c Wed Feb 16 01:43:45 1994 --- icb-5.0.8/tcl/tclProc.c Wed Apr 6 19:36:10 1994 *************** *** 15,21 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclProc.c,v 1.35 90/03/29 10:55:16 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 15,21 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclProc.c,v 4.6 1993/02/10 20:05:05 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include diff -c -r icb-5.0.7/tcl/tclUtil.c icb-5.0.8/tcl/tclUtil.c *** icb-5.0.7/tcl/tclUtil.c Wed Feb 16 01:43:46 1994 --- icb-5.0.8/tcl/tclUtil.c Wed Apr 6 19:36:10 1994 *************** *** 15,21 **** */ #ifndef lint ! static char rcsid[] = "$Header: /sprite/src/lib/tcl/RCS/tclUtil.c,v 1.30 90/03/25 11:04:25 ouster Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include --- 15,21 ---- */ #ifndef lint ! static char rcsid[] = "$Header: /home/aurora1/mark/tmp/icb/tcl/RCS/tclUtil.c,v 4.6 1993/02/10 20:05:10 mark Exp $ SPRITE (Berkeley)"; #endif /* not lint */ #include