home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
NETMAIL
/
MR2_198.ZIP
/
MR2.HST
< prev
next >
Wrap
Text File
|
1993-12-12
|
55KB
|
1,110 lines
MR/2 - A QWK Compatible Mail Reader for OS/2. 05/02/93
Copyright (c) 1992, Knight Writer Software Company.
All rights reserved.
===================================================================
N O T I C E
===================================================================
This IS a shareware package, and does require a registration fee if
you choose to continue using it after 30 days. The registration
fee is currently $20 US. Eventually, the product MAY have a
"begging" screen with a key-file that will register the software
and suppress it. The more interest I get, the more likely I am to
continue with improvements.
------------------------------------------------------------------
CONTACTING THE AUTHOR
=====================
You can contact me in a number of ways. Unfortunately, I can't
provide a phone number at this time.
US Mail: Nick Knight
1823 David Ave.
Parma, Ohio 44134
Fido netmail: 1:157/2 to "Nick Knight"
Internet: User "Nick Knight", (nick.knight@pcohio.com)
Fido Echomail: Find the Fidonet OS2PRODSUPPORT conference. I'm there.
Echomail messages to me in more general conferences are
discouraged, as keeping them "on topic" and
interesting to the masses would be difficult. I do
read OS2, OS2PROG, C_PLUSPLUS and DR DEBUG daily,
though. OFFLINE echo also (deals with mail readers),
this might be THE place to ask public questions, eh?
I recently have acquired access to a host of other
networks with OS/2 conferences. These include RIME,
SmartNet, Uninet, Intelec, Nanonet, Racenet and some
others I can't remember.
Direct BBS: Leave a message on the Nerd's Nook BBS (1:157/2) at (216)
356-1772, 356-1872 or 356-1431. I check in here
multiple times a day. I will also keep the most recent
copy of MR/2 posted here. Other boards (non-local)
will get updates at my convenience.
Nerd's does support file requests (157/2 or 157/3)
Compuserve: I check in here only when I have to. Try mail to my
user ID - 76066,1240, although this isn't the best
approach.
KNOWN BUGS AND STUFF
====================
Mouse support is missing from some of the "inform user" screen.
The TEMPORARY directory MUST remain a subdirectory of the MR2 home dir.
You can't use "\" or "&" as part of any search text (since MR/2 uses them
as delimiters).
You can't cancel a search until the first "hit" is displayed. This is
particularly irritating when soundex searching, since soundexing is
noticably slower.
If you set "SkipReadMessages" to true, you cannot gain access to a
conferences where all messages have previously been read.
If you don't like my internal editor. You'll have to find your
own or use E or EPM. QEdit for OS/2 works nice as an inexpensive,
character-mode editor/ Also, there's an OS/2 editor TE-something
that I heard was OK.
You can't send ADD/DROP conference messages yet. This seems easy
enough, so I should be able to add it in soon.
Other frills that have not yet been addressed: Bulk marking, carbon
copies, twit filter, function key assigning. There are probably others.
Feel free to bombard me with requests.
No long file name support. Since QWK is a DOS thing, the only place I can
see using it is for packet names (if the user renames it). Any ideas?
Changes included in v1.01
-------------------------
o By request, 43 and 50 line mode are now supported via a new .ini entry.
You can supply a VideoMode=xx parameter in MR2.INI, where xx can be 25,
43 or 50. Any other numbers will be ignored. All Selection lists and
displays are adjusted to match the screen dimensions. For those with
vision better than mine ... :)
o Clicking the mouse on the Subject area while viewing a message still
simulated hitting the 'T' key. This key no longer moves forward by
thread, it steals taglines. Now, clicking on Subject is translated
properly to an 'H'.
o When filling a field in a "form" (e.g., the Subject field of the
Message Header Edit form), overtype-mode would sometimes echo characters
that weren't there. This happened after some characters were deleted;
the "ghost" characters appeared at the end of the string. This is fixed.
o The automatic splitting of long replies is now controlled via a
MR2.INI parameter SplitLongReplies (set to Yes or No). If set to
yes, MR/2 will split replies up so that no more than 100 lines are
in each message. If set to no, then no splitting is performed and
one large message is create. The default is to split message.
o Previously, long replies were always split. The "cut-off" point was
95 message lines, and a "<cont'd>" line was appended with a blank line.
I've seen some message processors cut the first part by one lines,
making the second message consist of 1 or 2 meaningless lines. I've
changed the "split at" number to 92 lines.
o And another MR2.INI parameter has been added: AllUpperCase controls
how the Subject, From and To lines are treated after editing a message's
header information. Previously, all fields were converted to upper case.
Now, if AllUpperCase=No, the case is left as entered. (By request...)
o The message header editing form now allows you to "up arrow" into the
From field and modify it. NOTE: many BBS's will reject messages
whose FROM line do not match the user's logon name.
Changes included in v1.02
-------------------------
o Bug fix: User reported a problem with conference numbers showing
incorrectly. Turns out that some packets have a single byte
conference field in the header, and the other byte used by newer mail
doors was set to a space (hex 20). This caused conference numbers to
be report as 8192 more than their actual value.
Changes included in v1.03
-------------------------
o Fixes to tagline logic. If tagline file was non-existant, MR/2 would
crash. If file was empty, added tags would not show up until you
exited and reentered.
o Selection list problems fixed. Highlighting of the line above displayed
list on occasion. Selection bar will no longer move into unfilled
areas. Scrolling up and down through list no longer displays end-of-list
"ghost" entries.
o Added some tests for over-length taglines. Previously, a tagline
longer than 120 character would lock the session.
o Forms display routine would show an over-length tagline w/o truncating
it. Display of tagline extended to column 80, then would wrap to the
next line. This has been corrected.
o Actually added in 1.01 is the ability, from the packet selection screen,
to toggle video modes. The "V" key will toggle from displayed lines
from 25 to 43, from 43 to 50, and then from 50 back to 25.
o MR/2 would lock up when saving a reply (or a new message). This
happened only with BBS doors that would pad the user name (in control.dat)
with spaces. The lockup occured after pressing F10 to accept the
message header information. This shouldn't happen any more :)
o NOTE - NOTE - NOTE: The problem with packets proclaiming "no mail to
read" seems to be related to missing .NDX files in the packet. The
QMAIL door in particular lets you suppress these files, and some
mail readers (SLMR/OLX) don't use them, anyway. MR/2 requires these
file, at least today. I WILL provide an index building function in the
very next release, figure by 5/22 worst-case.
o OK, so I added the routine to create NDX files if they aren't there.
(See above) Testing on this was minimal, so please report any problems.
Packets without .NDX files should no longer report "no mail found".
Changes included in v1.04
-------------------------
o You may now create a supplemental "INI" file for any/all BBS's that
you get mail from. MR/2 still loads its options from MR2.INI, but you
may now change some of these options automatically by BBS, when a packet
is opened. Once the packet is unpacked and the BBS "ID" is extracted,
MR/2 checks its "base" directory (where MR2.INI resides) for a file
named after the BBS, with a ".INI" suffix. For example, after
unpacking a QWK packet from PC-OHIO, MR/2 will load options from a file
named "PC-OHIO.INI", if one exists. Obviously, some options will have
no effect (e.g., PacketPath has already been used and is no longer
pertainent, as is WorkPath), but things like tagline files and quoting
styles can be changed on a BBS basis.
If a "BBS" .INI file is accessed, MR/2 will reload the global MR2.INI
file when the current packet is closed.
o New INI parameter "TagStyle" has been added. You may specify either
FIDONET (the default) or PCBOARD. If Fidonet is specified, taglines
will use "*" characters to delimit MR/2's signiture. If PCBOARD
style is requested, the "block" character used by SLMR/OLX will be
substituted.
o Read-ahead by thread (the "H" key) has been enhanced to recognize
subjects prefixed with "RE:" or "RE: " as matching. Messages will
also match if the subject matches the original *less* the "RE:".
o Install now includes Register.Doc for easier user registration.
- That's it for this revision. I *almost* added a large section of code
for twits and canned searches, but this is going to take some time to
code and even more time to test and debug. I'll make that available in
a week or two, along with fixes for any other reported bugs.
BTW - a PM version is in a very primitive form, anyone interested in
giving me some useful feedback? First, should it be MR/2 PM or MR/PM?
Changes included in v1.1
-------------------------
o The Reference number field was not being set and maintained properly.
If you replied to a message, that message's reference number would
get copied into the replies Ref#. Then if you would re-edit the reply
later, the Ref# would be set to the conference number. I've now
staightened this mess out and it seems to work properly.
o Added a new MR2.INI parameter "WrapLinesAtColumn" that defaults to 80.
This should ease the problems with users that depend on the system "E"
editor and its "word wrapping" function. MR/2 will let no line extend
beyond the value supplied here, and will insert a CR/LF between words
to keep text in bounds.
o You may now set the MR2.INI variable "VideoMode" any of the values
25, 28, 34, 40, 43, 50 or 60 to represent the number of lines to
display. Also, the V toggle while on the packet select screen has
been enhanced to toggle through all of these values.
o MR/2 now accepts one or more file names identifying .QWK packet as
command line parameters. For example, typing:
MR2 E:\DL\NERDNOOK.QWK
will invoke MR/2 and automatically select the named packet for reading.
More than one packet may be specified, MR/2 simply opens the "next"
packet when the previous packet is closed.
When all packets on the command line have been read, MR/2 returns to
the packet selection screen and waits for a new selection. If you wish
to have MR/2 exit after all specified files have been processed, set the
INI variable "ExitAtEndOfParameters" to YES.
This also allows for an "association" to be set up using WPS settings.
If a new ICON is created to invoke MR/2 and "*.qwk" is set as an
association, then clicking on a QWK packet inside the file manager is
all that's necessary to read a packet.
o Cosmetic: "Pick a Conferences" when writing a "new" message now
reads correctly.
o Cosmetic: when using video lines other than 25, the search status
message would update always on line 25. This now moves with the
number of lines displayed.
o When editing the message header, F4 may be used to select from a list
of available conferences. This is useful when moving a message from
its source conference into another. By request.
o The master conference list now displays in alphabetical order by name.
Previously, conferences listed in the order they occured in the BBS's
configuration file.
o NOW, there's a new INI parameter, "SortMasterConferences" which
defaults to NO (old-style non sorted list). Specifying YES will
sort the master conference list alphabetically.
o The "Z" key, used when viewing a message, now allows you to "Zip" to
the next "unread" message in a conference.
o Threaded reading has been greatly enhanced. First, a new INI
option must be set - "MessageOrder=Subject" (the default is "None").
This enables all sorts of new goodies :) Basically, setting this to YES
will sort the messages by thread before reading begins. Care was taken
to "clump" all "RE:" type messages in with their original non-RE'd
subjects.
o If MessageOrder has been set to "Subject", some new keys are available.
While viewing messages, the TAB key will skip ahead to the next thread.
The BACKSPACE key will skip backwards to the previous thread. Even
better, pressing "Q" will invoke the Quick Thread Summary screen. This
list all threads in the conference, in alphabetical order, along with
the count of previously read messages vs. total message in the thread.
All threads that have been read completely are marked with an "*".
This is a full feature "selection" screen, so you can page around,
pick and peck at only the subjects that interest you.
o I added another option - I'm not very happy with it, but you may find it
somewhat useful. The INI parameter "ThreadChangeTone" accepts two
numeric parameters (e.g., "ThreadChangeTone=20000,10"). These parameters
are passed to the OS/2 kernel procedure DosBeep() and represent the
frequency and duration of the tone to make when you "page" into a "new"
thread. The values 20000,10 make a quick "clicking" like sound that
isn't *too* anoying. I'm open to ideas on this one ... :)
o Default tagline file is now MISC2.TAG in an attempt to minimize
anti-Windows discussions in OS/2 related conferences. OS2.TAG is still
in the distribution zip, you'll just have to set it yourself, if you
want it.
o Minor bug: List Selection processing would exit a list if HOME was
pressed on the "first" page of records. Now, user stays in the
selection list and the cursor moves to the first entry.
o When Sorting by Subject, the 'H' and the 'B' keys used the old way
(searching forwards/backwards by subject) aren't that useful. I've
changed their behaviour slightly in this case. The 'H' key will move
forward a message, and if the "thread" changes, will display the
Quick Thread Summary screen. The 'B' key will move backwards one
message pull up the summary screen if you move into a "new" thread.
NOTE that the selecting a thread from the summary screen moves you to
the *first* record in the thread, even if the 'B' key was previously
used. There currently is no way to jump to the last message in a
thread. Is this capability desirable?
o The default for the setting of ExtendedAttributes is now YES. If you
do not use the E editor, some minor speed increases may be achieved
simply by setting this to NO. Note that this is only an issue with
users creating their INI file for the first time (existing INI's are
not affected by this change).
Didn't get to twits and canned searches yet - Sorry! I think the threading
stuff will satisfy more of you, anyway :)
Changes included in v1.2x
-------------------------
o Thread sorting/grouping would sometimes misplace a message because the
last character was chopped. I've modified thread matching to check
24 characters instead of 25. I can't see where this could be a problem.
o Disabled many keys (Q, I, Tab, Backspace) while searching all conferences.
These weren't functional under searching-all conditions, and caused
strange things to happen when invoked.
o Pre-defined searches have been added. I did this for myself, but I'm
sure many will see the benefit. Basically, you can build your own
conferences by defining search criteria. All messages found to match
will he included in the defined conference. The "MakeConference"
parameter is added in the MR2.INI file, or can be added into the BBS
specific INI file. See the included file "Search.Ini" for an example.
You can have criteria listed in the MR2.INI *and* the BBS ini, and
they will be combined correctly.
The following set of lines:
MakeConference = MR/2
String = MR/2
will result in MR/2 searching (in the background, multithreaded) all
message for the string "MR/2" and creating a custom "MR/2" conference
that will appear in the Conferences w/Mail menu. Once the defined
custom conferences have been built, and you return to select a
conference, these new conferences will be listed.
The number of search result conferences is "unlimitted" - at least in
a practical sense. Memory is the issue, and valid file names. I use
prefixes of A00 thru A99, up to Z99. That's 2600 possible conferences.
If someone needs more, please let me know :)
A single pass is made through the message base - for each message, all
combinations of search criteria are evaluated and the message is
recorded in any/all of the conferences it's found to belong to. MR/2
will "beep" (low sounding tone) when it's done searching. I'll INI-ize
this sound later.
As another example:
MakeConference = DR DEBUG/C/C++ & OS/2
Conferences=93,99,111
String = OS/2
defines a conference that will display with a rather verbose name,
and will contain all message from conferences 93, 99 and 111 in which
"OS/2" was found. A conference number of "*", or a missing conference
line will cause ALL conferences to be searched.
This feature is particularly handy for me. I'm a diehard CTOS fan, and
I code a commercial bar coding software package. If these topics ever
appear anywhere, I'd like to know. Since they rarely appear, I
rarely bother to search for them. With a pre-defined search, these
words are always checked for, and I'll never(*) miss an occurence due
to laziness. I can simply add the lines:
MakeConference = Miscellaneous
Conferences=*
String = Barcode\Bar Code\CTOS
o Other INI parameters have been added to compliment the new
MakeConference option. The parameter "ShowEmpties" controls whether
empty custom conferences are to be displayed with message counts of
"(0)". If NO is specified, empty conferences do not appear at all
in the conference list. "DisplayStatus" will show the message
search/hit counter on the bottom of the screen if set to YES.
"SeparaterBar" will place a line between the normal and custom
conferences if set to YES.
o Fixed a bug in the logic that used to split long messages. I messed
this up when I put in word wrapping - it wouldn't really split messages,
it simply put all lines in the first message and created an empty
"cont'd" message.
o In testing the message splitting, I discovered that replies over 32K
in size weren't even registering. This equates roughly to 800 lines of
message text. The reply builder now accomodates messages up to
64K in length. This is roughly 1600 lines of text, or 15-16 messages
"cont'd" from the first.
o AND still while testing the message splitting logic, I found an even
bigger problem with replies. If the reply file ever reached a total
size greater than 32K, replies would be ignored. This had to do with
using an integer to hold the file size, and having it overflow. It now
uses a long value and will function correctly. I'm suprised no one
caught this - or maybe they did and didn't report it.
o Conferences for which MR/2 was left to build NDX files for could not
be searched due to a problem with the way the searching functions
used the internal NDX files. This became apparent when I tried to
search through the new custom conferences. This has all been corrected.
o Removed the annoying beeps when selecting from a list and you hit the
uparrow or downarrow too many times.
o Converted all thread code to use _beginthread/_endthread. Previously,
I was using DosCreateThread and mixing in some C runtime library
calls. While this seemed to work OK, I figured I'd play it safe and
convert, especially considering the strange trouble some folks are
having (although I'd like to blame the E editor :).
o Modified tons of code to support 4 digit numbers for index file. Most
BBS's carry under 1000 conferences, but some (Channel 1 in particular)
boast over 1000 and have NDX files like "1654.NDX". All old code was
geared to fixed 3-digit numbers.
A benefit (?) of this is that custom "made" conferences now are numbered
A0000-Z9999, which gives us more breathing room (as if 2600 custom
conferences weren't enough :) Now you (theoretically) have up to 26000.
EditHeader now functions just a little differently when specifying a
conference number.
o On Custom-made conferences, by default the search string is found in
all conference messages and aligned as if a search was performed. If
you wish to suppress this action, set the INI file parameter
"PositionOnMatchLine" to NO.
o When "Replies exist, keep?" is denied, the .rep file is now actually
renamed to a .old file. I've had happy fingers too often and lost
reply(s). This is not optional and is automatic - I'll add an INI
parameter to control it later.
o Split out all pre-1.0 data from this file into oldread.me. I'll
reorganize the whole thing later - probably with version 2.0.
o Mouse cursor would not hide properly when placed past line 25 (in
non-standard video modes). Cursor would cause streaking and generally
misbehave. This has been fixed.
Changes included in v1.3
------------------------
o Scroll bars are now integrated into DLSelect (the selection list
routines). You can use the mouse to scroll through lists. I've also
made clicking on the divider line directly above the first entry to mean
"page up". Clicking on the bottom line of any selection list box
means "page down".
The scrolling routines need some work - mostly cosmetic. One annoying
problem is the lack of a mouse repeat when holding the LMB down. I'm
not sure why I don't get this - I'll have to fiddle with ZTC's low
level event handling functions again :(. (In other words, holding the
mouse down on the up or down arrows only registers once per click -
if you hold it for half and hour but only "click" once, the display
moves only one line.)
o I've used ZTC's event "timer" to get a mouse repeat. Works pretty well.
Now to test it against time :)
o Selection lists now allow for "jumping" to a letter prefix. For example,
while viewing the Master Conference list, pressing "O" will jump to
the NEXT conference that starts with an "O". Immediately pressing "S"
will jump to the next conference that starts with "OS". Pressing
any non-printable key (e.g., up arrow) will reset the prefix string to
nothing. Prefix search starts at the current cursor position and works
forward only.
o The thread sort, which I thought to be "static", turned out to be pretty
votatile. This was pretty obvious, I just didn't connect with what was
happenning. I've fixed it so that identical subjects are sub-sorted by
message number. This ought to keep everything in "order" within each
thread.
o Line wrapping for replies has been fixed to "trim" leading spaces from
next line. Previously, if a line wrapped so as to end with more than
one space before the next line's word, these extra spaces would be
left in front of the line. This has been corrected.
o Clock: And another ZTC bug wiped out. Zortech's strftime function
messed up the %I parameter for hours in 01->12 format. The display
would progress from 11:59 to 01:00 at midnight. Wrong! I've
corrected this and all clock displays seem to now work correctly.
o If using PCBoard style taglines, I now use three dashes instead of
underlines for the tearline. If Fido mode, underlines are used.
We'll see if this makes everybody happy.
o I've included two icons with the distribution zip: mr2.ico and
email.ico. MR2.ico is a Nick Knight original and I'm not very proud
of it :(. Maybe I'll play with it some more and purty it up. EMAIL
is a modified ICON I scarfed and looks IMO nicer. Maybe I'll add
some more possibilities ...
o If all replies from an "existing" reply file were killed the
original reply file was not deleted. MR/2 counted zero replies, so
it figured there was nothing to do, and any old file remained
untouched. Now, I rename the old .rep file to a .old file.
o The 'V' key, while viewing a message, has always been there to change
video modes while reading any message. I never documented this because
of various bugs. Well, someone discovered it and reported the bugs,
which I now believe to be fixed. 'V' will now toggle through the
video modes (number of lines) while viewing any message.
o To remain fairly keystroke compatible w/SLMR, I've made Ctrl-PgUp and
Ctrl-PgDn translate to Tab and Backspace, respectively. This is during
message reading only; these keys perform next-thread, previous thread
functions.
o Fixed a bug with the resetting of the original video mode upon exit.
Also, added the ability to specify ANY video line mode in the INI file.
This line count gets added to the video toggle round robin loop.
If you specify a video mode of 52, MR/2 loads this way (no error
checking is done - you'll stay in 25 line mode if 52 is invalid).
If you keep pressing ALT-V on packet select, you'll cycle through 25,
then 28, through 60 line mode. After 60 line mode, you'll toggle back
to 52, then 25 again. Get it?
o Also, I "fixed" it so that if no VideoMode is specified in the INI file,
MR/2 defaults to whatever the current Video Mode is.
o Default Word Wrap column for replies is now 80 (was 78). I'm testing
this to see if quote-wrapping problems diminish while message-wrapping
problems remain in check. If you specify a value in your INI file,
this change is irrelevant.
o OldRead.Me (pre-1.0 history log) has been renamed to mr2.hst. I'll
shuffle off older entries from read.me into this file as they become
kinda old.
o Fixed some bugs with the "To" field getting confused when EditReply
Header was set only to AFTER.
o Reformatted the Quick Thread Summary screen so that all subjects line
up, even if the read/message counst go to 2 digits. This was also
necessary so that typing letter keys properly jump to the correct
spot.
o 3 New INI parameters. BeepOnPersonals defaults to Yes and controls the
beep that is made when personal messages are displayed. GoToLastRead
defaults to No. If set to Yes, the "do you wish to return to your last
reading position" is suppressed and MR/2 just goes there automatically.
BackupOldReps defaults to true and controls the renaming of .rep files
to .old files instead of deleting them.
o Another new parameter, by request. You may optionally specify an
alternate editor command for use when creating NEW messages. The
INI token NewMessageEditor may be set just as the Editor parameter is,
and this command will be used whenever writing a new message. This
allows for differing startup macros. The "new" editor is used for
ALL non-reply editing (including MR2.INI, News, Files, Bulletins,
Save files, etc). If a "new message" editor is not specified, the
default Editor command is used for everything.
o Modified the message formatter to tack on [M][][] to the end of the
"===" divider bar. These are new mouse click areas. The arrows cause
scrolling down and up. Clicking on the M invokes the new "mouse menu".
NOTE: I was also going to assign the mouse menu to the middle mouse
button, if available, however, my middle mouse button doesn't seem to
function even after tweaking the MouSetEventMask parameters. Hmmm...
o The new mouse menu can be displayed and used for keystroke simulation
while viewing a message. Click in the new [M] box, and the mouse
menu is displayed offering 16 options. Click on any of these options
to invoke that function or use the right mouse button to cancel.
The older mouse hot areas are still functional. For instance,
clicking on the message SUBJECT area simulates pressing "H" and
clicking on the CONF: area simulates an I.
o I've also implemented double-clicking on selection lists. This is
currently a must-do; the old method of single clicking simply
highlights the entry. You must double click to select it. I may let
you pick which method to use (single or double-clicking) via INI param.
o If a packet is already open and you answer NO to the "use this one"
prompt, MR/2 now deletes MESSAGES.DAT. Previously, the work directory
files remained undeleted until a packet was selected. This caused
the "use this one" prompt to come up after any other function. For
instance, each time the video mode was toggled, you'd have to answer
this prompt again. Not any more!
o I've changed the status line on the bottom of the packet select menu
and added a "mouse menu" on the right hand side. Single click on a
packet name and then click on "[D]" to delete this packet.
o If you used "X" to fast-exit MR/2 and a BBS "local" INI file was in
use, I still reloaded MR2.INI. This step is now skipped resulting
in slightly faster exit speeds.
o New INI parameters: MouseMode=Single sets the mouse "click" mode to
Single or Double. The NEW default is double clicking. For those of
you who liked it the old way, set the mode to SINGLE.
Also, MouseClickSpeed can be set to the maximum number of milliseconds
allowable between mouse clicks to still be considered a double-click.
The default is still being figured out - it'll be somewhere between
40 and 500. OK, it's 500 :)
AND ... MouseScrollSpeed sets the delay for scrolling when you park the
mouse with the left button down on a scrollbar arrow. The default is
set to 1. If this is too fast for you, change it to a higher value.
o Made the same "out of bounds clicks are just ignored" change to the
menu routines. Clicking out-of-bounds on the main menu canceled still.
o Had to fix a timer to simulate mouse clicks for scrolling the message
viewer when parked on the mouse scroll arrows.
o I've added a new canned-search parameter, "CHECK". This enables you to
check for text in any combination of From, To, Subject and Message.
Message may be further sub-divided into Body and Origin. I consider
the "origin" section to be anything after and including the first
"tear" line. For Example:
MakeConference = MR/2 - Tagline
Check = Origin
String = MR/2
will check only the message section, and only below the first "---" or
"___" found in the message. Further:
MakeConference = MR/2 - No Taglines
Check = Subject,Body
String = MR/2
will check message up to the first tearline, and will also check subject.
No sense in this case checking From and To, although I could have added
this. You can find all message from Jim Gilliland this way and build
a conference of them.
NOTE: The message viewer will align the display on the first hit
in the message. It will NOT ignore the body if the search was defined
as ORIGIN only.
Leaving the CHECK string out will result in ALL areas being checked.
This code was partially implemented before, I just had to add the INI
parameters and the origin splitting.
This will be the base code for my twit filters - a little tweaking
and you'll be able to twit any message combination for which you can
build a custom conference.
o Optimized the message section searching a little. It *was*
converting the message to upper case for each search criteria
record, even though the first check had already converted it. Now
it only converts the message on the first check, and only if the
message body is to be checked.
o You can now forward the message you are reading to another user
and/or conference. Simply press "W" (SLMR-compatible key) and the
Message Header Edit screen will appear. Fill out the To field and
change anything else as needed. Accepting this form will create
a forwarded copy of this message in the reply conference.
NOTE: MR/2's tagline does not appear in these messages UNLESS you
modify it later. Making revisions toa forwarded message will cause
MR/2 to place/replace its tagline on the message.
o When modifying a reply, MR/2 now extracts and reuses the original
tagline. Previously, a new tagline would be automatically picked to
replace the original.
o Modified the packet open logic to use an insert sort when creating the
list of Master Conferences. Sorting after-the-fact was very slow.
PC-Ohio packets (w/600 conferences) load much faster now.
o I tried setting the background conference builder to IDLE priority and
it would not work properly with PMInfo loaded. Changed it back to
regular priority with a -30 delta.
o I've implemented some basic "ANSI animation" code in the message viewer.
Press "A" while viewing any message with ANSI escape sequences and
see if it works. Scrolling of the screen is hokey - I'll work on it
some more. Some screens look OK, though :)
o Ooops - big bug. If Control.Dat was > 32k MR/2 would fail to read the
master conference list, and no mail could be read. This limit is
now 64k, and I can easily just remove any limit with the next release.
The sample packet I was presented with had 2500 conferences available
and Control.dat was around 40K.
o A "Working" message now displays while a packet is being opened by MR/2.
There was a substantial pause on packets with 600 conferences, and a
couple of seconds pause on the 2500 conference packet above. It appears
that there's trouble (as all is quiet), and then the main menu pops up!
o Trimmed the end of replies a little. It was possible to get an extra
blank block (128 spaces) at the end of the message.
Changes included in v1.31
-------------------------
o Modified the packet select clock display to show centered on the screen.
It was centered for short month names, but September (it *is* the longest
name) made it look lopsided.
o ANSI animation is much improved ... I've still got some work to do.
Some of these ANSI messages are incredible! Toggle MR/2 into 34 line
or greater mode to read stubborn messages.
o OK, I've enabled "ANSI detect" for News, Bulletins and New Files.
Actually, if I would have enabled it, this would have worked well in
version 1.3. Unfortunately, I only tested it with message reading, and
it didn't make any sense for these - if a message had ANSI codes, it
was a good bet it wanted full control of the screen, which I didn't
want to give unless requested by the user (the "A" key). Now I find,
after sampling several BBS's (Wildcat's were suggested, then I find that
PCBoards with Graphics menus enabled sends ANSI codes also :), that
the non-message ANSI stuff tends to be much more behaved. Anyway, test
it out, let me know of any problems.
o For ANSI animations, had to enable the "blinking" attribute. I then
set it back off for regular operations.
Changes included in v1.32
-------------------------
o Blinking attribute still didn't work in the message/file viewer. News
files with blinking text showed reverse video in some starnge color.
o Custom conference search was still started on message entry w/o any
existing packets (ALT-E from the packet select screen). There are
no message to search in this mode, but the thread was started and the
beep would occur almost instantly. This has been fixed.
o Modified the "ShowEmpties" default flag from YES to NO. Set it to
YES in your INI file if you want empty custom conferences to show.
o KeepMessageMarks would sometimes get corrupted and set to NO. This
was caused by an error in the INI.CPP code that "dropped" into the
"K" parameter processing after doing the "H" processing (missing
break statement). For some reason, the corruption was more sensitive
to opening a packet using WPS "associations" that direct MR/2 selection.
o But then, there was still a problem with using WPS associations to
open a packet. Problem also occured whenever simply passing a file
name on the command line. MR/2 tried to save Bookmark EA's, but used
an invalid file name. This is now working correctly.
o Added NEWMR2.ICO to the distribution zip. This is an MR/2 icon
submitted by Dennis Powell. He claims it's better looking than mine,
and I guess I'll have to agree :).
o The ANSI file viewers would clear the screen to the user-defined message
color before showing the file/screen. This resulted in the "wrong"
background color. I now clear the screen to black before showing text
using ANSI escape sequences.
o Also, MR/2 left all ANSI display routines with the default screen colors
set to whatever the ANSI display last set. I now set normal white on
black upon exiting these functions.
o I made some changes to try to speed up the scrolling of selection lists.
The mods where to the video display routines, but seemed to do nothing.
I don't really see any slowness, unless I stand on the downarrow key.
These may be more a case of slow keyboard repeat. I'll see if I can
modify this somehow.
o When you change the FROM user when editing the reply header, the new
"from" name is remembered and becomes the default for as long as that
packet is open. Once the packet is closed, the user name defaults
back to the one found in the control.dat file of each QWK file.
o I removed survey.txt from the distribution zip. I think I know what
the majority of folks want, and the zip file needs to be pruned a little.
Also removed Misc1.Tag, leaving Misc2.Tag and OS2.Tag. These may get
trimmed or disappear altogether at some time ...
o Also removed MR2.DOC from Welcome.qwk, the default, "I'm lost" new-user
packet. I've replaced it with a small note about seeing mr2.doc as
a separate file. This file was actually packed twice, now only once.
That's it for now ... I'll work on adding some actual enhancements as soon
as I get MR/PM out and somewhat stable ... that'll probably take a week,
or two, or three. Look for MRPM_095.*
Changes included in v1.33
-------------------------
o Forwarding messages had a problem with taglines. The forwarded preface
was placed in the edit-header tagline field and could get corrupted.
Forwarded messages get no tagline; this field now displays blank and
any entry here is ignored.
o On some messages, lines would be highlighted as quotes that were
obviously not. This was from ghost characters from previous lines and
has been fixed.
o Fixed a problem with the MR2.ID recognition routine. Basically, if
any of my checksums calculated to a CR or a EOF (0x1A), the file would
not be recognized as valid. This has been fixed.
o If a zero length reply file was for some reason saved, then reedited,
MR/2 would throw a second tagline on the file. Fixed. I wonder if I
can reasonably detect the cases where the reply has been saved w/o
any user-added modifications and warn??
o In the INI file, MouseMode now supports the keyword "Off" in addition
to SingleClick and DoubleClick. All "Off" does is tells MR/2 to hide
the mouse cursor (the mouse is still active, just hidden). ... by
registered user request.
o New INI parameter SuppressVersionInTagline defaults to NO. If
you're a registered user, you may set this to YES and the version
number(s) will be suppressed when MR/2 generates a tagline. This
allows more room for your tagline message, particularly when used in
conjunction with "SerialInTag" set to NO.
Changes included in v1.34
-------------------------
o The custom conference search "check" keyword ORIGIN has been modified
to recognize a lines starting as " * " as the "origin". Also sees the
line as the start of the origin area if the "*" is instead an "X" or a
ASCII block char (0xFE).
o The 1.33 tagline modifications to suppress the VERSION string worked OK,
but the new code messed up the non-suppressed version string for
registered users. This has been fixed.
o Added PMColors to the INI file processor. This adds nothing to MR/2
classic - this is for the PM version :(.
o Removed the file Read.Me from the Welcome.Qwk default packet. This
was just a duplication of the file read.me that's distributed
separately. Duplicating the file just made distribution zip's larger
and made extra work for me when packing up new versions. Now, all
that's in the .qwk packet is instructions to read the read.me file.
Changes included in v1.35
-------------------------
o Another control.dat problem was found pertaining to a specific BBS
(or BBS software/mail door?). A registered user sent me a packet where
control.dat had the user name padded to about 40 characters max. This
overwrote some internal variables (specifically, the BBSID) and the
system tried to create replies in a file named " .msg". This
is not legal and MR/2 would puke. Since this has now caused trouble
twice, I've rewritten the routine to handle virtually any length of
user name.
Changes included in v1.36
-------------------------
o Beeping on personal messages did not always work. The comparing of
names was case sensitive, and worked only if the message name and the
user name in control.dat matched EXACTLY. This has been corrected.
o Modified the tagline "random" seeding in an attempt to make things more
"random". Someone reported that the same taglines were coming up even
when set to RANDOM. I could not recreate this, but an examination of my
code revealed that there were only 60 possible seeding combinations.
(I used time(NULL)%60). I've changed this to offer a broader range of
starting seeds.
o Tagline style now defaults to PC-Board. This is 3 dashed as a tearline
and hi-end ASCII block characters as MR/2's signiture delimiters. I
also added the keyword "TagStyle" to MR2INI.ORG. It's been there for
a while, but I missed it when documenting and setting up this starter
INI file.
o Fixed a thread-name formatting problem in the quick thread summary
logic (originally fixed in MR/2 PM). The very last thread name would
sometimes be blank or some initial characters missing due to a previous
"RE:" being detected. This has been fixed.
o Modified the conference "sort" (when Alpha-sorted master conference
names are requested <the default>). Previously, conference names
where inserted into the final linked list used by the QWK class in
insertion-sorted order. In other words, I'd plow through the linked
list and find the right spot for a conference name and plop it
there. This was extremely slow for large lists. Now, names are
recorded (sorted) in a BTREE structure, then transfered into
linked-list format. The increase in speed (using PC-Ohio's 1000+ and
Channel 1's 2200+ conference lists as tests) is dramatic. I'm
happy, I hope you are too.
Changes included in v1.37
-------------------------
o The selection box logic had some problems when working in modes
with a large number of display lines (e.g., 60 line mode). Pressing
enter on the 32nd listed entry or beyond was treated by MR/2 as being
a letter-character command and the "ENTER" would be ignored. This has
been fixed.
o Added a new member of zEq, the event class. The event function
rehidemouse() can be used after a video mode change. If the mouse
flag says it should be hidden, MouRemovePtr() is called with the
current screen size. If the mouse flag says the mouse is *not*
hidden, nothing is done.
o The changing of video modes (number of display lines) caused the mouse
cursor to sometimes become visible when it shouldn't. This has been
corrected. Also, if MouseMode was set to OFF and you replied to any
message, the mouse would appear upon return from the editor (the mouse
flag was reset to "show" upon return). This has been fixed.
o In an early and primitive attempt to support long file names, I've
switched to the linker distributed with the MS v1.2 toolkit. It seems
blink (Zortech's linker) doesn't like the LONGNAMES keyword in the
.def file. Hopefully, nothing strange will happen :)
Changes included in v1.38
-------------------------
o If EditHeader was set to AFTER only and an existing reply was modified,
"your" name would appear in the TO field as well as the FROM field.
This was the result of a 9/2/92 patch for AFTER mode, but the patch
should not effect editing of replies. Fixed.
o While working in Header Editing "AFTER" mode I also discovered that
the subject of a "Write new" message was often filled in with the
last read message's subject. Subjects are now blanked out when
writing a "new" message.
o Write new: conference numbers > 1000 would only show last 3 digits.
Display now is widened by one and 4 digit conference numbers displayed.
o Conference select when editing the message header has been expanded
in width by one character to match Write new conference select.
o My testing of BBS's with 4 digit conference support failed to find one
possibility. It was reported that, at least once, some QWK door produced
4-digit index files for conference numbers < 1000. For instance,
conference 1 would be indexed by 0001.ndx. "Normal" doors seem to use
3 digits *until* the conference number grows to 1000 or more. MR/2 now
supports and auto-detects both types.
o Enhanced the tagline stealer to recognize taglines made by the BlueWave
mail reader. Added recognition for Speed Reader's method, also.
o A packet was provided to me that had strange, extremelly long conference
names; actually conference names followed by comment-like descriptions.
These long names were causing strange screen-wrapping problems. I've
now got a 60-char maximum box width set for conference names. Names
longer that this will be truncated ... they won't look pretty, but they'll
look better than what I just saw :)
o My new/faster btree sorting method would toss out duplicate
conference names. This wouldn't normally be a problem, but OS/2
Shareware's QWK door truncates all Usenet news feed names to
"Comp.Os.Os2.". Versions using the old sort method (or new ones with
Alpha sorting OFF) would show multiple conferences all with the same
name. New version show the conference only once, if at all.
Collisions (duplicate names) are now handles as unique records and
added - so all conferences show up. They're still named the same.
I've netmailed OS/2 Shareware with a description of the problem.
o Conference name boxes on "Write new" and header-editing selection now
adjust their width to accomodate long conference names. (Kind of a
continuation of the fix above).
o I've been making alot of minor changes and improvements and haven't
been too careful about remembering them. Let's see, I found a minor
bug with adding replies. Every time you replied, a 30 byte chunk of
memory was allocated for the conference listing, and any older conference
record was never freed. You'd have to make quite a few replies before
this would create a problem - but it's fixed anyway. The "Read" indicator
on the message index and quick thread summary has been changed from
"*" to "√". I think it looks nicer.
o Tagline stealer can now steal wider taglines - 76 chars in length max.
o Added some code to detect "&" symbol in BBS name. This was causing
the OS/2 CMD.EXE to do strange things when passed to PKZip and PKUnzip.
MR/2 now wraps all BBSID-based names that contain a "&" in quotes.
Changes included in v1.39x - BETA
---------------------------------
Folks: I'm calling the next few versions "beta-level" releases. Most of
my releases are anyway <g>, but the next couple of cuts are going to have
many new functions and lots of rewritten sections. Most of these are
scheduled for version 2.0, but I'm thinking that I'll release them in
steps instead of holding back (i.e., 1.4, 1.5 ... 2.0). Stick with v1.38
if your craving for adventure is low :)
o INTERNAL: Renamed RemoveKilledReplies() to RemoveKilledMessages(). This
function will be used to later pack message "folders" and the new name
better reflects its more generic purpose.
o INTERNAL: Added folderfh to QWK class and modified all message access
routines to check the freadingfolder flag.
o INTERNAL: new routine fix_path() in INI.cpp. ReplyPath and PacketPath
now pass through this call, as well as FolderPath.
o INTERNAL: Massively modified Inbasket/Folder logic - I didn't like
the way it was working.
o Packing of replies has been reworked. Previously, all replies were
copied to a temporary file, with killed replies being filtered out.
Then, the reply file was deleted and the temporary file renamed to
the reply file name. Now the reply file is packed "in place". This
is faster, does not require a temporary file AND has been made generic
to allow for future use with folders.
o Mouse is now semi-function on "form" type entry screens. Functional
as far as clicking on any informational "keystroke" bar will simulate
that keypress. For example, when saving a message, clicking on "pick
from list" will simulate an F2 keypress. This was probably more coding
than it was worth, but it works :) Tagline stealing, save file select
and reply header editing were effected.
o Added an " ENTER = ESCAPE " key bar to save file name entry to aid in
mouse use.
o New TagStyle value has been added. If the INI file contains the line
"TagStyle=TwoLine", then a tagline in the form of:
.. your funny tagline here
-- MR/2 v1.38 NR
will be produced. Originally, I called this the "BlueWave" style, but
something didn't sit well with me, so I changed it to "TwoLine" :).
o You can now "Defer" any message to a QWK save area independant of the
current packet for later processing. This will create an "InBasket"
conference which will contain all messages for the current BBS that
have been deferred and never manually deleted. This allows for you
to reply to the message later, when time permits, without having to
keep the entire packet around, trying to remember why, and which
message it was. Press "D" or "/" while viewing the message you
want to defer.
*** THIS IS BETA-LEVEL CODE - USE WITH CARE ***
ALSO: Inbasket code is subject to change ... read the next version's
read.me file to make sure inbasket messages saved with this version
will work with the new. You may have to "clean up" old inbasket
message with the old (this) version MR/2.
o Added FolderPath as an INI param. This is where folder directories
will be created. The default is "..\", so that subdirectories off of
the MR/2 "home" directory will be created.
o ALT-E can now be used to enter NEW messages for any known BBS even
when the "no packets found" dialog box is displayed. I thought I'd
done this before, but it wasn't working. Now it does :)
o Forced REPLYLOG variable to NO - this wasn't finished and I'd
inadvertently documented it in the default INI file. It did very
strange things. I'll try to finish this off soon so it works the
way it's supposed to. Sorry?
o The internal editor is now functional. Simply set the Editor
specification in your INI file to "INTERNAL". The editor is fairly
simple; press HELP (F1) for a summary of available keys.
NOTE: This is also beta-level code. Expect bugs, but the basic
editor works OK. Single window, no import/export text functions, yet.
ALSO!!! Set your word-wrap margins in MR2.INI to *76 or greater* for
the best results. Smaller numbers work fine, except previous "quoted"
sections get mangled (at least you can now see this *while editing*
the message, though :).
The editor is wide open for ideas. I *still* don't want to spend alot
of time writing editor code, but if an idea makes sense, I'll think
about it. TELL ME ABOUT YOUR PROBLEMS AND OFFER SUGGESTIONS, PLEASE.