home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 3 Comm / 03-Comm.zip / mrp_099p.zip / MR2READ.ME < prev    next >
Text File  |  1994-12-17  |  83KB  |  1,658 lines

  1. MR/2 - A QWK Compatible Mail Reader for OS/2.  12/17/94
  2.  
  3. Copyright (c) 1994, Knight Writer Software Company.
  4. All rights reserved.
  5.  
  6. ===================================================================
  7.                           N O T I C E
  8. ===================================================================
  9. This IS a shareware package, and does require a registration fee if
  10. you choose to continue using it after 30 days.   The registration
  11. fee is currently $25 US.  Eventually, the product MAY have a
  12. "begging" screen with a key-file that will register the software
  13. and suppress it.  The more interest I get, the more likely I am to
  14. continue with improvements.
  15. ------------------------------------------------------------------
  16.  
  17. CONTACTING THE AUTHOR
  18. =====================
  19.  
  20. You  can contact me in a number  of ways.  Unfortunately, I can't
  21. provide a phone number at this time.
  22.  
  23. US Mail:       Nick Knight
  24.                1823 David Ave.
  25.                Parma, Ohio 44134
  26.  
  27. Fido netmail:  1:157/2 to "Nick Knight"
  28.  
  29. Internet:      User "Nick Knight", (nick.knight@pcohio.com)
  30.  
  31. Fido Echomail: Find the Fidonet OS2PRODSUPPORT conference.  I'm there.
  32.  
  33.                Echomail messages to  me in more general conferences are
  34.                discouraged, as keeping them "on  topic" and
  35.                interesting to the masses would be difficult.  I do
  36.                read OS2, OS2PROG, C_PLUSPLUS and DR DEBUG daily,
  37.                though.  OFFLINE echo also (deals with mail readers),
  38.                this might be THE place to ask public questions, eh?
  39.  
  40.                I recently have acquired access to a host of other
  41.                networks with OS/2 conferences.  These include RIME,
  42.                SmartNet, Uninet, Intelec, Nanonet, Racenet and some
  43.                others I can't remember.
  44.  
  45.                I also do poll the Fidnet OS2PRODSUPPORT echo.
  46.  
  47. Direct BBS:    Leave a message on the Nerd's Nook BBS (1:157/2) at (216)
  48.                356-1772, 356-1872 or 356-1431.  I check in here
  49.                multiple times a day.  I will also keep the most recent
  50.                copy of MR/2 posted here.  Other boards (non-local)
  51.                will get updates at my convenience.
  52.  
  53. Internet FTP:  Well, during normal business hours, 8-5 or later EST,
  54.                my work machine is on the internet.  I have an anonymous
  55.                FTP "site" setup as a directory on my machine.  This is
  56.                a hit-or-miss proposition, but you can try it.  Ftp to
  57.                nick.raleigh.com.  You can upload bugs, packets, notes,
  58.                whatever.
  59.  
  60.                AGAIN, this will only be available when our company SLIP
  61.                connection is up, when our LAN Server network is running,
  62.                and when my machine is on (almost always).  It's very
  63.                "hit or miss".
  64.  
  65.  
  66. **************************************************************************
  67. **************************************************************************
  68. **             NOTE:  Nerd's now supports an MR/2 conference            **
  69. **             and file area.  Conference #208 is dedicated to          **
  70. **             MR/2 support and files.  File area #45 contains          **
  71. **             MR/2-related files.  Any file uploaded into              **
  72. **             conference 208 will be placed in file area 45.           **
  73. **************************************************************************
  74. **************************************************************************
  75.  
  76.                Nerd's does support file requests (157/2 or 157/3)
  77.  
  78. Compuserve:    I check only once a week or thereabouts.  Try mail to my
  79.                user ID  - 76066,1240, although internet mail has proven
  80.                to be a faster approach.
  81.  
  82.  
  83. Changes included in v2.15
  84. -------------------------
  85.  
  86. Still a beta.  I'll call v2.2 a "real" release.  In the meantime, I'll
  87. continue to poke with large, currently-working features :)
  88.  
  89. o   Had to modify the messaging-viewing support code to handle much longer
  90.     search strings.  Most routines had support for 80-100 character match
  91.     strings, and MR/2's search engine now allows 255 characters.  If you
  92.     used a longer string, many strange things would happen.  Seems to
  93.     work now.
  94.  
  95. o   I massively modified the VC file handling system.  Again.  I tested
  96.     fairly thoroughly, and my time trials showed an extremelly minimal
  97.     improvement.  Considering all that I did, I'm pretty dissappointed
  98.     :(. BUT, my system is massively-double-cached ... meaning I have
  99.     large OS/2 disk caches, on top of a caching IDE controler with 4 MB
  100.     of cache RAM. Hopefully there are some *real* improvements resulting
  101.     from this, and my machine's just not the best for showing these.
  102.     Details follow.
  103.  
  104. o   Modified the string matching logic added in v2.14 to be more efficient.
  105.     Some work on the conference matching parser also.
  106.  
  107. o   Changed the VC process so that it opens a large-buffered FILE structure
  108.     instead of sharing the main process's open, raw file handle.
  109.  
  110. o   Changed the way VC index files are opened and written too.  Previously,
  111.     only one index file could be open at a time, and a process of closing
  112.     the current one and opening the "next" one in append mode was used.
  113.     I now open each index file once and it remains open until all VC's are
  114.     built.  I then close ALL index files at this time.  Index files were
  115.     converted to use raw file handle output as opposed to the previous
  116.     buffered-stream mode.  I dynamically change the maximum allowed count
  117.     of file handles to facilitate this change.  If this fails, the old
  118.     method is used as a backup.
  119.  
  120. o   When building of virtual conferences is complete, MR/2 now invoked the
  121.     command file "SaveVCs.CMD", if it exists in the MR/2 home directory.
  122.     The current version of this cmd file pkzip's ALL modified NDX files
  123.     back into the original packet.  This happens as a BACKGROUND process,
  124.     invoked using the "start /b /c" command.  This has two benefits:
  125.  
  126.     Virtual conference NDX files are saved with the packet, so that VC's
  127.     are built only once per the life of the packet.  Any subsequent
  128.     opening of this packet will already have the VC structure intact and
  129.     available for instant reading.
  130.  
  131.     Packets without NDX file altogether will now have ALL MR/2-created
  132.     NDX files saved for subsequent opens.  For example, the QWK packets
  133.     produced by MR/2's MQWK packet merging utility do not include NDX
  134.     files.  Each time you would open a packet created with this utility,
  135.     MR/2 would build the NDX files from scratch.  This is now required
  136.     ONLY the very first time the packet is opened.
  137.  
  138.     NOTES:  If the command file processing fails, the only harm should be
  139.     that the NDX files are missing from the QWK packet.  That's no
  140.     different than what happened previously; MR/2 will just try again the
  141.     next time the packet is opened.
  142.  
  143.     If this new system is undesirable for any reason, simply remove (delete)
  144.     "SaveVCs.cmd" from the MR/2 directory.
  145.  
  146.  
  147.  
  148. Changes included in v2.14
  149. -------------------------
  150.  
  151. BETA!  Everything here is very new and, although, I've been using it every
  152. day, is bound to have a problem or two.
  153.  
  154. NOTE:  Old VC strings may not work as they used to.  It's IMPORTANT and
  155. very simple to fix this ... Make String = \word1\word2\word 3 into
  156. String = "\word1\word2\word 3" and all will work as it did in the past.
  157. Only strings containing embedded spaces need to be wrapped in quotes.
  158.  
  159. o   I *think* I have a personal internet FTP site set up on my machine! :)
  160.     See "Contacting the author", above.
  161.  
  162. o   Previously, the bbsname.cfg file for a specific BBS was overwritten
  163.     with a packets control.dat file, regardless of the age of the
  164.     packet being opened.  If the packet was a year old, that BBS would
  165.     then have a year old CFG file saved for it.  MR/2 now copies only if
  166.     the "new" file has a newer date than the existing file.
  167.  
  168. o   Modified the Virtual Confenence builder's "Conferences" command to
  169.     accept both ranges and text wild card strings.  For example,
  170.     the following Conferences commands will now work:
  171.  
  172.         (NULL) or *             All conferences
  173.         1,2,3,4                 1 2 3 or 4
  174.         1-4                     1 through 4
  175.         1-4,100,200,1000-       1->4, 100, 200 or 1000 and greater
  176.         -1000                   through 1000
  177.         alt*,comp*              all named starting with alt or comp
  178.         !200,alt*,comp*         all named starting with alt or comp
  179.                                 EXCEPT 200
  180.  
  181.         !200-300,!17,alt*,comp* starting with alt or comp EXCEPT 200-300
  182.                                 and 17 EXCEPTIONS SHOULD COME FIRST as
  183.                                 first "match" terminates the check
  184.  
  185.         *.*                     any confernce with a dot in its name
  186.         17,254,alt.*,comp.*     all alt/comps and conferences 17 and 254
  187.         *-R, *-F                All conferences ending in -R or -F.  For
  188.                                 PC-Ohio, this would be all RIME or FIDONET
  189.                                 conferences, respectively.
  190.  
  191.     "Negatives" are available to exclude certain conferences by number or
  192.     name.  As the above states, negatives or excluded conferences should
  193.     be listed first, as the first criteria the conference fits in causes
  194.     the routine to cease checking.  For example:
  195.  
  196.         !100-150,1-1000
  197.  
  198.     will include conferences 1 through 99 and 151 through 1000.  Any
  199.     conference from 100 through 150 will fit the first catagory, which is
  200.     negated/excluded, so messages in these conferences will NOT be included.
  201.     However:
  202.  
  203.         1-1000,!100-150
  204.  
  205.     This will include all conferences 1 through 1000.  Since any message
  206.     in the range 100-150 will first qualify as a match for the first range,
  207.     the second range will never cause a message to be excluded.  The first
  208.     example is the correct way to exclude conferences.
  209.  
  210.     NOTE:  The support of ranges and wildcards has caused a slowdown in the
  211.     creation of VC's.  While "minimal", I plan to add some code to support
  212.     original-style Conferences commands using the old method.  The most
  213.     efficient commands will consist of singular numbers.  Next in up in
  214.     efficiency would be numeric ranges.  NOTE that, where large ranges are
  215.     concerned (more than 50 conferences?), this is more efficient than
  216.     individual listings.  Finally, wildcard and/or text-strings matches
  217.     are CPU-intensive, and will cause slower VC building.  Still, the
  218.     flexibility offered by wildcards and numeric ranges far outweigh
  219.     the "small" cost in performance.  The decision is left to you.
  220.  
  221.  
  222. o   Boolean match logic is now available for both virtual conferences
  223.     and real-time (F, ALT-F) searching.  The "old" method of or'ing
  224.     strings together is still supported, although I'm having some
  225.     problems with this.  Perhaps an INI variable later ...
  226.  
  227.     Keywords can be OR'd together, AND'd together and/or NOT'd.  In
  228.     addition, parenthesis can be used to control the evaluations of
  229.     the test.  There is also an operator that will match a word,
  230.     remaining sensitive to case.  I've also added support for quoted
  231.     strings so that spaces and the special boolean operator symbols
  232.     can still be searched for.  Some simple examples:
  233.  
  234.         (OS/2 | OS2) & !WARP    (OS/2 or OS2) and not warp
  235.         Windows & OS/2          Windows and OS/2
  236.         Windows | OS/2          Windows or OS/2
  237.         ^warp                   warp, but ONLY if all lower case letters
  238.  
  239.     The "operator" symbols follow the conventions used by C and C++ for
  240.     boolean operations:
  241.  
  242.         &   is the AND operator
  243.         |   is the OR operator
  244.         !   is the NOT operator
  245.         ()  cause the expression inside to be
  246.             evaluated as a single expression.
  247.  
  248.     and one other that I added:
  249.  
  250.         ^   causes a case-sensitive match to be performed.
  251.             The word that follows must be found with
  252.             matching capitalization to be concidered a
  253.             "match".
  254.  
  255.     The following will find all messages that contain one of two
  256.     different words referencing OS/2 that also mentions "bugs".
  257.     if the message doesn't match under this criteria, then it is
  258.     tested for the words "Windows" and "slow" in the same messages:
  259.  
  260.         ((OS/2 | OS2) & bugs) | (Windows & slow)
  261.  
  262.     The following is somewhat similar.  It will also find all messages
  263.     that contain one of two different words referencing OS/2 that also
  264.     mentions "bugs".  If the message is found to match, then it is
  265.     tested for the words "Windows" and "slow" in the same messages.
  266.     If these words are both found, however, the message is eliminated
  267.     (compliments of the "!" NOT operator):
  268.  
  269.         ((OS/2 | OS2) & bugs) & !(Windows & slow)
  270.  
  271.     When MR/2 displays a message that has bee "found", all words
  272.     contained in the match string will be highlighted.
  273.  
  274.     A few more examples:
  275.  
  276.         ObjectPM | "Object PM"      spaces are ignored unless witin quotes
  277.  
  278.         "R&D"                       operator characters must be in quotes
  279.                                     if part of a search string.
  280.  
  281.         R&D                         finds the single letters R and D,
  282.                                     anywhere in the message.  This *isn't*
  283.                                     what you want!
  284.  
  285.         "(ch | 0xFF)"               more special characters within quotes.
  286.                                     The operator characters will be treated
  287.                                     as any other characters.
  288.  
  289.         """Windows"""               Looks funny?  It will find the Windows
  290.                                     in message but only if between quote
  291.                                     marks.  Two quotes together are treated
  292.                                     as a single " mark, but they must still
  293.                                     be part of an entire quoted string.
  294.                                     Tricky?  Maybe.  Just know that ...
  295.  
  296.         ""Windows""                 WILL NOTE WORK, and that ...
  297.  
  298.         "can you say ""neighbor""?" will find the prase 'can you say
  299.                                     "neighbor"?'  The word neighbor mus be
  300.                                     within quotes to be concidered a match.
  301.  
  302.         "&Windoze"                  Soundex search for anything sounding
  303.                                     similar to "Windows".
  304.  
  305.         ^warp | phasers             Looks for the word "warp" in all lower
  306.                                     case ONLY, or the word "phasers"
  307.  
  308.         ^NT | ^Nick                 Looks for the capital letters "NT" or
  309.                                     the string "Nick" where only the N is
  310.                                     capitalized.
  311.  
  312.     MAXIMUM seach criteria length for VC's is 256 bytes (after the "="
  313.     marker).  All must be on a single line.  Nesting is supported
  314.     further than anyone will need it (limitted only by stack space).
  315.     Other ideas are in head ... let me know if you come up with any
  316.     handy and/or clever ideas :)
  317.  
  318. o   The old stuff.  I've got all of my old w1\w2\w3 strings working
  319.     as-is, but there were problems with embedded spaces that used to
  320.     be seen as significant parts of the string.  They aren't any more.
  321.     To get search strings that include spaces to work, simply wrap the
  322.     ENTIRE string inside quotes.  For example:
  323.  
  324.         String = "TekRam\DC-6\DC6\Promise\Caching IDE"
  325.  
  326.     These will probably be "unsupported" quickly, as they're part of the
  327.     reason that performance is down (checking for or's in two places now).
  328.  
  329. o   Expands the FIND criteria entry forms to hold much longer search-for
  330.     strings.  I also saw that this was another case where light red on
  331.     white was being used.  Changed to dark-red on white.  Much easier to
  332.     see!
  333.  
  334. o   The mouse, when set in single-click mode was totally unusable with
  335.     selection lists.  Fixed.
  336.  
  337. o   NOTE that my tests show that I've slowed down the creation of virtual
  338.     conferences by 10-20%.  I have applied several optimizations and
  339.     rearranged, and this has helped.  I see room for a couple of major
  340.     performance enhancements, and those will be applied next.
  341.  
  342.  
  343. Changes included in v2.13
  344. -------------------------
  345.  
  346. o   Help screen for the editor was STILL missing the ALT-* (paste)
  347.     key combination.  Added.
  348.  
  349. o   Lots of questions about FolderOrder.  Past Docs don't clearly state
  350.     all the possibilities.  MessageOrder and SortOrder can have values
  351.     of:  Subject, DateTime, From, To or MessageNumber.
  352.  
  353. o   SplitLongReplies = YES would not work ... you would have to specify
  354.     a line count, otherwise the response was read as NO.  Fixed.
  355.  
  356. o   I spent quite awhile with a user, trying to figure out why his
  357.     internet replies weren't working correctly (they weren't using the
  358.     INTERNET template, although all appeared to be setup correctly).
  359.     Turns out he had HeaderEditing set to AFTER.  This usually won't
  360.     work.  I now check for this conflict and change HeaderEditing to
  361.     BOTH if either INTERNET or NETMAIL conferences have been specified.
  362.     I *do* post a warning on the first message of each session, and
  363.     explain how to remedy this.  There is still a potential problem with
  364.     RIME routing (no way to specify PRIVATE before a reply to a public
  365.     message is created with HeaderEditing set to BEFORE), but this is
  366.     more difficult to detect.  I will create and post on Nerd's a
  367.     "How to ..." document.  This will save me a ton of time in the
  368.     future, as most of my support efforts have been in this area.
  369.     When questions arise, I'll simply send this boilerplate as a
  370.     message.
  371.  
  372. o   More minor example template tweaks.  Removed a couple of lingering
  373.     references to my last name, added another example of a netmail
  374.     routing line.  There are now three routing lines for a netmail
  375.     message, *one* of them should be correct (most cases should be
  376.     covered).
  377.  
  378. o   ADD/DROP was broken due to the change to 5-digit conference support.
  379.     Fixed this ... hopefully that's the last bug caused by this change.
  380.     I also cleaned up the ADD/DROP prompt (conference name was 1 char
  381.     off ... cosmetic, all related to the 5-digit change).
  382.  
  383.  
  384. Changes included in v2.12
  385. -------------------------
  386.  
  387. o   Editing a reply and saving it would (sometimes) cause a crash
  388.     when the reply conference was exitted.  This was non-destructive;
  389.     the reply would be OK, it was a function of the new sorting that
  390.     was slightly off.  Fixed.
  391.  
  392.  
  393. Changes included in v2.11
  394. -------------------------
  395. BETA as far as I'm concerned.  Seems to work just fine for me, but I
  396. changed lots of basic, its-been-working-forever code.  Please do not
  397. distribute widely ... and report any problems immediately.  If all checks
  398. out, I'll post it widely next weekend.
  399.  
  400. o   MQWK.CMD - added and tested command lines for using zip/unzip
  401.     (InfoZip utilities).  Tested with the DOS versions; assuming
  402.     command lines are the same.  Comment out the first set of lines,
  403.     uncomment out the second.  NOTE that zip failed when run with
  404.     the "start" command so as to run it in the background.  It seems
  405.     zip wants to open the source file in a mode that conflicts with
  406.     the fact that MR/2 also has it open.  Too bad; the PK utilities
  407.     work OK this way.
  408.  
  409. o   More minor tweaks to the conference index builder.  Someone
  410.     complained recently, so I thought I'd have a look.  I see room for
  411.     some *big* improvements! :)
  412.  
  413. o   When modifying a reply, the fact that the NEW reply had a later date
  414.     than the OLDER version would case the message pointer to seem to
  415.     "shift" to another message.  This was after you would save the reply
  416.     ... the message viewer showed something different.  This would only
  417.     happen if other replies had a matching subject.  I now sort the
  418.     reply headers differently.  I disregard date/time when sorting after
  419.     a reply-modify.
  420.  
  421. o   Ooops.  Forgot to list Ctrl-O on the Editor help screen.  Fixed.
  422.  
  423. o   I modified the conference header sort massively.  It now uses a
  424.     btree sort with minimal data movement.  This fix, in addition to
  425.     the other little tweaks a day or two ago, result in a great speed
  426.     boost.  My informal testing (watching the MR/2 clock tick away)
  427.     involved loading one 800 message conference, and another with 402
  428.     messages.  The larger conference took 15 seconds to load with the
  429.     old MR/2, it now takes about 5.  The smaller conference's time
  430.     dropped from 6 seconds to about 2-3.  The larger the conference,
  431.     the bigger the difference will be.  Smaller conferences will show
  432.     smaller improvements.  Overall, things are just *much* faster.
  433.  
  434. o   Converted all internal storage and formats to support 5 digit
  435.     conference numbers, as long as these numbers remain in the
  436.     16-bit range (up to 65,635).  A user reported a BBS system that
  437.     used thousands as a group identifier, and the remainder as the
  438.     sub-sconference number.  This was a big change, and I'll test
  439.     thoroughly before releasing.
  440.  
  441. o   Packet selection screen was expanded 2 characters and underlying
  442.     logic modified to support packets from BBS's with 8 characters
  443.     names, and with 2 digit TE/2-style collision suffixes.  For example,
  444.     NERDNOOK.QWK;99 could not be opened, renamed or passed to MQWK.CMD
  445.     when merging packets.  This appears to be working better.
  446.  
  447. o   Another error dialog has been added.  This one agains warns if the
  448.     working directory has been specified on a different-but-valid drive
  449.     (a potential problem).  There's even one more problem to detect; as
  450.     MR/2 requires the work directory to be a subdirectory off of its
  451.     "base" location. This would occur rarely, and is not destructive,
  452.     whereas the one that are now detected and avoided were.
  453.  
  454. o   Added a third level sort to the subject thread sort procedure.
  455.     Threads are now sorted by Subject, then date/time, then message
  456.     number.  As reported, split message all may have the same date/time,
  457.     and this usually assures that they appear correctly.
  458.  
  459. o   Editing a message header, then requesting to "pick a conference"
  460.     from the master list.  Previously, typing letters did not jump to
  461.     the first prefix match.  Fixed.
  462.  
  463. o   Add in a new INI parameter for myself - FolderOrder.  This has the
  464.     same parameters as MessageOrder, but allows a different sort to be
  465.     applied to the ReplyLog and Inbasket.  I found myself constantly
  466.     converting these folders to date/time sort, so I decided to add
  467.     an option to default the sort for just these folders.
  468.  
  469.     NOTE:  By default, FolderOrder = -1, which means that the
  470.     MessageOrder is used.  Sort orders will work the same for everyone
  471.     unless they specify this option specifically.
  472.  
  473. o   Further modified the message sorting ... if DATE/TIME sort is active,
  474.     a secondary sort level of message number is activated.  Same reasons
  475.     as it was added as the 3rd level on subject sorting.
  476.  
  477. o   Revamped the INI parser once again.  My while() loop kept growing,
  478.     and I kept breaking the compiler.  It's now broken into two
  479.     separate routines, which gives me plenty of room for expansion, but
  480.     also increases the possibility that bugs have been introduced.
  481.  
  482.  
  483. Changes included in v2.1
  484. ------------------------
  485.  
  486. o   I found rather large memory leak when using the internal editor.  It
  487.     seems that the cleanup routines ... something I've never looked at
  488.     before and always *assumed* were just fine (NOTE: the editor started
  489.     as a third party editor "toolkit", which I have modified extensively).
  490.     Well, the cleanup routine was empty; totally empty.  I added about 8
  491.     free() calls to release committed but unneeded memory.  I found this
  492.     when I went to add the "cleanup" counterpart for:
  493.  
  494. o   The internal editor now has an undo capability ... unlimitted levels.
  495.     I keep a record of all block delete's and CTRL-X line deletes.  You
  496.     can use CTRL-U to insert the text in reverse order of the deletes.
  497.     Inserts are always to the current cursor position.  In a way, this can
  498.     be used as an intra-document cut/paste.  Each of the two editor buffers
  499.     has its own undo-delete list.
  500.  
  501.     Let me know if you can think of any other place to store text for
  502.     "undoing".  I'll look through the code for more possibilities, too.
  503.     NOTE that I do *not* pay attention to presses of the delete key (for
  504.     removing a character at a time).
  505.  
  506.     NOTE:  CTRL-U previously would delete a marked block.  There are
  507.     several other ways to do this, so I remapped this key.  I hope
  508.     this won't confuse anybody :)
  509.  
  510. o   Well, I finally had to fix the long-time Zortech file open bug,
  511.     instead of dodging it.  ZTC's fopen(), the call used often to open a
  512.     file for reading and/or writing would NOT return NULL on error.
  513.     This is a C/C++ standard - to return NULL if an open fails.  I
  514.     thought this was just a problem on open-for-reads, but I find that
  515.     opening a file for write that fails (a bad file name or path, for
  516.     example) STILL returns an "ok" value.  This was masking the real
  517.     reason one user's VC's were crashing.  Not that I know the real
  518.     reason, yet, but the diagnostics that have always been there can now
  519.     work.  I cleaned them up further, and tested them using a hand-made
  520.     bad file name.  In this example, instead of crashing whenever the VC
  521.     thread hits its first message, a polite failure message *should*
  522.     display on the screen.  The VC process will terminate if ever an
  523.     open fails.  Now, to see what file name this user's system is trying
  524.     to open ... :)
  525.  
  526. o   I love the Internet! :)  In a single 24 hour period, I was able to
  527.     exchange private mail with the aforementioned user a couple of
  528.     times, actually upload a test MR2.EXE to his machine via ftp (I
  529.     don't yet have personal access like this - a friend "demoed" it to
  530.     me :).  There was still enough time to get the tell-all error
  531.     message back from him!
  532.  
  533.     If you specified a fully-qualified WorkPath, either in the INI file
  534.     OR on the command line (for example, WorkPath=C:\mr2\Work or
  535.     /WC:\mr2\Work, the VC index building process would crash.  I now
  536.     handle this for both cases.
  537.  
  538. o   In testing the above, I happened to try a drive/path that didn't exist
  539.     at all.  I used /WJ:\mr2\tmp, where the J drive is non-existent on my
  540.     machine.  I picked a packet (of pickled peppers? ... oh, sorry, long
  541.     day :), MR/2 pathed to the defined work dir, which of course failed,
  542.     and then proceeded to clean out the directory.  The directory it
  543.     cleaned out happened to be my MR/2 home directory (source code and
  544.     all).  Bummer!  Good thing I keep great backups and hadn't done much
  545.     work since I backed up!
  546.  
  547.     And I remember arguing with a user publicly that MR/2 wouldn't
  548.     delete files unless the chdir succeeded.  Ooops.
  549.  
  550.     NOW, if the change directory fails, a nice 10-12 line dialog box
  551.     pops up, explains the problem, shows you your workpath, then
  552.     promptly exits w/out deleting a single thing.
  553.  
  554. o   Modified the edit header logic slightly.  When editing a message
  555.     header where the original message's "from" field is blank, MR/2
  556.     now tries to use the @Internet@ value for the TO field.  I've
  557.     received mail before this way, and when I replied, my message had
  558.     a blank TO field and was uploaded to the BBS this way.  The message
  559.     made it to its destination, but since PCBoard views a blank TO as
  560.     being equivelant to "ALL", everyone else on my BBS could read it.
  561.     In other words, it was not PRIVATE on my home board.  Since PCBoard
  562.     ignores the TO line if there's a TO: line in the message, I could
  563.     have put anything there, but the INTERNET address (truncated) seemed
  564.     appropriate.
  565.  
  566. o   Minor internal editor fixups ... things like names on the top of both
  567.     editor windows are correct and stay that way, the search prompt
  568.     now stays at the title bar or the "owner" window.
  569.  
  570. o   I modified the Editor=Internal INI options to accept another
  571.     parameter.  Editor=Internal,FullScreen (or just the work "FULL")
  572.     puts the editor into full-screen mode.  This uses ALL display lines
  573.     when editing a file instead of leaving the source message header
  574.     displayed.
  575.  
  576. o   When switching the Editor specification in MR2.INI back and forth
  577.     between Internal, ME/2 and/or an external editor, MR/2 would
  578.     sometimes ignore the requested change until restarted from scratch.
  579.     This works much better now, except ME/2 still doesn't shut down
  580.     after it is no longer the requested editor.  Minor nit - I'll fix
  581.     it eventually.
  582.  
  583. o   When MR/2 packs the folders, a check is made to see if the folder
  584.     file is empty (size equal to 128 bytes).  If it is, the file is
  585.     removed.  Also, MR/2 will try to remove any BBS-specific folder
  586.     directory on packet exit.  If the directory has *anything* in it,
  587.     the remove will fail (as it's supposed to).  If empty, as is
  588.     sometimes the case, the directory will disappear.  This will prevent
  589.     the system from collecting directories for BBS's for which no data
  590.     is stored in a folder.
  591.  
  592. o   Subject sorting was modified to make DATE/TIME the secondary sort
  593.     field, rather than message number.  I made a bold assumption that
  594.     the other way would never really give the desired affect and that
  595.     (as many have requested), DATE/TIME is indeed the proper second
  596.     sort option.  If anyone disagrees, please speak up and I'll add
  597.     BOTH choices as options.
  598.  
  599. o   When using the INI parameter SourceFile, MR/2 now starts in the
  600.     reply buffer with ALL of the text in the source file marked.  A
  601.     simple ALT-C or ALT-M will copy/move the block into the reply.
  602.  
  603. o   The default template file  "Subject:" line for NewInternet was
  604.     changed from @ISUBJECT@ to @SUBJECT@.  This will keep MR/2 from
  605.     "inventing" long internet subjects and will instead insert the
  606.     SUBJECT value from the message header.  You can modify the subject
  607.     in the message while editing, if desired.
  608.  
  609. o   Another memory leak plugged - this time in deleting the list of
  610.     conference message headers.  There was also an unneeded call to
  611.     lookup and format the Conference name in this loop.  This was
  612.     removed (microscopic speed improvement).
  613.  
  614.  
  615. Changes included in v2.09A
  616. --------------------------
  617. Another short-lived release; v2.09 had a serious bug.  I offer this
  618. release quicker-than-planned to ward off potential problems.  I still
  619. plan on a bunch more minor fixes, fixing anything else that turns up
  620. wrong with the next internal editor changes, and releasing v2.1 in,
  621. say, another week?
  622.  
  623. o   Modified the folder-packing process.  This procedure often left
  624.     unattached "source" messages in the log well after the parent
  625.     message was gone.  I've written a little checker/diagnostic utility
  626.     to help me watch how well this works, so I'll be watching closely.
  627.  
  628. o   Ooops!  Ctrl-S from within the internal editor did nasty things.  It
  629.     did save the work to disk, but then it closed the file and cleaned
  630.     up.  This caused later saves to fail.  Fixed.
  631.  
  632. o   Initial MR/2 startup now uses the internal editor instead of E.
  633.     Don't know why I didn't switch to this before.
  634.  
  635. o   MR/2 used the E editor as the default if not specified.  Now it's
  636.     the internal editor.
  637.  
  638. o   Modified the help subsystem slightly - HELP works when editing the
  639.     INI file with the internal editor.
  640.  
  641. o   Modified the default colors specified in the default MR2.INI file.
  642.     Message text was in yellow, now it's in bright-white and the HEADER
  643.     data is in yellow.  I like this better.
  644.  
  645. o   Modified the default first-time startup code to copy example.tf to
  646.     template.tf, if template.tf is not found.  Template.tf is the default
  647.     template file specified in MR2.INI.  Previously, if a new user did not
  648.     put out the effort, templates would not be used ... the INI simply
  649.     specified a template file that did not exist.  Now one *will* exist.
  650.  
  651. o   Modified the example.tf file and removed all references to my name :).
  652.     In place of my name, I've inserted the string @Mix@@UserName@.  This
  653.     takes the user name from the QWK packet, mixes the case and signs
  654.     all message that way.  For "Reply-To:" lines in internet templates,
  655.     I simply left this blank.  If the user gets this far, he can edit the
  656.     template and fill this in himself.
  657.  
  658. o   Another pathing patch so that, when using ME/2 as your editor, pressing
  659.     ALT-C to edit MR2.INI works ok.
  660.  
  661.  
  662. Changes included in v2.09
  663. -------------------------
  664.  
  665. o   Better protection and diagnostics for read_line overflows.  All of
  666.     my sequential file (text) access to read a "line" are now protected
  667.     by a "max" count value.  If this value is met, a crude warning is
  668.     displayed, a keypress is requested, and the line is truncated.  This
  669.     has been the suspected cause of a large number of unsolvable crashes
  670.     ... any files that gets corrupted or modified when CR/LF's are
  671.     removed can cause this.  Now, at least there is a warning, some
  672.     information, and no crash.
  673.  
  674. o   Trying to solve an obscure VC crash for a user, I made minor changes
  675.     to the VC search process.  Just for my information/reference later :)
  676.  
  677. o   Ooops.  I temporarily saved the SplitLongReplies value in a character
  678.     variable.  That caused overflow/rounding, so that specifying 300 line
  679.     messages resulted in 44 line messages (300-256=44).  You could not
  680.     get messages longer than 256 lines.  Fixed.
  681.  
  682. o   When saving a message (or BBS file) to a save file, entering a bad or
  683.     invalid file name would show no error message or indication of a
  684.     problem, even though the save failed.  This has been corrected to where
  685.     MR/2 will beep and stay at the file name prompt until a valid save file
  686.     name is specified, or ESCAPE is pressed.
  687.  
  688. o   I somehow readded the problem where matching conference names failed to
  689.     insert the second name in the master conference list.  This is, again,
  690.     fixed.
  691.  
  692. o   If you opened a packet with existing replies, unpacked them, then killed
  693.     all replies (so no active replies remained), MR/2 would exit and leave
  694.     the original reply packet intact.  It is now removed (renamed to a .old)
  695.     and none of the killed replies are registered in the reply log.
  696.  
  697. o   Cosmetic: left over garbage in background when a "no packets exist"
  698.     box is displayed has been removed.
  699.  
  700. o   If no BBS .cfg files existed, MR/2 would display a message about
  701.     not having any QWK packets available.  Fixed.
  702.  
  703. o   Internal editor work - LOTS of it :).  I'm not telling yet! :)
  704.     (Just in case bugs are found with what "used to work" ...)
  705.  
  706. o   Ok, fine.  I'll tell you about the editor.  I'll put this out for
  707.     some user-testing, then issue v2.1 when it appears all the kinks are
  708.     out.  I will add INI variables to specify full screen editing (all 25
  709.     lines) and initial split-window sizing.
  710.  
  711.     - Optional 2-buffer, split window editing.
  712.  
  713.     First, if you add the INI parameter SourceFile=somename.txt, MR/2
  714.     will automatically go into full screen, split window editing mode on
  715.     reply.  If you don't do this, the editor starts off looking the
  716.     same, but new keys are enabled:
  717.  
  718.     CTRL-O   Open a new file (in the secondary buffer only)
  719.              prompts for file name, asks if save old one if modified
  720.              *This ALWAYS opens the file into the TOP, extra window/buffer*
  721.  
  722.     CTRL-D   Divide the editing screen into 2 equal parts
  723.     CTRL-C   Close/Hide the current editor Window (if split only)
  724.     CTRL-G   Grow the current window to full size (if split only)
  725.     CTRL-S   Save the current file
  726.  
  727.     CTRL-UP       Move the divider bar up one line
  728.     CTRL-DOWN     Move the divider bar down one line
  729.     CTRL-PAGEUP   Expand the bottom window all the way
  730.     CTRL-PAGEDOWN Expand the top window all the way
  731.     ALT-N         Give the NEXT editor buffer the focus
  732.                     (split or two full screens - Shift F3 works, too)
  733.  
  734.     ALT-C will now copy *across* windows.  If nothing is marked in the
  735.     current window, the other window is checked for a mark.  ALT-M will
  736.     do the same; if text is not highlighted in the current window, it
  737.     will check the "other" window, cut the marked text and paste it to
  738.     the current cursor position.
  739.  
  740.     Sorry, I had to change some things:
  741.  
  742.         FIND was remapped to CTRL-F (from CTRL-S)
  743.         FIND NEXT was remapped to CTRL-N (from CTRL-F)
  744.  
  745.     And, for compatibility with ME/2:
  746.  
  747.         ALT-X    Save and exit whole editor.
  748.  
  749.     If you don't do the SourceFile thing, then you can still open CTRL-O
  750.     a file or two for reference.  For example, just today, I CTRL-O
  751.     opened MR2.DOC and cut a couple of lines from that.  Same with a
  752.     snip from pmmle.h.
  753.  
  754. o   Editor Help screen updated to show new key functions, also now includes
  755.     clipboard access keys.
  756.  
  757. o   ME/2 USERS:  I fixed it now so that ME/2 is initially loaded *after*
  758.     MR/2 switches the path to the working directory.  This means that
  759.     the old ME/2 "erc 100 - reply.msg" error due to a pathing problem is
  760.     fixed by default.  Your old INI ReplyFile specs will work.  If you're
  761.     not using ME/2, this change *will not* effect you.
  762.  
  763.  
  764. Changes included in v2.08
  765. -------------------------
  766.  
  767. o   By request, and it made sense, the conference name is displayed
  768.     at the top of the message index screen.  I simply show the
  769.     "packet id" string that is optionally shown on the message viewing
  770.     screen.
  771.  
  772. o   I noticed that the reply header editing screen still was using that
  773.     aweful light red color (on top of white) for the current field.  I
  774.     changed this to normal red, and I think it's much easier to read.
  775.  
  776. o   Also by request, when MR/2 clears the screen to pack replies, a
  777.     simple message is posted informing you of this.  On some system,
  778.     the delay was significant, and with the screen totally blank,
  779.     confusion resulted.  The message is simple and modest; I depend on
  780.     the archiver to write to stdout, and pretty-stuff wouldn't scroll
  781.     off the screen nicely.
  782.  
  783. o   MR/2 would sometimes "lock up" when moving backwards through message
  784.     by thread (using Ctrl-PageUp or backspace).  This has been fixed.
  785.  
  786. o   Importing text into the internal editor (Alt-R) would often result
  787.     in the cursor being shifted to the right one character from where
  788.     keypresses would insert characters.  This has been fixed.
  789.  
  790.  
  791. Changes included in v2.07
  792. -------------------------
  793.  
  794. o   Minor changes - mostly in the interface and communications between
  795.     my external PM editor, ME/2.
  796.  
  797.  
  798. Changes included in v2.06
  799. -------------------------
  800.  
  801. o   Rime-routed messages that were long enough to be split missed the
  802.     auto-routing line placement logic on secondary parts.  I was looking
  803.     for too exact a match on "RIME".  Also, I keyed on "Postlink" within
  804.     the original message to tell if it was routed.  Editing the header on
  805.     pass two, the original message was no longer available.
  806.     Anyway, fixed :)
  807.  
  808. o   Added support for ME/2, a PM-based editor I've been playing with.
  809.     ME/2 is an MDI-based editor with toolbar, statusbar, multiple
  810.     file windows, speller, thesaurus, simple printing ... tons of
  811.     features.  I'm putting it out at the same time as this (ME2_099.zip).
  812.     If you use ME/2 as your editor, it is preloaded by MR/2 on startup.
  813.     MR/2 can control it using IPC tricks, so response is better than
  814.     you'd get with any normal PM editor.  Session switching back and
  815.     forth is handled automatically.  See the me2.doc file included with
  816.     the ME/2 distribution zip.
  817.  
  818. o   INI parameter added - "SourceFile".  If specified, a source message
  819.     that is being replied to will be quoted to this file, and the actual
  820.     reply file will contain no quoted text, just an empty template
  821.     read-to-complete.  This is used by ME/2 as an option, and may be
  822.     useful for other setups.
  823.  
  824.  
  825. Changes included in v2.05
  826. -------------------------
  827.  
  828. o   Resolution of the source Internet address enhanced slightly.  I moved
  829.     the check for PC-Boards @From: specifier before some of the others, as
  830.     if this line is there, it's much more reliable than searching for the
  831.     tokens like "From: ".  Some of my recent replies detected invalid
  832.     Internet addresses.  This should help. (After a couple of replies,
  833.     it does! :).
  834.  
  835. o   Setting extended attributes on packets stored on a LAN Server network
  836.     drive would actually modify the datestamp.  I added code to query the
  837.     original date/time and then reset this *after* the EA's were applied.
  838.     Seems to behave properly now.
  839.  
  840. o   I screwed up and overwrote a large, completely unread packet tonight.
  841.     I was bummed.  But wait!  I now save the PTR file and can reset my
  842.     pointers!!  Only ... MR/2's saving mechanism seems to have been broken
  843.     and I uploaded a 3 month old file.  Needless to say, I got more messages
  844.     than I needed!  What a mess ... I had to reset all my pointers by hand
  845.     and I know I missed some mail.  I then fixed the date compare of PTR
  846.     files.  They should overwrite the existing one now, if newer, and do
  847.     it correctly.  For whoever it was that reported this and that I
  848.     ignored ... you got your revenge!
  849.  
  850. o   MR/2 would crash when you pressed escape from the "NO PACKETS FOUND"
  851.     message.  Had something to do with the aggressive optimizations.  I've
  852.     "unoptimized" a bit until I can figure this out.
  853.  
  854. o   I made a slight goof when I fixed the recursive variable replacement
  855.     in the last release.  I made it so any *real text* with an "@" in it
  856.     would get removed, whether it had a "\" proceeding it or not.  You see,
  857.     the "\" would *not* be there the second pass, so the "@" was unprotected.
  858.     If there was a string between two @'s, this would be removed too, as
  859.     it was assumed it was an invalid variable name.  I now leave unresolved
  860.     variables in the text as-is.  This bug effected mostly fidonet
  861.     and internet addresses.  Fixed.
  862.  
  863.  
  864. Changes included in v2.04
  865. -------------------------
  866. NOTE:  This version includes alot of optimization from compiler switches
  867. and from some rearranging of localized code.  I used it personally for
  868. several weeks, and the only "problems" I saw were minor video (cosmetic)
  869. issues ... like a "black hole" for a second or two when one of the "use
  870. existing?" prompts comes down.  I'll track this, but you may see it until
  871. the next version.  The fixes in this release are beneficial, and the
  872. video problems just minor and cosmetic.
  873.  
  874. I've also traced some recent slow downs to the folder subsystem; packing
  875. log files and building indices in particular.  I do this way too often, and
  876. it takes too long.  I will spend some time on these shortly, attempting to
  877. hit the disk far less than happens currently.
  878.  
  879. o   New INI variable "ALIAS" allows you to set a user name for yourself
  880.     other than the one found in the BBS Control.dat file.  This alias
  881.     name will be placed in the FROM field of all your replies.  Best used
  882.     in a "local", BBS-specific INI file when accessing multiple BBS's.
  883.     For Example:  Alias=Billy-Bob will override the settings in Control.dat
  884.     (say for this example the BBS name was "William B Gooden").  Replies
  885.     would come from Billy-Bob.
  886.  
  887. o   Turns out that the @variable logic was not as recursive as I had
  888.     advertised.  For example, inserting a "phrase file" line that
  889.     contained yet another variable to replace did not work.  It does now :)
  890.  
  891. o   Fixed a crash when modifying replies (changing, killing ...).  If the
  892.     subject happenned to end in column 25 with a number BUT not be a
  893.     "split reply", MR/2 would crash looking for the "/" in "x/n".  For
  894.     example "OS/2 <...> 2.11" would cause this crash to occur.
  895.  
  896. o   Reply log would not always be accessible without an existing packet.
  897.     If you had no messages in your inbasket or replies for a specific
  898.     BBS, ALT-E (No packet entry) would not allow access to the reply log.
  899.     Fixed.
  900.  
  901. o   Some major under-the-hood work.  I played around with some compiler
  902.     switches that have always been there, but have remained undiscovered
  903.     until now. <read: it sometimes pays to read the manual, even if
  904.     it's 3 years late :>.  I've compiled MR/2's code, including the
  905.     speller, thesaurus and editor, with 286-or-better code generation
  906.     turned on.  The 386 code generator caused problems, and I still have
  907.     some v1.3/286 users.  One day I'll go full 32-bit, but not yet :)
  908.     Also, I turned on some aggressive optimizations.  I also recompiled
  909.     the ZTC tools with these switches.  I tried the C runtime library,
  910.     but it showed some bad signs, so I switched back.
  911.  
  912.     All this does is provides a little more snap, and a 12k reduction
  913.     in EXE size.  Nothing revolutionary, but every bit helps.
  914.  
  915.  
  916. Changes included in v2.03
  917. -------------------------
  918.  
  919. o   ADD/DROP still had a problem whenever the DOOR and CONTROLNAME
  920.     specifiers did not match (in dorr.id).  Fixed.  Cammail-Gold door
  921.     configuration now works.
  922.  
  923. o   Reply logging would work wonderfully ... until you started replying
  924.     to subsequent packets into the same REP file.  In other words, if
  925.     you had a week's worth of packets (as I ended up having), and rifled
  926.     through ALL of them without uploading replies, only the replies from
  927.     the first packet would be logged.  I fixed another bug after that
  928.     having to do with source messages, but this wasn't relevant until
  929.     the other bug was tackled.
  930.  
  931. o   Killing replies with multiple parts:  fixed the bug that killed the
  932.     WRONG messages.  Big bug (sorry), but it works now.
  933.  
  934. o   Fixed some problems and made some enhancements to the Fidonet node
  935.     detection logic (replacing @FIDONET@ with the source message's
  936.     fidonet address).  Three digit zones are now supported where two
  937.     digits was the previous max (800:676/23).  There was a problem with
  938.     "@" symbols as part of the Origin line text - fixed.  I also now
  939.     attempt to extract the Fidonet address from a source message format
  940.     that I had never seen before.  This format came from a source on
  941.     the NITELOG BBS, one which is home to many MR/2 users.  I now
  942.     look for and use the "Reply:" line when found in a source netmail
  943.     message.
  944.  
  945. o   When using U to UNMARK a message (to unkill a reply, for example),
  946.     the INDEX markings would not be removed.  Fixed.
  947.  
  948. o   Reports of sporadic crashing:  some users have emailed me with
  949.     crash-reports and supplied debugging addresses.  Often these
  950.     point me right to a problem.  I have a couple of addresses that
  951.     are in general routines, and the information supplied is not
  952.     helping.  I haven't forgotten you!  I'm looking for these and
  953.     trying to come up with another way to find these.  I am also
  954.     changing the way I archive older version so as not to "lose"
  955.     the chance of making sense out of info from these older version.
  956.  
  957.  
  958. Changes included in v2.02
  959. -------------------------
  960.  
  961. o   Modified the after-packet-selection processing so that a local
  962.     INI might be loaded *before* the unzipper is called.  I've always
  963.     held that MR/2 can't know the true BBS name until the packet is
  964.     unzipped and the control.dat file is parsed.  What happens now is,
  965.     as soon as a packet is selected, a "base name" is derived from
  966.     the packet name.  For example, "e:\dl\pc-ohio.qwk;12" would be
  967.     whittled down to "pc-ohio".  If an INI file is found with this
  968.     base name, it is instantly loaded.  Again, this is *before* the
  969.     packet is opened, so that BBS-specific unzippers can be identified.
  970.     If an INI cannot be found matching this derived name, then MR/2
  971.     tries again, the old-fashioned normal way, after the packet has been
  972.     opened.  If one is found on the first try, no secondary loading is
  973.     performed.  This *should* work in most cases, particularly when
  974.     OS/2 comm packages are used.
  975.  
  976.     NOTE that this is *still* too late to identify a different "working"
  977.     directory.  MR/2 has already changed the default path by this time.
  978.  
  979. o   Mouse hot spots on message viewing screen changed a little.  I made
  980.     clicking on the word "Subject:" equal to pressing the "Q" key and
  981.     anywhere after the ":" and up to the "Conf:" word is still the same
  982.     as pressing "H".  This adds easier access to the Q key.  Previously,
  983.     the entire area was mapped to the "H" key.
  984.  
  985.     While I was at it, I added three more hotspots.  The only correlation
  986.     between word and feature is that the word starts with the same letter
  987.     as the feature.  That's how I picked the area :).  Click on the "Ref#"
  988.     area to "R" Reply.  Click on the "Date" area to "D" defer.  Click on
  989.     the "Status" area to "S" Save.
  990.  
  991. o   That pesky lockup that occured when marking and deleting a block
  992.     up to and including the EOF marker has been squashed.  I could easily
  993.     recreate it here, now it seems to be handled.  I simply make sure that
  994.     the end mark can't be placed on or after the EOF triangle.
  995.  
  996. o   Bug:  With PositionOnMatch set to NO, the key-word highlight would
  997.     also be suppressed for virtual conferences.  Now the keywords hilite
  998.     regardless of the setting of this switch.
  999.  
  1000. o   By request ... remapped the numeric keyboard "5" key, when not in
  1001.     numeric mode (arrows are active) to be equivelent to the ESCAPE key.
  1002.     As was pointed on, one can now do most message selection and
  1003.     reading/movement functions from just the numeric pad.
  1004.  
  1005.  
  1006. Changes included in v2.01
  1007. -------------------------
  1008.  
  1009. o   Trying to open the WELCOME.QWK packet in the home MR/2 directory
  1010.     caused a trap and terminated the program.  This was caused because of
  1011.     an error in the code that checks for the "\" character in the packet
  1012.     file name.  If one wasn't there, it would crash.  Fixed.
  1013.  
  1014. o   If a bad "working directory" was set in an icon, MR/2's background
  1015.     searching virtual conference builder would crash.  I've fixed this,
  1016.     although some questions remain.
  1017.  
  1018.  
  1019. Changes included in v1.99cx thru v2.00
  1020. --------------------------------------
  1021. Well, this is the long awaited v2.0 release!  As usual, I wish I
  1022. would have had *just another week*, but I'm already 10 weeks late
  1023. from my original Jan 1 target.  I'm sure there will be some quick
  1024. updates as this hits the streets and some more bugs shake out.
  1025. I've got to at least get to v2.03 soon, so as that Steve fellow that
  1026. still uses v1.03 in Fido's OS/2 conferences will finally upgrade :)
  1027.  
  1028. Lots of exciting things still to come.  I just added CLONING as an
  1029. experiment, and there's lots of potential here.  Multiple sessions
  1030. for different BBS's has been working ok; also has more potential.
  1031. I'm personally in desperate need of a more complete folder setup.
  1032. This means some type of database capability - entirely optional and
  1033. user defined.  I will be collecting ideas, requests and suggestions
  1034. for subsequent versions.  If I didn't get to something you want or
  1035. need, feel free :)  I *do* have every piece of correspondence ever
  1036. sent to me, and I will pass through this yet again.
  1037.  
  1038. o   More work on the manual - 91 printed pages.  Updated several
  1039.     sections and the corresponding table of contents entries.  No
  1040.     index yet, but I plan on keeping this more up-to-date than it's
  1041.     been in the past.  I also plan a more nicely formatted version
  1042.     for those that want more than just ASCII text.
  1043.  
  1044. o   Modified MR2INI.ORG extensively.  This is the default INI file
  1045.     that is copied to MR2.INI the first time you bring up MR/2.
  1046.     Mostly a rearrange; I divided the file into sections:
  1047.     Basic setup, Reply/Quoting, Intermediate, Advanced and Misc.
  1048.     Some explanation at the front of the file, with notes to
  1049.     reference SEARCH.INI and EXAMPLE.TF where appropriate.
  1050.     Much cleaner.  I hope this helps new users get going more
  1051.     smoothly.
  1052.  
  1053. o   Added more examples to SEARCH.INI, focusing on some of the
  1054.     newer and more power virtual conference features.
  1055.  
  1056. o   Added mr2icons.zip to the distribution zip (7k).  Several misc.
  1057.     MR/2 and MR/2 PM icons provided compliments of long-time
  1058.     registered user John Bales.  Thanks John!
  1059.  
  1060. o   Fixed a bug where, when killing certain replies, MR/2 would
  1061.     seem to hang, but then come back.  There was an uninitialized
  1062.     counter under certain circumstances.  This caused a loop to
  1063.     "do nothing" for some random amount of time until the counter
  1064.     ticked down.  In the debugger session where I discovered this,
  1065.     the counter was set to 27,000+.  It took about 2 minutes to
  1066.     come back.  Fixed.
  1067.  
  1068. o   Spaces within an address-book "tag" field would keep the address
  1069.     from being selectable from the pick-list.  Fixed.
  1070.  
  1071. o   WPS Associations referencing .REP files would fail, as would
  1072.     referencing a .REP file on the command line (same thing).
  1073.     This works now.
  1074.  
  1075. o   Fixed a problem where the reply packet would often be rezipped
  1076.     even though no changes were made to it.  This happened when
  1077.     using no-packet entry and when selecting a .REP file directly
  1078.     from the packet selection screen.
  1079.  
  1080. o   Fidonet addresses that had two digit ZONES (e.g., 40:383/1) were
  1081.     not working properly.  The zone was seen as only the last digit.
  1082.     Fixed for two digit zones - sorry, I didn't even know they
  1083.     existed :)
  1084.  
  1085. o   Address book:  when selecting an address specified as private,
  1086.     either through the pick-list of by direct "!tag" identifier,
  1087.     the private flag would often remain public.  Fixed.
  1088.  
  1089.  
  1090. Changes included in v1.99bx
  1091. ---------------------------
  1092.  
  1093. o   When using the /I or /W command line parameters (to open a
  1094.     second MR/2 session, for example), MR/2 would exit when the first
  1095.     packet was exited.  Now it correctly returns to the packet select
  1096.     screen.
  1097.  
  1098. o   A user noticed that the highlighted item on the message index screen
  1099.     was a little difficult to read.  In checking, I found that I used
  1100.     "light red" for foreground.  Normal "red" is now used and the text
  1101.     appears slighlty sharper and easier to read.  This effects most
  1102.     Blue selection boxes and confirmation prompts.
  1103.  
  1104. o   I *really* didn't want to do this so close to a scheduled major
  1105.     release.  In fact, I don't know if I'll even try to finish this for
  1106.     v2.0, as to get it just right may take some time and experimentation.
  1107.     Cloning a session.  It works, but there are tons of "how should this
  1108.     be handled questions".  Read the next two entries.
  1109.  
  1110. o   New command line switch - /Clone or just /C.  This *assumes* that
  1111.     a packet is already open in your default (or overridden with /w)
  1112.     working directory.  This mode simply "uses existing packet",
  1113.     sets "go to last read position" and opens MR/2.  When the packet
  1114.     menu is exited, you exit the program without cleanup.  This is for
  1115.     use with an already running MR/2, so as to allow reading of the
  1116.     same open packet in another session.
  1117.  
  1118. o   Added some preliminary function keys to the MR/2 message viewer.
  1119.     CTRL-F1 "clones" a windowed session.  CTRL-F3 clones full screen.
  1120.     This opens a second copy of MR/2, using the existing packet.  This
  1121.     allows for multiple windows or session reading independently.
  1122.     The cloned window will not cleanup files, will not have bookmarks
  1123.     recorded (they are currently lost when session is closed).
  1124.  
  1125.     I just cloned three additional sessions from one "main" session.
  1126.     That's 4 windows into the same packet.  This is *too* neat.
  1127.  
  1128.     This will take more thinking, but it's already been useful to me,
  1129.     so I'll let this out for others to experiement with.  Some problems
  1130.     for me to resolve (and that means others should feel free to
  1131.     influence me :).
  1132.  
  1133.     Is it too restrictive to only let replies be generated from the
  1134.     "master" session?  Hmmm.  I've having some brainstorms here.  I'm
  1135.     going to sleep on this one.
  1136.  
  1137.     NOTE:  I've already thought this out to a level that's way too
  1138.     complicated to finish for v2.0.  I will complete this code after
  1139.     v2.0 is released, and I will take suggestions in the meantime.
  1140.     So, while this feature will be left for those who wish to
  1141.     explore it, it will remain undocumented and "unsupported" for
  1142.     v2.0.  I just don't want to rush to fix bugs in this right now.
  1143.  
  1144.     ALSO NOTE:  Each cloned window is a child of the session doing
  1145.     the cloning.  If you close the parent, the clildren disappear,
  1146.     too.  There are so many possibilties here, and so may possible
  1147.     problems :).
  1148.  
  1149. o   Fixed a minor problem with selection lists where, when paging down
  1150.     at the end of the list, the cursor would sometimes move up or down
  1151.     the list, but not land on the last entry.
  1152.  
  1153. o   Mouse cursor would sometimes leave a "black hole" on blue prompt
  1154.     boxes.  In fact, mouse cursor was not visible for these boxes unless
  1155.     first moved.
  1156.  
  1157. o   Read.me file:  removed pre v1.95 material.  I will make all complete
  1158.     modification logs available on Nerd's Nook sometime after v2.0 is
  1159.     released.
  1160.  
  1161.  
  1162. Changes included in v1.99Ax
  1163. ---------------------------
  1164.  
  1165. o   Phantom "killed" status would sometimes show up in the corner of
  1166.     the messge viewer when reading inbasket/logged messages.  The
  1167.     messages was often active, and the status report in error.  I've
  1168.     fixed this.
  1169.  
  1170. o   More manual work.  Checked for spelling mistakes and generated a
  1171.     preliminary table of contents.
  1172.  
  1173. o   Thesaurus - cleaned up all the fancy features.  They didn't always
  1174.     work as advertised :(
  1175.  
  1176. o   Fixed a bug where, upon reentering an "existing", previously opened
  1177.     packet, the local INI file was not loaded before parts of the packet
  1178.     where reloaded.  This caused things like conferences that were
  1179.     declared as hidden to be displayed.  They would be hidden when the
  1180.     packet was open the first time, but ALT-X, go back in and they'd
  1181.     be listed.
  1182.  
  1183. o   Added S-Save and P-Print to Bulletins, Files and News viewers.
  1184.     Careful, as ANSI codes *are not* stripped before saving/printing.
  1185.     Help screen also updated.
  1186.  
  1187. o   I scrunched the message header form one more time, getting 3 more
  1188.     characters for taglines.  That makes a max tag of 69 chars.  When
  1189.     I get more energy I'll expand this again.  I figure I can get 3-4
  1190.     more, but I'd have to rework the whole form.  Not something I care
  1191.     to do at this time.
  1192.  
  1193. o   Ouch!  Big problem with ADD/DROP logic; whether using the default
  1194.     door name or a INI-declared name.  Both Subject and To fields
  1195.     in the message header received C-type (zero terminated) strings
  1196.     instead of QWK formatted, fill-with-spaces strings.  I'm sure this
  1197.     confused many a mail door and was probably the reason I received
  1198.     so many "not working" complaints.  Heck, it confused my message
  1199.     index screen!  Sorry :(.  Thanks you to Marc Bourassa for getting
  1200.     me enough info to find this!
  1201.  
  1202.  
  1203.  
  1204. Changes included in v1.99x
  1205. --------------------------
  1206.  
  1207. o   More manual work, of course.  I'm up to 81 pages and still more
  1208.     to do.
  1209.  
  1210. o   Help screen touch-ups to reflect new keys added in the last
  1211.     release or two.
  1212.  
  1213. o   Added new reply-time replacable template variables:  TargetTo,
  1214.     TargetToFirst and TargetToLast.  These are the same as the "TO"
  1215.     series, except that TO is replaced by the original messages TO
  1216.     and is useful mostly for attribution lines.  It was brought to my
  1217.     attention that accessing the target user's name was not available.
  1218.     It is now!  Still thinking about Subject and others along those
  1219.     lines ...
  1220.  
  1221. o   Removed MR2.HST from the distribution zip list.  I read it over
  1222.     and every feature it describes is now documented.
  1223.  
  1224. o   Added Hotkeys back to the Edit Message Header screen.  F4 used to
  1225.     bring up the tagline picklist, and for awhile F6 brought up the
  1226.     Address pick list.  I removed these keys and received some
  1227.     complaints.  I've added alternate ways to get to the picklists on
  1228.     this screen:  ALT-T to select taglines, ALT-C for conferences and
  1229.     ALT-A for addresses (these work from *any* field).
  1230.  
  1231. o   Added some options for accessing external utilities differently.
  1232.     This was partially in an attempt to solve some rare problems with
  1233.     either 4os2 or booting from the D:\ drive, or both.  These may
  1234.     offer a performance boots in other cases.  Since I just spelled
  1235.     this all out in a messages, I'll use that:
  1236.  
  1237.     For all of MR/2 classic's external utility access, I used the
  1238.     system(command) call.  This is a C function that says "load the
  1239.     command processor and give it this command".  This is all dependent
  1240.     on the comspec being set correctly, and on ZTC's runtime code (which
  1241.     did look ok, BTW). Still, BW/2 mentioned being able to run an editor
  1242.     and/or pkzip directly, w/o loading CMD.EXE.  I thought for a second,
  1243.     and remembered that MR/2 PM does exactly this.
  1244.  
  1245.     So, I scarfed the Run() function out of my MR/2 PM code and made it
  1246.     optionally accessible.  Now, mind you, this gets a little silly and
  1247.     is subject to one final change :).  I still call external EXE's the
  1248.     same old way ... UNLESS you prefix it with a code or two.
  1249.  
  1250.     For example:
  1251.  
  1252.     Editor=q                loads q.exe the same old way.
  1253.  
  1254.     Editor=!c:\qe3\q.exe    loads a windowed Q.exe on the desktop,
  1255.                             running q.exe directly (no cmd.exe
  1256.                             involved).  File must be fully qualified
  1257.                             with full path specifications.
  1258.  
  1259.     Editor=!!c:\qe3\q.exe   loads a full screen session w/o loading
  1260.                             cmd.exe - q.exe loads directly.
  1261.                             Fully qualify the file name.
  1262.  
  1263.     Editor=!$c:\qe3\dos\q.exe
  1264.  
  1265.                             loads a DOS windowed session, loading Q.exe
  1266.                             directly.  CMD.exe is not accessed, but
  1267.                             command.com is.  May still cause D:\ booting
  1268.                             problems, but it's an option.
  1269.  
  1270.     Editor=!$!c:\qe3\dos\q.exe
  1271.  
  1272.                             Loads the DOS Qedit into a Full screen DOS
  1273.                             session w/o accessing cmd.exe.
  1274.  
  1275.     NOTE that these work with the zipper/unzipper, too, as well as
  1276.     PreEdit, PostEdit, F2-F10, etc.,.  Anytime an external util is
  1277.     called, I check for these prefixes for special processing.    I
  1278.     should have done this a long time ago :)
  1279.  
  1280.     Since CMD.exe is removed from the loop with these commands, the
  1281.     programs should load more quickly.  In fact, they seem to, but it's
  1282.     very hard to measure.
  1283.  
  1284. o   Problem with BackDropMaxLines.  If this maximum line count was
  1285.     GREATER than the actual lines in the file, MR/2 would end up
  1286.     searching/displaying *past* the end of the buffer.  This caused
  1287.     garbage to the screen at best, crashing in most cases.  The GCO
  1288.     ANSI Goodbye screen was only 20 lines long, and with the max lines
  1289.     set at 24, horrible things would happen.  Fixed.
  1290.  
  1291.  
  1292. Changes included in v1.98x
  1293. --------------------------
  1294.  
  1295. o   Manual work.  It's growing fast.  Enclosed is a new "preliminary"
  1296.     MR2.DOC file.  The old manual was 22 pages, this one is 70 or so
  1297.     and there's still plenty to add.  Some sections are incomplete.
  1298.     No, I haven't checked for spelling errors.  I'm open for comments,
  1299.     but don't dig too deeply, please.
  1300.  
  1301. o   PurgeAfterDays and PurgeAfterCount now actually function.  Here's
  1302.     how it works:  When you close a packet, MR/2 has always "packed"
  1303.     your InBasket, if any.  This process simply involved passing through
  1304.     the InBasket and removing "killed" message by writing over them with
  1305.     active ones.  When the ReplyLog was added, the same process was
  1306.     performed.  Since the reply log grows with each reply, I added code
  1307.     to control the number of messages kept, by maximum age or by maximum
  1308.     count, or by both.
  1309.  
  1310.     If PurgeAfterDays is not specified (or set to zero), no age
  1311.     check is performed on replylog messages.  Otherwise ...
  1312.  
  1313.     The Reply log is first packed the old way with a slight additional
  1314.     check.  If a message is found to be active and older that the
  1315.     cut-off date (older that PurgeAfterDays old), then the message is
  1316.     marked as killed.  The normal removal process follows after this
  1317.     check.  If a message is killed and it has a "source" or "original"
  1318.     message after it (these have special MR/2-internal markings), this
  1319.     is also killed.  Once this pass has been completed, all manually
  1320.     killed and "old" message have been removed, along with any "source"
  1321.     messages recorded with them.  A count of active messages is returned
  1322.     to the packing process.
  1323.  
  1324.     If PuregAfterCount is not specified, or set to zero, no maximum
  1325.     message checking is performed.  Otherwise ...
  1326.  
  1327.     Now, MR/2 compares the active message count to the specified maximum
  1328.     (PurgeAfterCount).  If found to be greater, then the number of
  1329.     messages to delete is calculated.  A new pass is made through the
  1330.     folder, and the oldest messages are marked and deleted until the
  1331.     number of messages to delete has been reached.  Again, if a message
  1332.     is removed, so is its source/original message, if one exists.
  1333.  
  1334.     I will add a way to mark a reply as "permanent".  This will keep
  1335.     the packing routines from removing it.  A permanent message will
  1336.     not be deleted until you manually kill it.  As an additional
  1337.     feature, I want to add an "unkill" key.  I've killed a couple of
  1338.     replylog messages that I didn't want to, and saving them was a
  1339.     real pain.  And I even know how!  I wouldn't expect anyone else to
  1340.     be able to figure this out.
  1341.  
  1342. o   Double confirmation prompt on exiting the editor w/out saving. I
  1343.     lost my last long-winded reply to this gotcha.  If you would press
  1344.     ESCAPE too many times, too fast, while in the internal editor, you
  1345.     would often end up losing any/all changes.  This was because ESCAPE
  1346.     is seen as a request to exit the editor, and the "would you like to
  1347.     save" question, when ESCAPE is pressed, says "No". Two escapes and
  1348.     you've lost any changes.  I've done this more than once by accident.
  1349.     It angered me; I apologize for causing anyone else this frustration.
  1350.     Now, if you escape out of the editor and changes have been made, it
  1351.     asks you if you wish to save them.  If you press ESCAPE, it askes if
  1352.     you're sure, and ESCAPE says "no, I'm not sure" and saves your work.
  1353.     You must press YES or press ENTER to abort changes.
  1354.  
  1355. o   Cutting from a DOS windowed session and pasting to MR/2, using
  1356.     ALT-* fails.  Previous versions would actually crash, leaving the
  1357.     clipboard open and locking up any program that tried to access it
  1358.     afterwards.  I'm still trying to find out why this fails, but in
  1359.     the meantime, I removed the crashing, and the subsequent lockups.
  1360.  
  1361. o   Packing the folders (Inbasket, ReplyLog).  A informative popup
  1362.     window now is displayed while this process performs it's work.
  1363.  
  1364. o   Added a "Make Permanent" key for use within the Reply Log.
  1365.     Pressing "!" will mark the Reply Log message as a "keeper" and
  1366.     the Folder packing routine will no automatically delete this
  1367.     message, nomatter how old it is or how many messages over the
  1368.     maximum exist.
  1369.  
  1370. o   Added an "UnKill" keystroke.  Pressing "U" will remove the "Killed"
  1371.     marking from any message.
  1372.  
  1373. o   New INI parameter - BackdropMaxLines.  This controls the maximum
  1374.     number of lines from the WELCOME and GOODBYE screens will be flashed
  1375.     to the screen.  Some BBS's have ANSI Welcome screens that are
  1376.     multiple pages long.  MR/2 would proceed to flash these messages
  1377.     completely at various times.  Set BackdropMaxLines to 25, for
  1378.     example, to flash only the first screen.  Setting this parameter to
  1379.     zero will suppress the Welcome screen altogether.  The default is
  1380.     set to -1, which will flash any and all lines of the file to the
  1381.     screen.
  1382.  
  1383. o   I think I fixed the problem with crashing when trying to finish
  1384.     out of MR/2 *before* the background searching was finished.  This
  1385.     would not happen if all virtual conferences had been created but,
  1386.     if you would open a packet by mistake and try to quickly get out
  1387.     of it, crash!  This was because I was deleting all the work files
  1388.     before the background process was told to stop ... and it was
  1389.     trying to read messages.dat.
  1390.  
  1391. o   New INI parameters: F2 through F10.  Used to attach command-line
  1392.     actions to function keys.
  1393.  
  1394.  
  1395. Changes included in v1.97x
  1396. --------------------------
  1397.  
  1398. o   I forgot to list the INI options SavePointerFiles, PurgeAfterDays
  1399.     and PurgeAfterCount in the MR2INI.ORG file.  These are now listed.
  1400.  
  1401.     More INI's, as I try to clean up some smaller user problems and
  1402.     requests:
  1403.  
  1404. o   "DoorName" may now be used to identify the target BBS door "user
  1405.     name" to which to address ADD/DROP messages.  This not only aids
  1406.     in the case where a BBS door provides no DOOR.ID file, but also
  1407.     when trying to perform ADD/DROP functions from no-packet entry or
  1408.     reply packet maintenance.  For example, DoorName=RoseMail will
  1409.     address all ADD/DROP messages TO: RoseMail.
  1410.  
  1411. o   "CursorSize" may now be specified for the normal internal editor
  1412.     cursor.  Many users complained that, in certain video modes
  1413.     (large number of lines/screen), and under some setups, the cursor
  1414.     could not be seen.  By default, MR/2's normal editor cursor is
  1415.     1 scanline high (maybe two?).  When lines/screen is 34 or more,
  1416.     MR/2 changes the cursor to 6 or 7 scanlines.  This was reported to
  1417.     still not be visable sometimes.  So, You may now specify the number
  1418.     of scanlines for a normal cursor - from 1 to 13.  MR/2's "overtype"
  1419.     cursor is 13 (14?) scanlines tall and is not configurable at this time.
  1420.     Example:  CursorSize = 10
  1421.  
  1422. o   I did manage to finalize the thesaurus data file.  The "officially
  1423.     released" thesaurus wordbase will consist of 9242 "key" words
  1424.     with a total of 70,101 synonyms.  The technique I'm using makes it
  1425.     easy to find synonyms, even if the word is not found to be a key.
  1426.  
  1427. o   There was a problem with using a MessageOrder of anything BUT
  1428.     subject.  A variable remained uninitialized in all cases except
  1429.     by subject, and this caused crashing as soon as a conference was
  1430.     selected and the message index sort was started.  Fixed.
  1431.  
  1432. o   Selection lists had a bug that wouldn't allow you to select the
  1433.     LAST entry (if the "page" was full).  Clicking on the bottom
  1434.     line of the box did nothing (it's supposed to page down), and
  1435.     clicking on the slot for the last entry on the page paged-down.
  1436.     Fixed.
  1437.  
  1438. o   INI file now includes a default virtual conference.  This will
  1439.     help new users "discover" this key feature much quicker.
  1440.  
  1441. o   Manual has actually been worked on!  No, it's not in here.
  1442.     It's not in *that* great a shape yet, but it's progressing :)
  1443.  
  1444.  
  1445. Changes included in v1.96x
  1446. --------------------------
  1447. Still lots left to do, I'll try to get a summary list together
  1448. and post it next time.  I'm getting close, tho.  Bug reports seem
  1449. to be light, which makes me happy.  I wanted to hit Feb 1st, but
  1450. I'm not sure now.  If I can get a couple of good days in I can call
  1451. it soup.  It will be *very* soon, the manual being the last major
  1452. "feature" to address.
  1453.  
  1454. o   New and Improved help screens.  Added definitions for dozens of
  1455.     previously-unlisted keystrokes and functions.  HELPS include 20
  1456.     or so completely *new* screens, too, covering many of the newer
  1457.     enhancements.
  1458.  
  1459.     NOTE that mr2.hlp is a simple editor file with [TAG] markers to tell
  1460.     me where a help section starts.  The section ends at the next tag
  1461.     marker.  If you don't like my HELP text, you *can* create your own
  1462.     text (modify my descriptions).  A section must fit on the screen,
  1463.     tho, with a char/line or two reserved as border.  Hey, if you end up
  1464.     with something you think is better, send it to me and if I agree,
  1465.     I'll use it :)
  1466.  
  1467.     I start on the manual next - actually already have, but now I have
  1468.     to be serious!
  1469.  
  1470. o   Updated MR2INI.ORG with a section that describes the newest
  1471.     INI variables.
  1472.  
  1473. o   Tab expansion in the message viewer.  I default this to 4
  1474.     characters, but allow you to toggle this value via ALT-TAB.
  1475.     Sequence is 4,8,0,2 where "0" means show the tab character and
  1476.     don't expand.
  1477.  
  1478. o   I discovered that searching while in the INBASKET or the REPLYLOG
  1479.     didn't work.  Searching within an INBASKET has never worked.
  1480.     Fixed this (modified QWK.Getfh()).
  1481.  
  1482. o   By request (several), the spacebar may now be used as an alternate
  1483.     to ENTER for selecting a conference w/mail to read.  This was a
  1484.     tough call, as the ' ' is a valid typing character, and I can see
  1485.     some folks trying to do a conference name prefix jump to the "main
  1486.     board" conference by typing "Main ".  Where this would previously
  1487.     work, and it still *might*, the spacebar press will cause the
  1488.     highlighted conference to now be selected.  Open for comments, I
  1489.     think this will be OK, tho.
  1490.  
  1491. o   It was pointed out to me that many keyboards don't have an F11 key,
  1492.     and that's what I chose as the "mark" key on selection list.  (At
  1493.     this time, "marking" within a list only has a purpose on the packet
  1494.     selection screen, for merging QWK packets.)  After some thinking and
  1495.     experimentation, I made the "*" key a synonym for F11 on pick lists.
  1496.     It was suggested to use + and - to mark, unmark, but the minus or
  1497.     dash often comes up as part of conference and packet names.  So,
  1498.     "jump to prefix" would be affected.  The "*" key will toggle the
  1499.     mark on and off.  This key is easily selected w/o shifting by using
  1500.     the one on the numeric keypad (eeek!  Assuming you have one :).
  1501.  
  1502. o   UNQWK.CMD bug - my first user "fix" to this routine!  Thank you
  1503.     Wolfgang von Thuelen for pointing this out.  In the check for long
  1504.     file names, I ignored the case where file names were exactly 12
  1505.     characters long BUT were still non-FAT names (e.g., "mwcst.qwk;11").
  1506.     The first 'if' statement was changed from "if flongnames < 0" to "if
  1507.     flongnames <= 0".
  1508.  
  1509. o   More thesaurus work - mostly minor cosmetics.  I've almost got
  1510.     what I want, although I know the ALT-S and ALT-L are buugy now.
  1511.     I'm letting it out with these bugs, as it's still functional and
  1512.     I doubt many are using this feature (yet?).  Keys you may press
  1513.     with descriptions are placed above editor window.
  1514.  
  1515.  
  1516. Changes included in v1.95x
  1517. --------------------------
  1518. I'm calling this v1.95x, as I consider myself "close" to what I wanted
  1519. in a v2.0 release.  I do have a few features to add; although not many.
  1520. Believe me, I've got plenty of ideas for v2.01 and beyond.  Existing
  1521. users know that this has never been a static product :).  I've created
  1522. quite a few monsters here ... huge new features that are going to take
  1523. some "shaking out" to get them working perfectly.
  1524.  
  1525. o   Clipboard:  When doing an "append" (ALT-GREY-= or ALT-GREYENTER)
  1526.     to an empty clipboard, MR/2 would crash.  The first text copied to
  1527.     the clipboard had to be done with the ALT-+ command, then appending
  1528.     would work.  Fixed.  You can now append to an empty clipboard.
  1529.  
  1530. o   Reply log messages can now be "Copied" and/or "Replied to".  The
  1531.     message is then copied into the reply conference as to be "sent
  1532.     again".
  1533.  
  1534. o   INI parsing problem prevented FolderPath from being recognized.
  1535.     (Discovered when relinking and testing MR/2 PM).
  1536.  
  1537. o   Mouse could not be used to select the very first entry in a selection
  1538.     list.  This was broken recently - now fixed.
  1539.  
  1540. o   Template Sections labeled as "New" using routing lines:  I had
  1541.     previously noted in this document AND personally corresponded
  1542.     electronically with a few of you about this.  Specifically, *before*
  1543.     this version, the $Body line was needed *before* the routing line,
  1544.     as for "new" messages, only the "signature" sections was placed in
  1545.     the reply file.  THIS HAS ALL BEEN CHANGED.  The 'New' Sections now
  1546.     work the way you would expect; the entire section is placed in the
  1547.     reply file, and the $Body (while still necessary) should be placed
  1548.     where you would normally start your reply.  In other words, these
  1549.     sections should be setup the way you would expect from using the
  1550.     "normal" sections as an example.
  1551.  
  1552. o   Packet selection screen:  You may now MARK two or more packets on
  1553.     this screen and actually MERGE them together as one QWK packet.
  1554.     Use F11 to mark the packets to combine, then ALT-M (Merge) to
  1555.     merge them together.  This process calls upon my new and improved
  1556.     MQWK.CMD REXX command file to do most of the work.  This makes the
  1557.     process configurable/extendable, as long as you want to tinker with
  1558.     REXX source code.
  1559.  
  1560.     Multiple/automatic archiver detection is not supported at this time;
  1561.     the archiver name is hard-coded in the script to be "pkunzip -n"
  1562.     and the zipper is 'pkzip'.  Modify these in MQWK.CMD if necessary.
  1563.  
  1564.     When you press ALT-M, and if 2 or more packets are marked, MR/2 will
  1565.     prompt for a target packet name.  If a name is supplied, all marked
  1566.     QWK packets will be merged into one with this name.  If no name is
  1567.     supplied, MR/2 simply combines the packets in the TMP$$ work
  1568.     directory, where they can be read as a combined packet.  NOTE,
  1569.     however, that bookmarks will be lost, as there will be no "target"
  1570.     packet to record them to.  I suggest always allowing MR/2 to
  1571.     repack the combined QWK packet.
  1572.  
  1573.     FURTHER NOTE:  I've now modified the script so that there is very
  1574.     little reason *not* to repack the combined messages into a new QWK
  1575.     file.  If a name is supplied as a target, MR/2 combines all marked
  1576.     packets and jumps right into "read" mode.  AT THE SAME TIME, I spawn
  1577.     another session, in the background, to archive the combined packet.
  1578.     This becomes invisible to you and should not impede your normal
  1579.     reading operations.  If the combined packet does not show up on the
  1580.     packet selection screen, you may reference MQWK.LOG for possible
  1581.     error messages.  All output from the archiving process is redirected
  1582.     to this file.
  1583.  
  1584.     Index files (*.ndx) are discarded by the merge process ... MR/2 will
  1585.     create index files when it opens the combined packet.
  1586.  
  1587.     I've tested this procedure with QMail and CamMail doors.  I expect
  1588.     that other doors may created cases that call for a little adjusting.
  1589.     Keep me posted.  ALSO, no error checking is performed to assure that
  1590.     all the packets you are merging together are of the same BBS.  THIS
  1591.     IS IMPORTANT, as merging dissimilar packets WILL NOT WORK CORRECTLY.
  1592.  
  1593.     ALSO NOTE that this takes alot of free disk space.  A set of QWK
  1594.     packets totaling 2MB might require 4-5 MB additional free disk space
  1595.     to function.
  1596.  
  1597. o   INTERNAL: Messages.dat is now opened in READ-ONLY mode.  This allows
  1598.     the file to be accessed in a background task for archiving.
  1599.  
  1600. o   INTERNAL: Modifications to zDList, zDLSelect and zDirSelect (linked
  1601.     list and selection from list(s) routines) to further support "marking"
  1602.     of members and retrieval of "marked" status in various forms.
  1603.  
  1604. o   I received a packet via CIS email from the Channel1 BBS.  This
  1605.     board has been a great logic-breaker for me ... they ought to quit
  1606.     growing! Anyway, their control.dat files finally made it over 64k,
  1607.     which has always been an MR/2 limitation (due to an initial design
  1608.     flaw on my part).  This is now fixed so that there is *no* maximum
  1609.     control.dat file size limitation.  I now handle/parse this file one
  1610.     line at a time w/o loading it all into memory up front.  Channel1
  1611.     packets once again work!
  1612.  
  1613. o   HideConferences can now be specified multiple times within a set
  1614.     of INI files.  The hidden conferences list is now cumulative where
  1615.     before only the last HideConference line was effective.
  1616.  
  1617. o   I expanded the packet selection screen even more and added columns
  1618.     for Per (Personal) and Rep (Replied-to) message counts.  I know that
  1619.     I'm constantly trying to remember which packet had all the personals
  1620.     to me in it, so this helps me out.  The reply count may also help
  1621.     tell you something about a particular packet.
  1622.  
  1623. o   Modified ZTC's library routine system().  Command line was deemed
  1624.     invalid when > 128 characters.  OS/2 allows much more; I changed
  1625.     the max to 256.  This will allow more QWK packets to be merged
  1626.     together (it broke today at 4 fully qualified packet names).
  1627.  
  1628. o   Changes to the way the built-in thesaurus functions.  I've still
  1629.     got some fancy things to do, but it's getting closer.  Invoking
  1630.     the thesaurus for a word that was not a "key" in the word base
  1631.     previously did nothing; it just ignored you.  Now, MR/2 posts a
  1632.     message and jumps into a sequential "match" search.  When you
  1633.     request a further search of the database using ALT-S, a similar
  1634.     message is posted.  Both messages mention that you can now press
  1635.     ESCAPE to hault the search.  Also, when a search completes with
  1636.     out finding any new words, MR/2 keeps the previous word list on
  1637.     the screen.  Before, you would be placed out of the thesaurus.
  1638.  
  1639.  
  1640. KNOWN BUGS AND STUFF
  1641. ====================
  1642.  
  1643. The TEMPORARY directory MUST remain a subdirectory of the MR2 home dir.
  1644.  
  1645. You can't use "\" or "&" as part of any search text (since MR/2 uses them
  1646. as delimiters).
  1647.  
  1648. You can't cancel a search until the first "hit" is displayed.  This is
  1649. particularly irritating when soundex searching, since soundexing is
  1650. noticably slower.
  1651.  
  1652. If you set "SkipReadMessages" to true, you cannot gain access to a
  1653. conferences where all messages have previously been read.
  1654.  
  1655. Other frills that have not yet been addressed:  Bulk marking, twit filter.
  1656. There are probably others. Feel free to bombard me with requests.
  1657.  
  1658.