home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / top2src.zip / REVISION.TXT < prev    next >
Text File  |  1999-10-03  |  63KB  |  890 lines

  1. The Online Pub Revision List
  2. ----------------------------
  3.  
  4. Version 2.00g1
  5.  
  6. 0913 - Lost the old revision list to a HD crash.  This is what was added as far
  7.        as I can remember:  Poker, Slots, MatchGame, 90% support for language
  8.        file, partial new PubColour support (output only), new word splitter,
  9.        basic config. file support, and a rename from The RemoteAccess Pub (RAP)
  10.        to The Done-Right Online Pub-Chat Door (DROPChat).  It was at this point
  11.        that I began rewriting.
  12. 0920 - Abandoned the rewrite since I was not enjoying it, and since I
  13.        discovered that the rewrite was only going to end up being more-or-less
  14.        the same as this version with just better names.  I can do just as much
  15.        by just gradually overhauling this version.  Renamed program from
  16.        DROPChat to The Online Pub (TOP), because I've discovered that most of
  17.        the users using teleconferencing programs want a professional
  18.        appearance, and a name like DROPChat doesn't offer that in my opinion.
  19.        Fixed the infamous "rescan bug" again (it was lost in the crash).  MAY
  20.        have fixed the dreaded "memory flaw" by not using sizeof with pointers,
  21.        but I won't know this until some testing starts.  It's about the only
  22.        thing left that I can think of.  Reduced stack size from 32k to 8k.  One
  23.        part in the RA code was creating a 8000 byte local array, which
  24.        accounted for most of the need for the increase.  No overflows so far.
  25. 0950 - Added processing support for the new configuration file system.  This
  26.        uses OpenDoors' built in config. file system, which is more flexible.
  27.        As with before, only a few settings are actually USED.  I still need to
  28.        add in support in both the processor and the structure for new options
  29.        appearing in the rewrite, and also some new ones I have thought of.
  30.        Also removed a call to od_kernel() that was happening before od_init()
  31.        in LAN and Local modes.
  32. 1000 - About 67% of the DC1 configuration options are now actually used in the
  33.        program.  This means I will be able to FINALLY get rid of the annoying
  34.        5 parameter command line.  The command line still remains intact until I
  35.        test the new options, however the work path and /H switch are no longer
  36.        needed, which actually results in a 3 parameter command line.
  37. 1010 - Completely removed all of the old command line parameters, except for
  38.        the EDIT and PACK switches, which are optional, and also the node
  39.        number, which is also optional.  Added a VERY cheap Node Config. Editor
  40.        to allow me to choose the type of each node and save the NODECFG.TOP
  41.        file.  The editor is currently accessable by using NODES as the sole
  42.        command line parameter.  The NODECFG.TOP file is not yet supported by
  43.        TOP itself.
  44. 1020 - Added basic support for the Node Config.  The SolidNode parameter, and
  45.        the comport modification parameters are not supported yet.
  46. 1700 - Added basic support for MULTI-CHANNELS!  Right now, channels from 0 to
  47.        over 2 BILLION are supported with the JOIN command.  In the near future
  48.        I'll make this an unsigned long and use channels 0 to 4B-1 for "normal"
  49.        chat, channels 4B to 4.001B-1 for user's personal channels, and the rest
  50.        for defineable "conferences".  Message types MSG_INCHANNEL and
  51.        MSG_OUTCHANNEL are used for channel notificaitons.  The WHO command now
  52.        needs severe modifications because right now there's no way to find out
  53.        where another user is.
  54. 1750 - Updated fixname() and filter_string() to recognize new PubColour.
  55. 1850 - Fixed poker Name display problem (patched it to use wordret) and the
  56.        infamous "always tossout the lowest node" bug in poker.  Converted
  57.        language file system to a Config. file style system, where each entry
  58.        takes the format of a keyword followed by the actual language text.
  59.        This allows the addition of new language items without having to
  60.        recompile all of the time, and also gets rid of the old DROPLang
  61.        compiler.  In addition, I can sort the items any way I want with nothing
  62.        more than some cut and paste work in a text editor.  Also fixed a few
  63.        cases in PROCMSGS where outnum[] wasn't being used so the raw numbers
  64.        were outputting garbage.
  65. 1851 - Sort of fixed the GA bug.  They work now, but ANYTHING typed that starts
  66.        with GA will also trigger a GA.  Oh well, better than them not working
  67.        at all, for now.
  68. 2500 - Overhauled SCAN to be more like MajorBBS.  Changed pressing ENTER to
  69.        display the tiny "who's on" list (handles only), like MajorBBS.  Added
  70.        support for the first TASK flag (TASK_EDITING).  Changed leftover
  71.        internal occurences of "drc" and "rap" to "top".
  72. 2501 - Fixed small bug in outchecksuffix() that was causing the - to be left on
  73.        when the length was converted, resulting in weird results.
  74. 2502 - TOP now wipes the node's record in NODEIDX while unregistering the node.
  75. 3000 - Implemented Crash Protection.  A new lastaccess variable in the NODEIDX
  76.        is used to determine when a node last accessed the file.  Under normal
  77.        operation, this value is kept up-to-date either when the NODEIDX is
  78.        saved, or when CrashProtDelay-10 seconds have elapsed (the -10 is to
  79.        insure the value will be updated in time).  The updating is maintained
  80.        by the new top_kernel() function, which is hooked into od_kernel() using
  81.        od_control.od_ker_exec.  top_kernel() also checks the other nodes every
  82.        CrashProtDelay seconds, and deletes nodes who's lastaccess time is too
  83.        long ago.  CrashProtDelay config. keyword added as a supplement.  node
  84.        variable added to maintain an up-to-date node_idx_typ record for the
  85.        current node, which also saves stack memory.
  86. 3200 - Changed around Output routines.  top_output() now calls the new
  87.        top_outstring() which outputs to a string, interpreting @ codes.  Then
  88.        top_output() displays the string while parsing ^ codes.  This allows the
  89.        addition of the new top_outlog(), which can be used for Log entries
  90.        using language items.  It calls top_outstring() then od_log_write().
  91.        Also changed od_emulate() calls to od_putch() in an attempt to speed up
  92.        output.  Right now even local output seems faster, but that may just be
  93.        wishful thinking.
  94. 3201 - Went back to old output routines for now, since the new ones are buggy
  95.        with long unbroken strings.  I should note here that using od_putch()
  96.        instead of od_emulate() _HAS_ sped up output considerably!
  97. 3202 - Changed around output routines AGAIN.  Now, top_output() takes a
  98.        new parameter as its first:  outmode.  Outmode is either OUT_SCREEN or
  99.        OUT_STRING.  OUT_SCREEN acts as before, and OUT_STRING causes
  100.        top_output() to return a pointer to outputstr, a global variable where
  101.        the resulting output is held.  top_outstring() and top_outlog() are
  102.        gone, and log entries are once again written manually, though all that's
  103.        actually needed is to call od_log_write(top_output(OUT_STRING, ...)).
  104. 3220 - Converted some hardcoded text to language prompts, mostly log entries
  105.        that now use the new OUT_STRING feature of top_output().
  106. 3221 - Hopefully fixed a problem with Poker aborting with a floating point
  107.        error at the end of some hands.
  108. 3222 - Internal modification - moved ver to a static global variable defined
  109.        and set in GLOBAL.C.  This will make recompiling faster since INIT.C
  110.        doesn't have to compile after every change.
  111. 3223 - Any array that used MAXNODES has now been made Dynamic, meaning the
  112.        MaxNodes keyword will work more effectively now.  It may also work with
  113.        >255 values, but I haven't verified this yet.  Added MaxNodes and
  114.        MaxActions keywords, though I forget exactly when.  Forgot to log them.
  115. 3224 - Corrected a small problem that caused allocation for extra language
  116.        items if comments were used in the language file.
  117. 3230 - Added PokerMinBet, PokerMaxBet, and PokerAnte config. keywords and
  118.        support for them in the program.  Moved nodecfg variable to a global and
  119.        made some adjustments to farmalloc() it earlier than other vars.
  120. 3231 - Made Personal Preference Options available to all systems for testing
  121.        purposes.  I'm not sure if I'll keep it this way for the release.  On
  122.        one hand I'd like to join the ASP and get TOP as an ASP approved
  123.        program, and on the other I'd like to reward registered users.  I guess
  124.        I'll make the decision when the release time comes.
  125. 3232 - Included ASSERT.H and added an assert() test to the division after a
  126.        poker hand for a divide by 0 error.  The error I attempted to fix in
  127.        revision 3221 is still there.
  128. 3233 - Fixed a couple of cosmetic bugs, including renaming a few language items
  129.        (HandleChange, SexChange, EXMsgChange, DescChange) by adding the word
  130.        Msg after them to avoid a couple of possible future name conflicts.  I
  131.        had renamed these in the language file but not in the program.  Also
  132.        changed version number from 1.90 to 2.00, since there are more than
  133.        enough changes to call this a major new version.
  134. 3234 - Removed that stupid 2 second delay after "setting up" I put in there to
  135.        make TOP look like it was doing something.  Updated @L token to new
  136.        language format (Format is now @L"LangItemName").  This also allows
  137.        users to define their own language tokens for "common" items and use
  138.        them globally, saving space.  Fixed a couple of other cosmetic bugs,
  139.        including the extra space between the "who's in" list and the short
  140.        help.
  141. 3240 - Channel value changed to unsigned long as noted in the revision 1700
  142.        notes.  Channel field added to NODEIDX.  Corrected bug in SCAN which was
  143.        displaying the user's current channel for everybody online.  Changed
  144.        detection of '\r' to '\n' to try and circumvent that pesky ANSI "bleed"
  145.        bug.
  146. 3241 - Upgraded the show_file() function a little to make some of the extra
  147.        needs optional.  Moved the MiniHelp to an ANSI file (MINIHELP.A??).
  148.        Upgraded the external ANSI files to reflect the current commands.
  149. 3242 - Support for solidnode variable in Node Cfg. added.  Poker index file now
  150.        cleared when a node enters TOP.  MIDX and NODE files now truncated upon
  151.        entry of TOP.
  152. 3243 - Updated copyright dates to say 1995.
  153. 3250 - Added the rest of the node configuration and support for it at
  154.        initialization.  Added the DefaultCyberCash keyword and support for it.
  155.        Added Enough Cash checks to MatchGame and Poker.
  156. 3251 - Raised max. slots bet to 500000.  Fixed slots speed (based on bps rate).
  157.        Hopefully fixed problem with TOP Node Cfg.  OpenDoors needs a 0-based
  158.        port, and TOP was using a 1-based port.
  159. 4150 - Completely overhauled BBS interface.  Function pointers are now used to
  160.        call common BBS functions such as paging, loading a node's info, etc.,
  161.        and the PAGE and NODES command now each just call a single generic
  162.        routine which calls the BBS functions.  Overhauled RA support to the new
  163.        method.  Max support hasn't been touched yet pending testing of RA
  164.        support.  Corrected a few cases of od_emulate() in BBS functions.
  165.        Removed an unused variable in nearly all Node functions which was taking
  166.        up 256 bytes a shot (about 1.5k there!).  Also noting that the fix in
  167.        3251 worked, but there still needs to be some safety checking with the
  168.        port number.
  169. 4250 - Maximus support updated to the new interface, though it does not seem to
  170.        be working at the moment.  It crashes the system right away.  Also
  171.        made a few minor fixes to the mods installed in 4150.  RA support is
  172.        working perfectly now.
  173. 4350 - SuperBBS support added.  Most of it uses the RA calls.
  174. 4351 - Fixed problem where Max and SBBS were crashing.  I (embarassingly)
  175.        forgot to uncomment the max_init() call, and there wasn't even a
  176.        sbbs_init() call, so that's how I found the error.
  177. 4352 - Tidied up everything to do with SBBS and RA BBS integration.
  178. 4353 - checkcmdmatch() now checks the entire command line instead of aborting
  179.        right away, and returns the highest value possible.  SBBS support
  180.        changed so the useron file is NOT kept open during run, since it seems
  181.        to interfere with SBBS working.
  182. 4354 - Minor mods to the SBBS code - fixed wrong status type display and am
  183.        testing something which will hopefully ensure the proper nodes are
  184.        detected.  Also fixed improper display of SBBS status codes.
  185. 4355 - Scrapped 4354 change to mods.  Fixed bug where TOP was taking a GOOD
  186.        return code from bbs_call_loaduseron as a BAD one!  Fixed places where a
  187.        0-based node was NOT being used, causing problems for all of the BBS
  188.        interfaces!
  189. 4400 - Internal change to use 0-based node numbers everywhere.  This allows
  190.        node 0 to be a local node, and allows BBSs which use node 0 to use it
  191.        without problem.
  192. 4401 - Possibly fixed cause of SBBS crashing bug by changing the way the file
  193.        is opened (DENYNONE now, was DENYRW).
  194. 4500 - Added generic Field editor which will be used for all of the online
  195.        editors in the program, including, perhaps, the profile editor, for ANSI
  196.        users only of course.
  197. 4550 - Added user selector which will be used for the user editor.  Corrected
  198.        bug that prevented CR/LFs from being written to RA/SBBS pages.
  199. 4560 - Fixed editor so it won't try to show NULL variables.  Added disabled
  200.        field support to editor.  Added a few fields of the user editor for
  201.        testing.
  202. 4561 - Fixed cheap bug in poker that prevented anybody but the first person
  203.        from calling/discarding.
  204. 4660 - Added Directed messages (> and DIRECT TO commands).  Modified
  205.        dispatch_message() to echo messages if they're done to the sending node
  206.        regardless of other settings.
  207. 4700 - Added most of the rest of the user editor, though it still doesn't
  208.        actually save the edited values yet.  Tried disabling crash protection
  209.        to see if it was causing crashes, but this is not the case, so it is now
  210.        definitely something in the RA BBS-specific module.
  211. 4701 - Reenabled crash protection.
  212. 4710 - User editor saves and other nodes load the edited info. now.  Some user
  213.        editor fields still are disabled though since they require more detailed
  214.        editing.
  215. 4720 - Node editor no longer uses OD so the comport doesn't matter.
  216.        top_output() modified to use a new OUT_LOCAL mode, which will use normal
  217.        conio calls instead of OD output calls.
  218. 4721 - Found and fixed SERIOUS flaw in BBS node loading code (RA and SBBS).
  219.        Fields in the USERON file that were longer than the ones in TOP weren't
  220.        being truncated, leading to overshooting the buffer.  The reverse was
  221.        also true, though this was less of a concern as nearly all of the info.
  222.        was being taken from the USERON file so it wasn't going to be too long.
  223.        However, both ways have been fixed.
  224. 4722 - Found stupid problem with the node editor in that it was still using
  225.        OD's input routine.  Fixed.  Had to write my own input routine
  226.        (my_input_str() for now) but that wasn't hard.
  227. 4723 - Fixed reported bugs about TOP using the Work Path instead of the BBS
  228.        Multi Path.  Also made title page file name TOPTITLE.A?? instead of
  229.        TOPTITL.A??.  The E was eliminated because the old DROPChat name made
  230.        the title page filename DROPTITL.A??.
  231. 4724 - Added DisableLogging language item test to see if there's a problem with
  232.        emessage distribution.  Setting this item to "On" will disable sending
  233.        of an emessage.
  234. 4725 - Caught another occurence of the problems described in 4721.  Doubt it
  235.        will fix crashing after doing a NODES command though.  Added outproc
  236.        and outdefattrib vars for future use.
  237. 4726 - Found and fixed ANOTHER SERIOUS PROBLEM in new RA/SBBS code.  During a
  238.        useron save, the size of the useron file was ALWAYS being changed even
  239.        if it was big enough.  Furthermore it was being made one record too
  240.        small!  This COULD be the cause of the NODES-related crashing, but we'll
  241.        have to see.
  242. 4727 - Fixed small problem that caused the channel in the nodeidx to get
  243.        corrupted whenever a person went into the Profile Editor.  I wasn't
  244.        using the new global node variable which stores the nodeidx info. when
  245.        saving.
  246. 4750 - Rewrote most of the command processor.  It's still buggy at this point
  247.        in time.
  248. 4751 - Changed strcpy() call in xxx_pascal_string() functions to memmove() in a
  249.        desperate attempt to fix the RA/SBBS crashing.  memmove() calls should
  250.        be a little more stable.  Small problem in ra_saveuseron() and
  251.        sbbs_saveuseron() corrected.
  252. 4752 - CrashProtDelay can now be set to 0 to disable Crash Protection in cases
  253.        where it's causing "vanishing acts".
  254. 4800 - RA USERON support overhauled, it's a little more efficient now.  Pascal
  255.        string commands now have PROPER errorchecking, which was long overdue
  256.        and probably why RA support was barfing out.  unbuild_pascal_string()
  257.        now takes the maximum length of the C string as its first parameter to
  258.        facilitate errorchecking.  build_pascal_string() now returns the length
  259.        of the string, not including the Pascal length byte.
  260. 4810 - RA debugging stuff removed, it seems to work now!  SBBS SUSERON support
  261.        overhauled, using the new RA USERON support as a framework.
  262. 4811 - Optimized build_pascal_string() a little more.  Forced all bbs_call
  263.        function calls to far.  Found & fixed serious problem in new SBBS
  264.        SUSERON support - the SUSERON file wasn't being opened!
  265. 4812 - Added check_nodes_used() call to start of bbs_useron().  Tracked down a
  266.        problem where TOP was copying a statustype regardless of whether or not
  267.        the status number was valid.  Local testing indicates this could very
  268.        well be the cause of the RA/SBBS crashing that has been haunting me for
  269.        so long!  Real-time testing will be needed to say for sure though.
  270. 4813 - Fixed problems with command processor.  Was using a bad method of
  271.        comparing the strings.  All of the other quirks (i.e. "/sewqrp" yielding
  272.        a whisper to Starhawk as "wqrp") all lie in the command checks
  273.        themselves now.
  274. 4814 - Re-updated SBBS support so it doesn't leave the SUSERON file open.
  275.        Hopefully this will mean it works properly from the SBBS side.
  276. 4815 - Fixed SBBS support.  It was ignoring the Line In Use bit so that's why
  277.        it wasn't working probably.
  278. 4816 - Fixed possible problem in top_output() with controlled length params.
  279.        If lenbuf couldn't be allocated it would still be memset() and that
  280.        would be potentially dangerous if it ever failed.  Added NULL function
  281.        checks to the bbs_call calls for added safety.  Who knows, maybe it'll
  282.        give clues to why RA support is crashing?
  283. 5000 - Added support for Channel Definitions and CHANNELS.TOP file.  Added
  284.        CHANNELS command and MaxChannelDefs config keyword.  Still need to do
  285.        some work with regard to using the channel topics and stuff, and at the
  286.        moment you can't change to a conference yet.  Personal channels are not
  287.        implemented, and SCAN needs updating to support channel names.
  288.        Moderator functions also need to be implemented, along with banning for
  289.        normal channels and invitations for personal channels.
  290. 5100 - Conferences can now be joined.  Channel Aliases can also be used.
  291. 5110 - Added "You're in channel xxx" and "Topic: xxx" displays.
  292. 5111 - SCAN enhanced to show channel names.
  293. 5112 - Added length checks to top_output()'s parameter field-length processor.
  294.        It now seems apparent that the crash in RA Support is actually due to
  295.        a bug in top_output() and not the RA Support at all!  I don't know if
  296.        this will fix it, but it's a good place to start.  Corrected getlang()
  297.        so it returns a string with a single \0 in it and not a NULL pointer,
  298.        which will make things prettier if a language prompt isn't given.  the
  299.        argptrs[] array is now initialized to \0s as well which should make
  300.        things prettier if a "too high" parameter number is given.
  301. 5113 - It now seems very likely that the problem in 5112 was the cause of the
  302.        RA crashing.  Testing of 5112 showed that only PART of the "Yes"
  303.        language item (used for page status) was copied!  Modified top_output()
  304.        to count the number of ^^ codes and add 2 bytes for each to lenbuf to
  305.        try and counter the problem described.  whos_in_pub() modified to only
  306.        display users in the current channel.  Problem with "leftover"
  307.        non-channel messages fixed (forgot to 0 the message idx byte for the
  308.        unneeded messages).
  309. 5114 - Added security checking to the JOIN command.  Also added displaying of
  310.        Personal Channels for future use.
  311. 5115 - Moved almost all string literals to language items in about the first
  312.        1/2 of the modules.  Still have the other half to go.  Added changes to
  313.        allow TOP to recompile under BC++/2 2.0, and fixes to smooth out porting
  314.        problems.  One fix includes a problem with user searching.  An
  315.        uninitialized variable was being used as a condition while searching for
  316.        a user's name, which under OS/2 caused the entire user searching
  317.        procedure to be bypassed!  Some other uninitialized variable problems
  318.        fixed too.
  319. 5500 - Converted to a brand new Poker which doesn't rely on the "first node"
  320.        method anymore.  Also converted 95% of poker text to lang file, with the
  321.        rest to come once testing is done.  Changed "more" prompts to call a
  322.        function and to (by default) delete themselves onscreen once used.  New
  323.        poker hooks put in, naturally.  Added data1 & minsec values to the
  324.        message structure and new global variables to accompany them.
  325. 5501 - Seem to have fixed all of the MAJOR bugs in Poker.  Fortunately there
  326.        weren't any that were hard to fix.  Added new OUT_STRINGNF type for
  327.        top_output() which tells TOP _not_ to filter colour codes when
  328.        outputting to a string, in case the string is going to be displayed
  329.        later.
  330. 6000 - Actions rewritten.  Multiple lists are now supported.  Each list can be
  331.        assigned to specific security levels and/or channels.  TOPACT.EXE is the
  332.        action compiler to convert the text files to binary, until an editor for
  333.        the binary files can be made.  The ACTION LIST command hasn't yet been
  334.        reimplemented.
  335. 6100 - Several more text movements to the language file.  Added @< (backspace)
  336.        code to output function.  It should also be noted that I have decided to
  337.        remove support for multiple-word commands.  It makes things too
  338.        difficult to manage.  I will be converting away from this shortly and
  339.        after that the command processor should run in tip-top shape.  Added
  340.        mnemonics to TOPACT for miniumum & maximum security settings, and
  341.        several ranges of channel settings.
  342. 6200 - Reimplemented ACTION LIST command.
  343. 6210 - Fixed more bugs with Poker.  It is now playable and should work well
  344.        enough to be tested by the beta people.
  345. 6211 - Fixed TOP/DOS's shelling!  Had to take out the preshell() and
  346.        postshell() functions, that cleared things up.  Ironic, since those
  347.        functions were actually supposed to _prevent_ crashing, but I guess that
  348.        crashing was due to something else.  Fixed a problem in TOPACT that
  349.        wasn't incrementing the counter and thus not properly compiling the
  350.        files.
  351. 6220 - Redid checkcmdmatch() a little.  It now _always_ matches exactly, and
  352.        expects a word rather than an entire string.  Commands in the language
  353.        file must now be one word.  Using an underscore to indicate two words
  354.        won't work.  Most of the major commands have been converted, and the
  355.        rest will be done after some testing has been completed.  Also fixed
  356.        problem where doing an action to ALL wasn't working.
  357. 6221 - @R (Repeat character) language token now works.  I couldn't make it
  358.        repeat other language tokens, unfortunately, but I may put in support
  359.        for some tokens (@X comes to mind) later.
  360. 6222 - Corrected whispering - it is now FINALLY done properly, using the normal
  361.        command processor and no tricks.  Corrected directed messages similarly.
  362.        Also moved whispering and directed messages to nearly the end of the
  363.        command checking function, just for safety.  Also made slight
  364.        modification to find_node_from_name() so that it would zero the return
  365.        string if there was no remaining string after the handle, to assist in
  366.        invalid command checking.
  367. 6223 - Converted the last of the main commands to the new command processor.
  368. 6230 - Modified main_loop() so that typing no longer blocks out messages.  This
  369.        is in preparation for the input/output split windows.
  370. 6500 - Implemented the basic dual window (input/output) pub chat mode.
  371. 6501 - Added CHANGE CHATMODE command to toggle between normal/dual window chat
  372.        mode.
  373. 7000 - Added most of the new command-oriented help system.  Still have to
  374.        diversify the help for commands with multiple words (like CHANGE).
  375. 7010 - Added CHANGE LISTED command to toggle whether or not a user's channel
  376.        number should be displayed to other users.  Added channellisted field to
  377.        the node_idx_typ struct.
  378. 7020 - Added these subcommands to the CHANGE command:  SEX, EMESSAGE, XMESSAGE.
  379. 7021 - Added the structlength field to the start of the node_idx_typ and
  380.        msg_typ, for third party developers.  Added the MSG_EXTCOMMAND for
  381.        future third-party support.  Added code to support the AllowActions
  382.        keyword.  Added ability to once again block text while typing, as well
  383.        as the option to have your own text echoed to you during chat (handy for
  384.        dual-window mode).  Both options are controlled from the Profile Editor.
  385. 7022 - Added the two previous CHANGE toggles to the profile editor as well.
  386.        Added ANSI checking in both CHANGE CHATMODE and the Profile Editor.
  387.        AVATAR is not currently allowed for DW mode because I don't know the
  388.        cursor store/restore codes yet.  Changed CHANNELS command to CONFLIST,
  389.        and updated help file name to reflect the change.
  390. 7023 - Added debugging log to INIT.C and searching in USER.C to help track the
  391.        persistant crashing.  Debug mode is triggered by the DEBUG switch after
  392.        the node number.
  393. 7024 - DEBUG switch now turns on Fortify, the memory checker I got off one of
  394.        the PDN echoes.  This may provide additional insight into why these
  395.        persistant but random crashes are happening.  At release of this beta,
  396.        I had it reporting nothing.  Hopefully in a crash situation, it will
  397.        report something to one of the testers.  Also used Fortify to track down
  398.        a slight but potentially fatal flaw in checkcmdmatch().  I forgot to
  399.        allocate space for the \0 in the tmpstore string.
  400. 7025 - New Maximus support fixed.  The logic for whether it was a new IPC file
  401.        was screwed.  Corrected bugs in BBS support that didn't bring TOP to the
  402.        proper screen location in dual-window mode before displaying incoming
  403.        pages.
  404. 7026 - Fixed problem where directed messages were working like whispers.
  405.        That's what I get for cutting and pasting.  Fixed several minor bugs
  406.        which I forgot to detail.  Added support for the AllowNewHandles
  407.        keyword.  If it's off, TOP will take the name from the drop file or name
  408.        prompt and use that in chat.  Changed extension of all temporary files
  409.        to .TCH, which will make them easier to find and safer to delete.
  410. 7030 - Added internal security levels and support for most of the
  411.        security-related configuration keywords.  Optimized PROCINP.C a little
  412.        so it returns after processing (faster).  Added SYSOP SETSEC commmand.
  413.        Tried to add support for the MaxPWTries keyword, but it was already
  414.        done (I changed the constant to the config value a long time ago).
  415.        Added support for local beeping control.  The short scan (ENTER) now
  416.        only displays the users in the current channel.  Extremely cheap user
  417.        security setter added to TOP EDIT running method.  TOP PACK now can
  418.        globally set user securities.  It now runs TOP PACK [<sec>] [<cds>].
  419. 7040 - Fixed LOOKUP command to now use the language file and respect the
  420.        cfg.usehandles setting.  Renamed TOP.CFG to CFG.TOP for consistency.
  421.        Changed the style of the node configuration.  It is now a text
  422.        configuration file, with the same options.  Fixed problem where RAP was
  423.        ignoring the "Ready" flag in USERON.BBS, thus showing users that were on
  424.        while RA was in WFC mode.
  425. 7041 - Found flaw related to the new node configuration loader.  The kludge
  426.        value for cfg.maxmsglen was too high (256 instead of 255), which would
  427.        cause memory overruns.
  428. 7500 - Simple character-by-character chat mode added for private chats.  CHAT
  429.        command added to engage this chat mode.
  430. 7501 - top_output() now recognizes the outproc... variables and will act
  431.        appropriately.  Modified the places that require certain code processing
  432.        to be turned off to use these variables.  Private chat mode now informs
  433.        the user who didn't press ESC that chat mode has been exitted, instead
  434.        of just dumping the user back to the Pub.
  435. 7502 - Added &%, &@, and &^ language parameter modifiers to top_output() to
  436.        dynamically toggle processing of codes.  The &% token doesn't actually
  437.        have an effect, yet.  I need to figure out a way to inform the message
  438.        processor not to use action codes first.
  439. 7503 - Fixed problem with secret actions not working (still using old command
  440.        recognition method).  Fixed problem where TOP wouldn't ask for a sex
  441.        for new users when the BBS is RA 2.0x.  I _thought_ that OD would get
  442.        the sex from the EXITINFO.BBS file, but after taking a look, it doesn't.
  443.        Fixed problem with Sysop commands not working.  Also removed the
  444.        shorthand form of the Sysop commands.  Finally fixed the problem with
  445.        the toss/zap comment displaying garbage sometimes.
  446. 7504 - Added /LOGOFF and /! commands for people to logoff from inside TOP.
  447. 7505 - Fixed a few small problems with the language file.
  448. 7506 - Added credit display to the TIME command.  Added support for credit
  449.        deduction in top_kernel().  Added cfg.usecredits variable & support.
  450. 7510 - Reenabled support for personal actions.  TOP will create a "fake" action
  451.        list as list number 0 and copy the info. from the user file to there on
  452.        startup.
  453. 7511 - Fixed problem with last-list actions not working.  Fixed problem with
  454.        directed messages and whispers not reporting people not logged in.  It
  455.        doesn't work exactly as I want it to (i.e. /fdfhg reports "fdfhg not
  456.        logged in" instead of "whisper not sent") but it works enough.  Fixed
  457.        serious bug where if the name after a bad action was too long, TOP would
  458.        crash.  Sometime a long time ago I forgot that tmphand[] may not just
  459.        have to hold normal handles but also failed handle inputs, and thus made
  460.        it too small.
  461. 7512 - Modified PRIVCHAT.C to call a share-aware file delete function
  462.        (sh_unlink()).  Fixed credit kernel to use credits by 1 minute instead
  463.        of 1 second, which is how RA does it.  Implemented possible temporary
  464.        fix for the reported "whisper-losing-first-character" bug.  Added %e
  465.        (he/she) action token.
  466. 7513 - Added the ability for actions to read and show external files from the
  467.        TOPANSIPath (%p token).  Added OUT_EMULATE mode to top_output() to
  468.        accomodate that and future file-display routines.  Fixed stupid stack
  469.        overflow error that occured when private chat was exitted.  The share
  470.        aware sh_unlink() function was calling itself instead of the regular
  471.        unlink() to do the actual deletion.  Finally fixed the damn midnight
  472.        clock overwrap bug.  I had to kludge in my own myclock() function to
  473.        manually compensate for the sudden loss of a day's worth of clock ticks
  474.        that happens at midnight under DOS.  Whether this is a DOS or BC++ 3 bug
  475.        I do not know.
  476. 7514 - Fixed careless error.  TOP tried to free the action-picture buffer even
  477.        when it wasn't being used, and the buffer was not initialized to NULL so
  478.        the dofree() shell had no way of blocking the problem.  Also changed all
  479.        uninitialized pointers to initialize to NULL to prevent the same mistake
  480.        in the future.  Updated copyright dates to say 1996.  Got rid of all
  481.        occurences of actionfil since it's no longer needed with multiple lists.
  482. 7515 - Fixed cheap error where directed messages were being sent privately.
  483.        I'm not being careful with my cutting and pasting.  Upgraded some of the
  484.        profile editor to use the language file, the rest will come.  It's
  485.        crashing right now but I'll fix that after it's all converted.
  486.        Optimized message-sending to remove some needless code-duplication.
  487. 7516 - Converted the rest of the profile editor to use language items.  Renamed
  488.        CFG.TOP to TOP.CFG, NODECFG.TOP to NODES.CFG, and CHANNELS.TOP to
  489.        CHANNELS.CFG.  Fixed potentially serious bug where TOP wasn't allocating
  490.        space for the personal action list pointer in addition to the rest of
  491.        the lists.  Thanks to Fortify for that one.  Also made small change in
  492.        INIT.C to not try to disable Fortify if the FORTIFY macro is not
  493.        defined, in preparation for a public release with no debug code.  Added
  494.        @E (Erase Screen) output token.
  495. 7520 - Converted every other known instance of hardcoded text to language
  496.        items, except the CHANGE and SYSOP command screens which need to be
  497.        converted to help screens.  Removed support for the user editor and
  498.        generic editor module.  Maybe in the future I'll put them back.
  499. 7530 - Added crude personal channel support.  Modified JOIN command to not exit
  500.        the channel until it is confirmed that the user can enter the new
  501.        channel.
  502. 8000 - Implemented Channel Management Interface (CMI).  Channel data is stored
  503.        in CHANIDX.TCH in the work path, and contains information like the
  504.        moderator, topic, and who is banned or invited.  This is in addition to
  505.        the information used from the CHANNELS.CFG file.  Currently, there is
  506.        no external difference from how channels used to be.
  507. 8010 - Added MODERATOR command and SETTOPIC subcommand.  For testing purposes,
  508.        right now anybody can change any channel's topic.  Modified cmi_load()
  509.        to check if the channel is not deleted before using it.
  510. 8100 - Modified cmi_setspec() to handle full and not found cases, as well as
  511.        fixed it to use the requested node instead of the current one .
  512.        Modified cmi_adduser() and cmi_subuser() to act on the current buffer
  513.        channel instead of loading a new one.  It makes it easier on me this
  514.        way.  Modified action processor and TOPACT so that "N/A" in the response
  515.        text field will cause no response to an action to be shown.
  516.        Changed TOP so that channel 0 is now a generic broadcast channel
  517.        for sending and receiving messages.  All nodes will accept messages on
  518.        channel 0 no matter which channel the user has joined.  Channel 1 is now
  519.        the lowest (and default) channel.  This also solves my dilemma over
  520.        whether or not to allow users access to channel 0.  I thought some may
  521.        find it confusing since the default channel on most BBS programs is
  522.        always 1.  Now I don't have to worry.  Support for SETMOD and Ban/Invite
  523.        commands added, though they are not yet acknowledged by other nodes.
  524. 8500 - Fixed initial problems with CMI loading/saving.  Implemented remaining
  525.        moderator commands on the receiving end.  Added support for
  526.        DefaultChannel keyword.  Optimized some areas that displayed channel
  527.        names to use a function I had written originally for this purpose in
  528.        CHANNELS.C but forgot about.  Joining (by command or force) a new
  529.        channel now shows a summary of that channel upon entering.  Changed the
  530.        channelname() function so it takes a channel number instead of a channel
  531.        definition, so it can be used with all functions.
  532. 8501 - Added moderatorship check before doing a moderator command.
  533.        Node deregistering now scans and removes the node from any specnode[]
  534.        field from all channels.  Fixed slight cosmetic bug with the channel
  535.        name when joining.  When a user is "evicted" from their current channel
  536.        a MSG_INCHANNEL message will now be sent to the new channel.  Sysops now
  537.        are exempted from channel and moderator restrictions.  Users are now
  538.        "evicted" from a personal channel if the user it belongs to exits TOP.
  539.        Inadvertantly found and fixed places where I totally forgot to write the
  540.        user's security to the node index.  Optimized check_dupe_handles() to
  541.        only read in the 31 handle bytes and not the entire user record, which
  542.        cuts the search time to 1/3 of the time needed before.  Need to do the
  543.        same to the user search code at the start of TOP later.
  544. 8502 - Fixed silly problem with SBBS support.  I had reordered and renamed the
  545.        BBS constants and forgot they were duplicated in TOP.H.  Because the
  546.        SBBS constant was reordered in one place and not in the other, SBBS
  547.        support wouldn't work.  The BBS constants are no longer duplicated in
  548.        TOP.H.
  549. 8503 - Corrected a few cosmetic bugs directly related to commands.  Added cheap
  550.        fix code to restore the amount of credits after exiting so RA doesn't
  551.        deduct them again causing a double loss of credits.
  552. 8504 - Made slight change to nodeinfo time saving to try to prevent crash
  553.        protection failing.  Doubt it will work though.  Added support for
  554.        configured unlisted channels in the WHO command.  Added ability to turn
  555.        actions off and back on.
  556. 8600 - Added ability to define custom commands that shell out to programs.
  557.        This is done via the new SPAWN.CFG file.  No external command list is
  558.        displayed yet, though.
  559. 8601 - TOP now looks for the NODES.CFG file in the same directory as TOP.EXE.
  560.        Added checking for pages inside private chat.  Temporarily disabled
  561.        spawning while some work is done to it.
  562. 8602 - Removed ability to perform some commands (FORGET, REMEMBER, CHAT) on
  563.        yourself.  Added checking to see if a user is on your channel for some
  564.        commands (WHISPER, DIRECT, actions).  Fixed slight problem with TOP
  565.        reporting no name when something is done to a user that has forgot you.
  566. 8700 - Finalized configuration options.  Implemented support for all remaining
  567.        configuration options.  Removed support for those options which are not
  568.        being used in the first release.  Fixed TOP so it properly uses the TASK
  569.        environment variable.
  570. 8701 - May have fixed the problem with crash protection.  I appeared to be
  571.        subtracting the current time from the old time, instead of vice versa.
  572.        Fixed problem with profile editor not showing pref2 settings correctly
  573.        (pref1 was being tested instead).
  574. 8800 - Added Private Chat task support.  Added chat disable during tasks by
  575.        using channel 0xFFFFFFFF as a "busy" channel.  Removed most debug code
  576.        (except Fortify and the wdl, which will remain for the gamma versions),
  577.        recompiled with more optimizations.  Added MSG_FORCERESCAN type and
  578.        support.
  579. 8801 - Added extra logging.  Added support for the LogFile field of the node
  580.        configuration.  Added global msgminsec and msgmaxsec variables for
  581.        future use.
  582. 8900 - Implemented the show_helpfile() function to simplify help file displays
  583.        throughout TOP.  Implemented support for help on all commands, including
  584.        multi-word commands, as well as non-command topics.  Added ability for
  585.        sysops to join channel 0 to make global announcements.
  586. 8901 - Fixed several problems in Private Chat which were introduced in recent
  587.        modifications.  One was the exitting was not being detected properly,
  588.        thus stranding nodes sometimes.  Also, an accidentally inserted send of
  589.        a MSG_INEDITOR message caused the pcnode variable to be reset to -1,
  590.        which prevented proper operation.  Damn my cutting and pasting!  Also
  591.        fixed private chat's CPU hogging.  There is still a slight problem if a
  592.        user exits Private Chat before the other user is ready, because each
  593.        node deletes the EPR* files before entering chat.  Right now, I will
  594.        take this problem over the one caused by potential "loose" EPR* files,
  595.        because a) it is less serious than a loose EPR* file, and b) it is less
  596.        likely to occur.
  597. 8902 - Fixed problems with cmi_busy().  I tried to cut corners and paid for it.
  598.        The curchannel variable wasn't being set which was one problem.  Also,
  599.        the messages needed to be processed while the channel was still
  600.        0xFFFFFFFF so the node wouldn't think it was back in the channel and
  601.        display them.  Optimized the mused variable with the lastmsgused
  602.        variable, all in process_messages().  This means TOP no longer requires
  603.        special conditions about whether or not to display the message prefix -
  604.        it can determine this on its own.  Fixed long-time cosmetic bug in Dual
  605.        Window mode.  Extra CR/LFs were sometimes being shown.  Fixing this bug
  606.        involved overhauling a lot of the language file as well as globalizing
  607.        the onflag variable.  Probably too much work for a simple
  608.        non-destructive cosmetic bug, but at least it looks nice now.
  609. 9000 - Implemented new registration system for OS/2 and updated DOS
  610.        registration to use new key and reg. type.  Fixed some flaws in the
  611.        language file usage.  Fixed problems resulting from command
  612.        channel-checking.  Redid check_nodes_used() so it also checks the
  613.        handles, which does away with the load_online_handles() function. This
  614.        was also necessary for nodes to catch other nodes who did not join TOP
  615.        in their channel.  activenodes[] now converts all users not in the
  616.        current channel to the value 2 for easy testing.  msgglobaldata variable
  617.        added to make global sending of messages easier.  Some messages that
  618.        needed to be globalized (FORGET, REMEMBER, etc.) now are sent globally.
  619.        MSG_FORCERESCAN is no longer used at this time though support for it
  620.        will stay in in case I need it later.  Disabled ability to do
  621.        ban/inviting commands to self.  Fixed globalness of sysop commands.
  622.        Fixed problem with cmi_unbusy() not properly rejoining the channel.
  623.        Fixed cross-channel chatting.  Fixed profile editor message sending.
  624.        Fixed SYSOP SETSEC command.  Fixed short credit screen.  Fixed
  625.        cfg.actionusesec usage with actions themselves.  Changed TOP to test
  626.        user.security instead of od_control.user_security.  Fixed CHANNELS.CFG
  627.        and .TAC loaders to use the TOPPath setting.  Fixed stupid passing of
  628.        NULL on some messages, which TOP/2 didn't like.  Added NoRegName keyword
  629.        and support.  Fixed problem with displayed "vanished" nodes.  Released
  630.        as TOP v2.00g1.
  631.  
  632. Version 2.00
  633.  
  634. 9001 - Recompiled TOP/DOS with OD 6.00.  Changed giveup_slice() calls to
  635.        od_sleep(0) calls.  Changed BBS code to use the new bbs_call_pageedit
  636.        function hook.  Moved page editor to the ra_longpageditor() function,
  637.        which now also uses the new od_multiline_edit() function introduced in
  638.        OD 6.00.  It still needs to use the od_fsedit() call from Doors/2,
  639.        though.  The max_shortpageeditor() also needs to be added.  Added
  640.        modifications to compile with OD for Win95 and BC++ 4.52 and released a
  641.        limited beta version to see if it works.
  642. 9002 - Fixed a spot in the new user procedure where TOP used AllowNewHandles
  643.        instead of AllowHandles.  Added support in the node config for OD 6.00's
  644.        new RTS/CTS support.
  645. 9100 - Added basic Censor and required CENSOR.CFG loading information.  It
  646.        still needs to be able to distinguish whole words or parts of words.
  647. 9110 - Added ability for sysops to pick the default new user preferences to
  648.        suit their own language file and system.  This is done by the
  649.        DefaultPrefs keyword.
  650. 9111 - Fixed compilation error in the Win95 version.  I had Dynamic runtime
  651.        library linkage turned on, which meant the users needed a .DLL that I
  652.        didn't include.  However, it was found to crash so more work will need
  653.        to be done.
  654. A000 - Implemented the long-awaited Biography feature, including configurable
  655.        questions file, editor, and "fill out all" mode.  The editor is entered
  656.        using the BIO command.  Changed LOOKUP command to call up a user's
  657.        Biography instead of the cheap summary from before.  Created
  658.        find_user_from_name() function to get a user's record num and data from
  659.        a name.  Modified startup code to use this function, which will speed up
  660.        the initial name search a bit as the new function only reads the name
  661.        and handle during searching.
  662. A100 - Added Maximus/2 MCP support at last.  Unfortunately, Max/2 doesn't make
  663.        this easy.  It does not disconnect its own pipe, leaving double nodes on
  664.        the who's on list, and causing all pages to be sent to nodes twice.
  665.        There is no correction for this at this time.  The module BBSMAXMC,
  666.        which contains this support, compiles only in the OS/2 version of TOP.
  667.        Added the max_shortpageeditor() function for one-line pages.  Moved
  668.        MECCA string display code to its own function.
  669. A110 - Corrected small bugs with MCP support.  Added ActionPrefix keyword to
  670.        allow periods or other characters or words to prefix action commands
  671.        (eg. ".yawn").
  672. A111 - Changed from using atexit() to od_control.od_before_exit, since the
  673.        former wasn't working under OS/2.  Put in a printf() so this can be
  674.        confirmed during testing; this will need to be removed later.  Reenabled
  675.        the ability to process & tokens, which also required the creation of an
  676.        argnum variable to store the argument number instead of getting in
  677.        dynamically each time - probably what I should have done in the first
  678.        place.  I am not convinced that the & processing is stable with regard
  679.        to the process flags remaining FALSE for subsequent outputs, but it
  680.        seems to work fine so I'll leave it as it is for now.
  681. A112 - Added a language item to display if a user is typing text and gets
  682.        interrupted by an incoming message.  Unfortunately, the detection for
  683.        this situation isn't working so it will need to be fixed later.  Also
  684.        discovered that the censor replacement text doesn't work if the text
  685.        isn't the same length as the offending text.  This may have been done by
  686.        design (I forget), but it needs to be changed in future.
  687. A120 - Added the USERLIST command.
  688. A121 - Removed some remaining Press Any Key prompts (hopefully all of them, but
  689.        we'll see).
  690. A122 - Got rid of few (unimportant) instances of regular int variables being
  691.        used instead of XINT.  There are a few more, but these require header
  692.        changes which I'm not willing to do just yet.  MCP support now won't
  693.        poll node 0, which Max/2 does not use.  The last MCP message is now
  694.        saved and the next incoming message is compared to it, in an attempt to
  695.        circumvent Max/2's double-paging (described above).  A match also removes
  696.        the last message, so if a user sends the same message twice it won't be
  697.        ignored.  Fixed a problem where the MCP msgbuf isn't freed after it's
  698.        used, and though that's not a big problem under OS/2 with only small
  699.        amounts of memory in question, it's still obviously not a wanted effect.
  700. A123 - Fixed a bug in the bio editor that was using the question number instead
  701.        of the record number when saving responses.  Fixed a very stupid
  702.        oversight where I forgot to add CMI support when joining Conferences,
  703.        which made them totally unpredictable.  This should fix a reported
  704.        problem where the security wasn't being checked as well.  Fixed problems
  705.        with channels being wrongly displayed as Unlisted under OS/2, and to a
  706.        lesser extent under DOS.
  707. A124 - Temporarily disabled the profanity censor as it is causing problems.
  708. A125 - Fixed the profanity censor by telling it not to try to censor words that
  709.        are longer than the remainder of the string to be checked.  Also fixed
  710.        the censor so it will now properly use replacement words that are not
  711.        the same length as the one being censored.  I was using the wrong string
  712.        length here.
  713. A126 - Removed references to the user description, as the Bio makes that
  714.        obsolete.  Changed fixname(), trim_string(), and filter_string() to
  715.        check for 0 length strings and ignore them.  Added message processing
  716.        for the MSG_INBIOEDITOR and MSG_OUTBIOEDITOR types, which was omitted
  717.        when the Bio Editor was added.
  718. A127 - Replaced a key line of code (the call to find_max_score()) that
  719.        accidentally got deleted in the last version.  Gotta be more careful
  720.        with that Ctrl-Y key I guess.
  721. A128 - Removed all references to the description field completely.  Added the
  722.        sendtimemsgs() function which uses the od_control.od_time_msg_func hook
  723.        to trap "time left" or "inactivity" messages and echo them to the user
  724.        as proper MSG_GENERIC messages.  The blocktimemsgs global variable has
  725.        also been added, which is set to TRUE while TOP is processing messages,
  726.        thus preventing the sendtimemsgs() function from causing sharing errors.
  727.        If a time message is received while this variable is TRUE, TOP will just
  728.        use od_printf() to inform the user.  This may be enhanced in the future
  729.        so it does not interfere with displays that may be on the screen.
  730.        Removed the printf() that displays when TOP has exited abruptly.
  731.        Added a process_messages() call to before_exit(), which is needed so
  732.        "sorry, time is up" messages can be seen.  I thought I put this in long
  733.        ago, but either I didn't, or it was causing problems so I took it out.
  734. A200 - Rewrote the name parser function (find_node_from_name()).  It now looks
  735.        for exact matches first, then looks for partial matches.  It uses much
  736.        less memory and should also be faster!  The find_max_score() function is
  737.        also no longer used, as name scoring is done inside the main function on
  738.        a "save high score only" basis.
  739. A201 - Fixed a stupid mistake with the new processor.  I was copying the data
  740.        for newstring to the handle string by accident.
  741. A202 - Added a temporary fix for %P tokens in personal actions.  It may become
  742.        permanent depending on how the attempt to fix the crashing related to
  743.        unfound %P files goes.
  744. A203 - Fixed where I foolishly forgot to make the above fix work for just
  745.        personal actions.  Added the FixNames configuration keyword to control
  746.        whether or not the fixname() function does anything.
  747. A250 - Fixed a problem where TOP was letting Max/2 MCP pages and other messages
  748.        get through, which making a mess of the prompt line.  I had forgotten to
  749.        make TOP check to make sure the messages were of CMSG_HEY_DUDE type.
  750.        Added the ForceBio option which forces users to fill out their
  751.        biographies before they can chat.  The Bio editor now sends out
  752.        MSG_BIOCHG whenever users change anything in their biographies.  Fixed a
  753.        minor bug where I didn't put the user in "busy channel" mode while
  754.        they're in the bio editor.  Also changed TOP to use constants relating
  755.        to the busy and maximum channel numbers.  Added FORCEOFF setting to
  756.        FixNames keyword so TOP will auto-correct the capitalization of existing
  757.        users' handles or names.  Added a TOP icon and more information for the
  758.        About window in TOP/95.  Corrected a small mistake in checking for
  759.        failed Bio string questions under the minimum length requested.  Changed
  760.        all remaining instances of int to XINT, except of course where int is
  761.        needed (eg. WinMain() in TOP/95).  Fixed a non-initialized variable in
  762.        the new name parser which was causing TOP/2 to exit with a TRAP 5.
  763. A251 - Revised some of the errorlevels to make more logical sense, and to get
  764.        rid of the conditions with unassigned errorlevels that were just using
  765.        44.  Moved the error message and log message for a sharing violation
  766.        error (in the openfile() function) to the language file.  Obviously I
  767.        had thought it wasn't necessary to do so, but I want to be complete so
  768.        it's there now.
  769. A260 - Removed support for the FixNames keyword.  Unfortunately, OpenDoors and
  770.        Doors/2 have an auto-capitalizer for names as well, and until I have the
  771.        time to work around this, FixNames won't work.  In order to preserve the
  772.        use of the .DLL files for the OS/2 and Win95 versions, I can't just
  773.        change the door kits and recompile, so something else will have to be
  774.        figured out.  Made %m mandatory in personal action singular & plural
  775.        text to prevent "fake" messages from users.  Wrote the 2G1TO200 upgrade
  776.        program which will enforce the same requirements on existing personal
  777.        actions.  Changed Max/2 MCP support so the BBSIPCPath can now be set to
  778.        the pipe defined for Maximus.  Corrected two small bugs in Maximus
  779.        support.  One was with MCP support where the header wasn't being
  780.        properly added to messages, and the other was with regular support where
  781.        not a large enough buffer was being used to hold the MaxPageHeader
  782.        language item.  REALLY fixed the TOP/2 unlisted channels bug.  I'd made
  783.        a silly typo that stopped it from working.  Fixed the detection for when
  784.        a user is typing and is interrupted by a message so that the language
  785.        item (*** or whatever) will now display properly.
  786. A270 - Extended censor coverage to all input strings in TOP, except for strings
  787.        >= 512 bytes written with the long page editor, which are too big for
  788.        the censor to handle right now.  Corrected a small mistake on my part in
  789.        the long page editor.  I was using the FS language strings for the
  790.        regular page editor and regular strings for the FS editor.  Fixed a
  791.        cosmetic bug where a CR/LF would be sent if you were typing and somebody
  792.        you've forgotten sent a message to you.  Fixed where *** was being sent
  793.        to people even with Block Msgs While Typing turned on.  Fixed the very
  794.        long standing "rogue MECCA code" problem with Maximus pages (damn
  795.        typos!).
  796. A280 - Finally enhanced the find_node_from_name() function to take the entire
  797.        last word as part of the handle, not just the significant letters.  This
  798.        means that if two people with similar handles are in TOP and one person
  799.        leaves while another person is whispering to him/her, TOP will say that
  800.        it can't find the handle, rather than sending the message to the other
  801.        person because the first letters matched.  Also changed the same
  802.        function to only copy the first word or 30 characters of what the user
  803.        typed, whatever is less.  This means if a user does an invalid whisper,
  804.        the user won't get the entire message dumped back at him/her.
  805. A281 - Implemented "whole word" feature of the censor.  Fixed a crash with the
  806.        Bio editor using the censor.  I wasn't giving the response string a big
  807.        enough buffer.  I should really change that 256-byte minimum on the
  808.        censor buffer, though.  Changed the 511 byte limit on long page
  809.        censoring to 255, for the same reason.  Fixed the BIO command so it only
  810.        works if it's the only word typed, like the other commands.  Fixed a
  811.        problem with multi-word handles and the new name processor.  Fixed
  812.        another problem with the name processor logic that stopped the
  813.        not-specific-enough detection from working with any command where the
  814.        handle doesn't end the string.  Fixed a third name processor problem
  815.        with the returning of invalid/unspecific handles.  Only showing the
  816.        first word wasn't enough if the error was in the second or later words,
  817.        so this has been removed (though the 30 character limit is still in
  818.        place).
  819. A300 - Implemented SHARE detection in TOP/DOS.  Fixed problems with Dual
  820.        Window chat mode.  Finally fixed the problem with & tokens and
  821.        talktypes.  They still won't work but internal modifications have been
  822.        made so that language token processing is turned off after the
  823.        talktypetextstart length has been processed.  Fixed a small problem with
  824.        the wrong handle being used in invite/ban notifications.  Finally added
  825.        single-line paging (eg. /P 4 Hey there!").  Fixed problems with the page
  826.        function return values that were causing the page confirm/error messages
  827.        to not be sent properly.  Censor enhanced to ignore colour codes in the
  828.        middle of words.  Released as v2.00.
  829.  
  830. Version 2.01
  831.  
  832. A301 - Restarted development after a year off.  Demand is becoming significant
  833.        for me to get something done.  It was probably always there but I was
  834.        both unwilling and unable to seek it out, until now.  Now that I have a
  835.        new HD I can keep TOP "in easy reach" to work on it as well.  More
  836.        important, I enjoy working on TOP and wish to resume at least minor
  837.        development.  Fixed the bug that prevented the Win95 version from
  838.        working.  I had forgotten to exclude the clock_tick timeslicing macro
  839.        from Win95 compilation, and Win95 didn't like it.  TOP/DOS is now
  840.        compiled using BC 4.52 instead of 3.0.  Now that I'm running Win95 and
  841.        always have access to the Windows IDE that 4.52 uses, there's little
  842.        point in my keeping BC 3.0 installed.  Also, thanks to system upgrades,
  843.        TOP can now be fully compiled in under a minute.  It used to take at
  844.        least five.
  845. A310 - Fixed the bug that prevented high ASCII from working.  Apparently BC
  846.        doesn't like ?: tests inside parentheses.  Updated copyright dates to
  847.        say 1997.  ASCII 127 (delete) is now interpreted as a backspace.  It was
  848.        previously treated as displayable, but this is not always the case on
  849.        some terminals.  The CHANGE command now issues MSG_SEXCHG and
  850.        MSG_EXMSGCHG messages when the appropriate commands are entered.
  851.        Removed the trim_string() calls that change the real name and handles
  852.        passed from the drop file.  Apparently they are a security risk.
  853.        Directed messages now echo if the user has text echoing turned on.
  854.        Fixed slight logic error that allowed backspaces even with no text
  855.        typed.
  856. A311 - Commented the source code in preparation for making it available.  The
  857.        buffer that holds action output has been expanded to hold 1000 extra
  858.        bytes.  If too many tokens were used in personal actions it was possible
  859.        to crash TOP.  The extra bytes should solve this problem for personal
  860.        actions and normal actions.  The only possible way it could still occur
  861.        is if a sysop goes nuts with tokens in a pictorial action. Fixed a small
  862.        bug where the XMsgPrefix wasn't being used (again due to cutting and
  863.        pasting).  Updated copyright dates to say 1998.  Fixed small bug where
  864.        the OpenDoors security was not being updated to the actual security in
  865.        local/LAN mode, which occurred due to careless searching and replacing.
  866. A320 - Started fixing bugs found while making comments.  Got rid of an old
  867.        RAPColour code compensator in the trim_string() function.  Fixed where
  868.        the censor was using the number of non-comment lines in CENSOR.CFG,
  869.        which made the count too high and wasted memory.  It now divides the
  870.        number of counted lines by 3, the number of lines per definition.  The
  871.        channel summary now stops as soon as it finds another user in the
  872.        channel, instead of continuing to count the users.  The count is no
  873.        longer used so aborting saves time.  Fixed another problem in the name
  874.        processor with multi-word handles.  Now specifying one full word of a
  875.        multi-word handle will work properly with things like secret actions.
  876.        TOP should (hopefully) now get the user's DND status from the BBS useron
  877.        file and save it in the NODEIDX.  There's no way for me to test this,
  878.        unfortunately.  RA credit support enhanced slightly.  Now a negative
  879.        number _will_ cause TOP to deduct the credits, while a positive
  880.        number will not (the old behaviour).  I've had old reports saying RA
  881.        won't deduct while my original tester said it would, so now TOP supports
  882.        both ways.  Maybe it's a RA 2.00/2.50 thing.
  883. A321 - Found and fixed a memory leak in the Profile Editor that has been around
  884.        for quite a while, probably since multiple action lists were added.
  885.        Thanks to Fortify once again!  I forgot to add one byte for the
  886.        terminating \0 when reallocating the action pointers in the personal
  887.        action editor.  Personally I have not had this bug cause a problem but I
  888.        had a report of an infrequent TRAP on an OS/2 test system, and I suspect
  889.        it was because of this leak.
  890.