MR/2 PM - A QWK compatible mail reader for
OS/2. This is the PM version of popular
OS/2 text-mode QWK reader, MR/2. Thread
summary pick-lists, multithreaded searching,
user-defined custom conferences.
MR/2 PM - A QWK Compatible Mail Reader for OS/2 PM. 06/20/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. This will increase to $25 when the final
release is officialy distributed. Register now and avoid the price
increase! Register MR/2 PM also registers you for MR/2 character
mode, and visa versa.
Existing MR/2 registered users are automatically registered users
of MR/2 PM. The same MR2.ID file can be used by both versions.
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", ([email protected]
Fido Echomail: Echomail messages to me 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
I recently have acquired access to a host of other
networks with OS/2 conferences. These include RIME,
SmartNet, Uninet and some others I can't remember.
I also do poll the Fidnet OS2PRODSUPPORT echo.
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.
** NOTE: Nerd's now supports an MR/2 conference **
** and file area. Conference #208 is dedicated to **
** MR/2 support and files. File area #45 contains **
** MR/2-related files. Any file uploaded into **
** conference 208 will be placed in file area 45. **
Nerd's does support file requests (157/2 or 157/3)
Optionally, I call into PC-OHIO regularly.
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.
MR2.INI - your MR/2 PM parameter file
This is where you tell MR/2 PM all it needs to know about your system
and the way you'd like it to work. If you don't have an MR2.INI file
from MR/2 classic (character mode), or you've never modified one for
MR/2 PM before, MR/2 will attempt to place you into the E editor
with a starter INI loaded. Make any necessary changes and save the file.
NOTE: Problems ... you'll have to edit MR2.INI, then exit out of MR/2 PM
and reenter for any changes to take effect. My "reload INI" code needs
some looking at.
** If it can't or doesn't load the editor to create the initial MR2.INI
file, it's best that you do this by hand, from the command line:
copy mr2ini.org mr2.ini
NOTE: You may use an existing MR2.INI file, if you have one. The only
change that's really required is that your editor and zipper/unzipper
file names be fully qualified. Use a complete path and add the appropriate
file extension (e,g, "d:\os2util\pkunzip.exe"). These changes *will* work
with MR/2 classic, also.
Oh yea, I have the thing logging some messages to mr2pm.log. This file
may aid me in solving problems that occur in testing. It *will not* be
part of the final distribution reader.
KNOWN BUGS AND STUFF
THIS IS BETA, PRE-RELEASE SOFTWARE. THE BUG LIST IS QUITE EXTENSIVE
AND ALL KNOWN PROBLEMS ARE BEING ADDRESSED. USE THIS PRODUCT AT YOUR
OWN RISK - THE AUTHOR ASSUMES NO LIABILITY FOR LOST OR DAMAGED DATA.
I've got a big hit-list, and I'm anxious to start hitting. I'd like to
get as much feedback as possible while I'm in this process, though.
Feel free to report bugs or offer suggestions. MR/2 PM is based on my
seemingly solid QWK routines from MR/2 "classic", but the user
interface is all new.
Version 0.95 - Original ALPHA release 10/12/92
Version 0.96 - Second release - BETA 10/25/92
No ANSI code support exists.
Message display is relatively slow, particularly on long messages.
No online HELP exists at this time.
Just for fun, here's my "to do" list in its current form. Note that these
notes aren't intended to make sense to you ... don't worry, they do to me 🙂
Listing these may help identify problems I'm already aware of. There seems
to be alot, but the thing works fairly well.
To Do's (Bugs/Fixes):
o Long conference lists
o Highlight search hits - define a color.
o Alt-R & Alt-W inside editor
o Reorder Message read buttons?
o Expand message index, horizontal scroll bars.
o Hit counter for searching (checking ... )
o Online help
o Returning to last read position
o Find across ALL conferences
o Keep focus out of message box - reset focus to NEXT?
o Edit button on Save dialog doesn't work
o Save files - remember last path / filename - ditto w/packets
oNo-file error checking for bulletins.
o Config button: editor opens in the background. Wait box is off.
To Do's (Long term enhancements):
o Toolbar(s) instead of pushbuttons.
o Get rid of listbox for message viewer and write to window myself,
paging, scroll bars much faster.
o Make 32 bit and use v2.0 controls (eg, settings in a notebook).
o Font control - colors? Moveable/sizeable windows?
Changes included in v0.96
o Personal messages now beep if configured to do so.
o The "find" text is cleared when a new conference is selected. Old way,
the text locator would still be in effect when a new conference was
o Packet path was previously lost when a packet was exited, resulting in
an empty packet selection list. This has been fixed.
o If the FROM user is changed when replying, this change is remembered for
all subsequent replies, until a new packet is selected.
o Message viewer keyboard interface enhanced. Up/Down arrows now scroll
message by line; Page Up/Down by page. Home jumps to beginning,
End to end. Insert key calls up INDEX (still trying to stay SLMR
keystroke compat for some reason 🙂 Paging improved somewhat.
o Added a more direct way to get message lines from the QWK engine. The
previous method involved querying the message line by number, walking
through increasing number requests. Each call resulted in the entire
message being traversed until the line was found. Now, the new call
oStart = GetNextMessageLine(char *target, int oStart) speeds this up.
Filling the message list box is now faster.
o Columnized listboxes now display selected item in a more "correct"
o Bookmark flags were not getting set and/or being read. This has
o Message window now displays the bookmark flags in a minimal fashion.
If a message has been read, a "" is displayed next to the reference
number. After this, an "R" appears if the message was replied to,
an "S" if it was saved, and a "K" if it's a reply that's been killed.
o Taglines are now selectable via the "taglines" button. Hot key of
F2 not yet implemented.
o Save Header button on reply message header now functions.
o If using an existing packet, flags to save replies and bookmark flags
were not being defaulted to TRUE. This caused problems - now fixed.
o When modifying or killing a reply, the message header and message text
are now updated on screen when the action is complete.
o When spawning to the editor, the path was *not* inherited from MR/2 PM.
You would usually end up with a default path of C:\. This cause
problems with reply files named "reply.msg" (not fully qualified) to
appear to be missing. You now start editing while pathed into the
tmp$$ working directory.
o Enabled the "T" key when viewing a message. This now steals the current
message's tagline. As with MR/2 classic, the arrow keys let you scroll
through the message lines. Pushbuttons are also provided for this
o Save-to-file has also been enabled. Press "S" while viewing a message.
A file dialog screen comes up for save-file selection. There are some
inconsistencies here that I hope to clean up quickly ... but it does
o Enabled the F2, F3, F9 and F10 keys on the Reply Header Edit screen
to function as in MR/2 classic; Pick tag, Toggle to, Save Header Only,
Accept, respectively. F10 won't register for some reason (it's a PM
special "menu" key - I'll have to read up :), so I've assigned F11 as
the "Accept" hot key (in addition to F10, which I hope to get working).
o The "Save Header" botton when editing the message header is enabled
only when editing an existing reply. This allows you to modify
the destination data w/o editing the message content. This makes no
sense unless the message already exists.
o The "R" replied mark wasn't showing up immediately after a message was
replied to. Fixed.
o The Page Up/Down "buttons" on the message viewer no longer obtain the
focus when clicked on.
o Private/Public buttons now work correctly while editing a reply's header.
Conference name is now static text - no user editing can be performed.
o Expanded the conferences w/mail listbox width a tad.
o Most pushbuttons now have associated hotkeys that are underlined. I
may have went a little overboard, but I dunno.
o When modifying a reply, old tagline is extracted and becomes the
default tagline for the "new", updated reply. This was previously
o There was some crazyness happening with WM_CHAR messages (keyboard
characters) that I've kludged around. For example, with a message
displayed and a secondary dialog box up (pick thread, reply header,
etc.,.) and a pushbutton highlighted, pressing the "X" key would
prompt you to exit. The "S" key would bring up the save dialog.
Even stranger things would happen. I'm not sure what I'm doing
wrong when nesting dialogs, but I put a simple filter in that
disables keystrokes to the message window when another dialog box
is on top.
o Double clicking on the system menu button, or ALT-F4'ing from either
of the programs main screens now exits cleanly. It used to trap.
o MR/2 classic uses TAB/BACKSPACE while viewing a message to move
forward/backwards an entire thread. Since TAB is used by the PM
dialog routines, this key is logically unavailable. I've attached
the same functionality to the CTRL-PAGEDN (fwd) and CTRL_PAGEUP (back)
keys. These work the same way in MR/2 classic - they're a carry-over
from SLMR-compatibility days.
o Often MR/2 PM would leave a file or conference unselected by default.
When this occurred and ENTER was pressed, the program would process
it as if ESCAPE was hit, either closing the packet, or exiting the
program. I've now taken steps to always have something selected by
default when the dialog box is initially displayed.
o Thread summary - message count is now columnized.
o Custom conferences now align the line containing matching text on
the second line of the message listbox. Also, the alignment process,
which is shared with the "Find" search function, now parses compound
search strings and matches any one string. (Previously, the PM
listbox message LM_SEARCHSTRING was used - this was for straight
word-for-word matches only).
o The "Find" dialog box now displays any currently active search string.
o The "L" key (find LAST search hit) did not function properly. Fixed.
o Played around with WinMessageBox to post the "Replies Exist" message.
This is what I'll use for most confirmations, since I'm supposed to 🙂
o Played with changing the color of text/quoted text in the message
viewer. It worked, but I'm not very happy with it. I'm leaving it
at this time to do quoted test in "halftone". I'll make this optional,
or allow a wider selection of color options.
o The "hit" status (Hit nn/nnn) is now displayed on the message viewing
screen if the message is part of the current search results.
o Logging of messages (my "remote" debugging trail) is now off by default,
but can be invoked by supplying a command-line parameter (anything).
o The "Config" button now functions to edit the MR2.INI file. I place
a dialog box up that requires an "OK" when editing is complete. This
will be removed when I get to reading the editor's exit queue.
o If no MR2.INI file exists, an initial one is made and you're placed in
the E editor to make any necessary revisions.
o If you answer NO to "use the existing open packet?", the packet is
actually deleted. Before, this prompt could come up several times.
o While building the message header index (short pause on a fast machine,
more significant on a slower machine), a "waiting" dialog is displayed.
I need to find that snippet about setting the hour-glass mouse pointer.
No, actually, I need to add some secondary threads to this stuff ...
maybe this weekend.
o Most all of the message viewer letter command found in MR/2 classic
are now functional in MR/2 PM. The exception seems to be the "B"
command, read backwards w/in thread. I'll fix this one soon 🙂
The "Z" key now works (zip to first non-read in conference).
o The "B" key (read backwards w/in thread, go to thread summary at
beginning of thread) now functions correctly. Note that selecting a
thread from the thread summary places you at the FIRST message in a
thread, not the last.
o There's a new button on the Conference Select dialog box labeled
"Write". This is for composing new messages w/o a message to
reply to. I just have to put some code behind it now 🙂
o The No QWK button is now operational on the packet select screen.
If you depress this button, the "Pick BBS" dialog pops up and allows
you to select a BBS. From then on you're in "write new" mode.
o The reply header edit dialog now has a "Conferences" button for
selecting a different response conference. The MR/2 classic hotkey
F4 also maps to conference selection. Also, the conference number
may be plugged in by hand. MR/2 now validates the number supplied and
displays the conference name, or "Unknown" if a bad conference number
o The Message Index dialog box now has horizontal scrollbar. There's
nothing to scroll yet, but the scrollbar's there 🙂
o I changed the way messages are displayed when unpacking a packet and
checking for existing replies. This still isn't right, but it's better
than it was. I still need to multithread and pipe the PKZip/unzip stuff.
That'll be first thing on the list for the next beta.
o The Config button now properly resets the packet path, if it is changed
in the INI file. Previously, the path would not be changed.
o OK, so my message index listing has a horizontal scrollbar, and I've
got stuff to scroll. Hmmm, I must have to actually do the scrolling,
too. I thought all this stuff was magic? I guess not.
o OK, Cancel buttons added to message index dialog.
Changes included in v0.97
o Buttons on the Message Index dialog box are now functional.
o Removed some unnecessary screen repaints that would occur when a
function (e.g., Pick Thread) was canceled and the same message was
left on the screen.
o If CTRL-PAGEDN was used to page forward by thread, pressing the NEXT
button would redisplay the same message immediately afterwards (only
o Focus for reading messages now starts on the NEXT button.
o The SPACEBAR now functions as it does in MR/2 classic (page down,
next message if at end of current message). NOT YET !!!! BROKEN
o Origin recognition enhancements inherited from MR/2 classic. Custom
Conference now recognize the "origin" section of a message better
whe using the "check = origin" option.
o After "reList"-ing packets, the focus is set on the OPEN button.
o Thread summary listbox - sometimes the last entry would be malformed
(characters missing from the front of the thread text). Fixed.
o You can now (again) double click on a packet name to open it, save file
to save to it.
o Pressing the Tagline button while editing a reply header would crash
MR/2 PM. This now works correctly.
oColor is supported in the message viewer listbox. I wouldn't call
it pretty, but it's there. A new MR2.INI entry has been added just
for specifying PM viewer colors. PMColor=1,2,3 ... where 1 is the
color for quoted text, 2 the color for normal text and 3 is the
background color. The defaults are half-tone, black and default
entry field color (half-tone yellow, sorta). You may specify one,
two or all three and let whatever's left default. See the MR2INI.ORG
file for colors possible.
o Many improvements inherited from MR/2 classic. The speed of conference
name sorting has been dramatically improved. Some obscure control.dat
file problems cleared up. Personal message beeping problem fixed.
Minor tagline problems fixed (?).
o Packet selection dialog sometimes had the file date/time clipped.
This has been corrected.
Changes included in v0.98
NOTE: Version 0.97 never really made it into distribution.
o Relinked with many of MR/2's latest features being added automatically.
Others needed some minor code adjustments. Deferred messages are
functional, as is the new "template" feature. I'll include MR2READ.ME
for anyone that wants to get a feel for what else *might* be new.
Also, the "TwoLine" TagStyle is now available.
o I played around with saving window positions. It works OK, but isn't
quite right, particularly with regards to secondary dialog boxes. Work
will continue. MR/2 PM now creates and maintains an "MR2PM.INI" file
in the software's base directory.
Changes included in v0.99
o For your archivers: if you wish (or have to 🙂 use a DOS version
of PKUnzip, for example, MR/2 PM will now work correctly.
This bug was causing lockups (blank screen, no keyboard, manual
boot time) on OS/2 2.0 GA and simply failing on the old 2.1 beta.
No idea what it did to versions in-between.
Now, when a DOS archiver is called upon, MR/2 PM opens a DOS window
(in the "background", even) and runs the DOS utility there.
Editors may also be DOS-based.
o I changed the way that the zip/zipper work. Basically, whether
using DOS or OS/2 executables, a new session (windowed usually)
is created. I'll have to see if I like this better, and get
outside opinions (anybody?). Also, the editor is called with
the same logic. This should help with those cases where the
reply editor would end up "in the background". That shouldn't
happen at all now, as MR/2 PM is suspended UNTIL the editor is
terminated. Uh oh, can't have this!
o Tagline selection list now has buttons for OK and CANCEL.
o Lockups due to missing or unnamed template file (lockup when
requesting the editor for a reply) are now fixed. Same problems
as with MR/2 classic.
o Read markers are back on the message index list, and the read
count is now back on the thread selection list. Sorry!
o Write button is now enabled and can be used to write "new" messages.
I'm getting some random crashing ... more work is needed.
o New buttons on Conference selection list: News, Files and Bulletins.
Bulletins is still non-functional. Soon. Buttons call your editor
accessing the specified file. No checking for non-existent files.
o Mods to keep secondary dialog box positions as "relative" to the
open/message windows. That means that if you place the conference
select window somewhere, then move the message reading screen, the
conference select box will move to stay in the same "relative"
o Cleaned up some of the "extra" little informative dialogs that would
end up appearing as independent windows.
o The zipper/unzipper EXE is now queried, and if found to be a DOS app,
a DOS session is started. No strange "$" specifiers needed 🙂
The window is now opened foreground, though.
o The editor call is now handled differently. You editor should now
end up with the correct focus, even if windowed.
o The conference listbox is now automatically updated if/when the
background "custom conference" thread completes.
o Edit header now sets the focus to the SUBJECT field.
o Cleaned up some of the button resetting to "default" values
after some other button is pressed. More to come ...
o Removed the makeshift "paging" buttons I had placed on the message
reading dialog. Turns out PM already accomodates paging by clicking
inside the scrollbar track, above or below the slider. I just
recently learned that!
o The MR/2 PM version is now part of the packet select dialog title.
o The distribution zip now contains a FILE_ID.DIZ description file.
o Bulletin button on the conference select list is now functional. It
brings up a selection list of available bulletins. Selecting one will
load your editor with the appropriate bulletin. Only minimal error
checking is performed.
Changes included in v0.99a
o Attempting to show the BBS's Welcome screen in the message listbox
behind conference select picklist. It isn't pretty (I need a
monospaced font) and you can't see much of it. Maybe I'll try
o After deferring a message, the message status was not updated with a
"D", even though the message WAS deferred. Fixed.
o New routine "clear_resulttable()" is called if there is no local INI
and a packet is closed. Previously, hit counters for custom
conferences would not respresent the correct counts (counts would
not be cleared for the next packet).
o Index display showed message number with some trailing garbage
sometimes. This is fixed.
o No QWK Entry code started.
o Open by association started (specifying a packet as a command-line
o The spacebar now really does work as in MR/2 classic ... it works
like the page-down key until the end of a message is displayed, then
like the NEXT key.
o When editing the message header, the F10 key now works as it does
in MR/2 classic. That is, it works as the "accept" key. I'll leave
the F11 key also as an "accept" key for those that got used to it.
o Write New: The selected conference would be erased on the "after"
header edit. It would be reset to "000". Fixed.
o The E editor was demonstrating some very unusual behaviour. When
replying, parts of the message would be hidden and unavailable for
editing. Yet, they *were* there! There would be no vertical scroll
bars displayed, and the horizontal was only in one (the wrong)
direction. This ended up having something to do with the program
control value I was setting. EPM seemed to work OK, as did text mode
edit sessions, but E just croaked. This *seems* to be fixed.
o Also, the $ and ! specifiers for DOS and FullScreen sessions added
earlier can now be combined in the form $! for both packers and
your editor. IE, you can force a DOS session to full-screen.
o Tagline stealer had a problem with certain characters (while editing
the tagline-to-save) invoked message functions (Reply, for example).
This has been fixed ... I need to review all my dialog boxes for the
same types of problems.
o Sizable message reading screen. It has some painting problems when
the screen is resized, but once the size is remembered it works
pretty well. You can also size the Conference selection dialog.
MR/2 PM now remembers the size of these screens in addition to the
o The possibility of the message listbox getting the focus has been
eliminated (I think? :). When this happened, keys would cease to
function as they would normally (X would not exit, F would not
Changes included in v0.99b
o MR2PM.INI, the file that holds window position data now contains a
version number embedded within. Any old file found (w/o a version
level recorded) will be erased. This is necessary due to the
massive changes made to the way positions are recorded. Otherwise,
windows end up painting off the screen. You'll have to position
windows to desired spots once more.
o Internal editor is now available and functional. Set the
Editor=INTERNAL. The "Set Color" option does nothing yet. Also,
"Set font" merely toggles between mono and ps fonts. There's no
provision for changing the file name or importing/exporting text.
All this will come with time ...
o Sizable windows are started. Size and position of several windows are
saved and recalled. In particular, the message viewing screen and
conference selection screen are sizeable. There's some tricky code
behind these screens to minimize flashing and contorting; let me know
if you see anything strange.
o No Qwk (entry of message w/o a packet) is now functional.
o I added a command line parameter "/defaultpos" or just "/d" to suppress
the mr2pm.ini file access. This mode uses default window sizes and
positions. ... until I get all the kinks out, this is a safeguard.
o Welcome screen now displays in mono font. Looks OK, unless ANSI
codes are present 🙁
o Merged most of MR/2 v1.51 features into this EXE. The list of
pertainent features follows (in latest-first order):
o RIME routed messages are now recognized as having a "header area" at
the top of the message. If the message is "split" due to length,
the header area should be automically pasted into the top
of each part.
o FILE_ID.DIZ files were crossed between classic and PM. Fixed.
o OK, I linked in HPFS longname support and modified some code to
retrieve and handle long file names. The packet select screen
now shows TE/2-renamed files like "pc-ohio.qwk;1". This will need
some testing and polish, but it works. FileSpec in MR2.INI should
be changed to "*.q*" in order to see these files.
o Ooops. I couldn't find a PKUnzip that would work with long names.
Even the older OS/2 version puked. This'll definitely be a problem
with other DOS based archivers. So, I added a little diddy to
unqwk.cmd that, if a long name is detected, will copy the selected
file into the tmp$$ directory as MR2$TMP.QWK and unpack this. It
then deletes the "temporary" QWK packet. Works great with even
the DOS PKUnzip now!
If you want to use TE/2 on a HPFS system and unpack the "BBS.QWK;1"
type names with a DOS or PK* product, you *must* set your unzipper
o An MR/2 INI file other than MR2.INI may be specified via command line
parameter. Use "MR2 /IMR2_ALT.INI" to use a file named MR2_ALT.INI as
the global MR/2 INI file. I'm hoping that this helps in allowing
multiple instances of MR/2 to be open on the desktop. Needs more
testing and experimentation ... Opening two different MR/2 seesion
o Welcome and Goodbye screen now list on the Bulletins select menu.
You can view these, unobstructed and at length, any time you choose.
o Minor change to the parsing of the @[email protected]
variable. Removed any
@fidonet suffix that exists in the origin line.
o Added code to trim off nulls at end of any message. Was trimming spaces,
but Internet messages sometimes had nulls. Messes up the reply file
editing. Also, if any embedded nulls are found, these *aren't* written
to the reply file OR save file.
o Processing for IDATE improved a little. I saw some DATE: lines that
started with weekday names like "Sun, ".
o New INI parameter - ReplyStripTagline defaulting to YES. Set it to NO
if you want to use SmartQuoting (which strips the original messages
tagline) but still want the tag quoted.
o QuoteStyle now has an optional parameter, which is ON by default.
If you specify TagStyle=PCBoard,Autosense, you're saying that quote
style can use hi-end ASCII chars, but if it's a Fidonet reply,
change to Fidonet mode. I'm not sure if I should include Internet
messages as Fido-typed tags ... I probably should. I'll research.
Without the "Autosense" keyword, tag style will adhere strictly to
what's been specified.
o Added new Template file sections: SaveHeader and PrintHeader. Lets
you define the header for messages when printed or saved. If these
sections don't exist, the old default header is used.
o Added more variables to aid in the support of the new header sections:
MsgRefNbr, MsgNumber, MsgStatus. In addition, added some more variables
to aid in formatting sections. @COL:[email protected]
sets the next column to 45.
says to right justify the next variable referenced at col 72.
says to center the next variable referenced over column 40.
The @[email protected]
and @[email protected]
variables can be used w/o column specs to
right justify at "wrap column" or center the entire line between wrap
column and 1.
Negative @[email protected]
specs may be supplied. This will delete the specified
number of characters before the variable. For example, @[email protected]
would change 07:54:30 GMT to just 07:54:30. Messes up, tho, if MSGDATE
ends up getting substituted for IDATE (no IDATE is found).
See example.tf, at the end. There's a section `unused` with some
o The template file now supports comment lines. Simply start the line
(very first columns) with ";;" and the line is ignored.
o While viewing any message, you can press "~" to rewrap it. This is
useful only in USENET (Internet) conferences where sometimes a message
gets posted without linefeeds. MR/2 would display it on a single line,
but only give you access to the first 160 characters. This rewrapping
is quite temporary (if you "go back" later to view the same message,
you'll have to rewrap it again), and totally manual; performed by user
keypress only. I may INI-ize an automated/detection scheme later.
o Added a bunch of code to better detect message display lines that are
"quotes" from previous messages. This is not configurable at this time.
If I did too much, yell and I'll make this optional. With all the
messages I looked at, quoting highlights were right 99% of the time.
o New QuoteBody option - Paragraph. If you specify something like:
then you'll get a quotes like:
MNYes- DOS 6 upgrade is... (lines chopped for brevity)
number of files that...
MNAnd then after your DOS...
the manual of files you...
release the whole thing...
you can do the same thing with "%i>", and secondary lines
get just " >". Use the "|" (shifted backslash) and Fidonet
sysops may not yell at you 🙂 (it's not hi-end ASCII).
Bummer! I just saw someone (a registered MR/2 user using a DOS
package, hmmmph!) quote with a technique that this doesn't yet
handle :(. Just a minor nit, maybe I'll add something later to do
this (YOU CAN'T DO THIS WITH MR/2):
MNYes- DOS 6 upgrade is... (lines chopped for brevity)
number of files that...
o Modified the logic to pick out the quoting initials to better parse
Internet "from" fields. Still needs some other strange-character
detection added ([email protected]
should reduce to nk>).
o Fixed a bug where internet from fields that were filled to 25 characters
resulted in your own last initial being inserted as the senders second
initial ([email protected]
to Nick Knight, reply would
be quoted MK>) This *was* fixed in v1.45 but not documented.
o I added some things. First SmartWrapping and SmartQuoting have three
levels: No, Yes and Full. Full is aggressive, rewrapping all
non-quoted text to the defined wrap column (This is the old "YES").
If set to Yes (the "new" option), wrapping occurs ONLY after a line
feed has been inserted by MR/2 (an overlength line was detected).
The defaults are "YES" ... we'll see if this works any better.
Limited testing, but you *can* now shut these off w/o crashing!
o Also, add an "~" to the end of any line (before the linefeed) and
MR/2 will strip out the "~" and keep the return that follows intact.
This is for stubborn wrapping problems. Just in case 🙂
o If the quoting initials ended up longer than 9 characters (FROM name
had no spaces), the string was not properly terminated. This resulted
in garbage in the initials and in one reported case, a crash. This
would occur most often in internet conferences.
o New template sections are definable: NewInternet and NewNetmail
for creating new messages in these private-mail conferences.
o When editing a message header and the conference is the Internet or
Netmail defined conference, the "private" flag is set to YES.
o New template section: `RIME` can be defined for use when replying
to a message in private mode. If a reply is private, and the
source message is determined to be from a RIME source (Postlink
origin is last line of message), then this section is used in
generating the reply. This allows for private, routed mail.
Not sure what to do about "new" private, routed messages.
o New variables: @[email protected]
and @[email protected]
for use in the RIME
section for "routing" private messages. Will result in blanks unless
replying to a message with a Postlink origin line.
o New Variables:
and @[email protected]
, defined above.
for the MR/2 version.
is replaced by the registered serial number
(empty if not registered).
is replaced by your user names as found in the QWK
is replaced with the Internet "Date:" spec, or the
the same results as @[email protected]
if a date string is not
o New template section: `Forward`. If this section is declared, it is
used as the template "prefix" for forwarded messages. NOTE: $Body is
not required, this section is inserted as a whole. If not declared,
the old MR/2 default forward prefix is used.
o See EXAMPLE.TF for examples of all new section capabilities. My name
and email addresses are plastered all through here. You'll want to,
of course, change these to your own 🙂
o When replying into the Internet mail conference, the @[email protected]
variable will better represent a true Internet address. If the
Reply-To: line isn't present, MR/2 then looks for a "From:" line and
attempts to parse out an address. If no From: line is detected,
MR/2 now looks to the last line of the message. If the sender has
included his address inside of parenthesis, then this is used as the
o Modified msg2rep.cmd so that if archiver.id file isn't found, it
defaults to pkzip (configurable). If using no packet entry, no
unarchiver was called, so no archiver.id is created. We need to
be able to specify a packet as a default.
o If a local INI specified a value for Internet and/or Netmail, it
was not cleared when the packet was exitted. If the next packet
opened did not reset these values (or did not have a local INI), then
some erroneous detection of network mail would result. Fixed.
o I modified the "origin" line finding logic to recognize more common
reader/network tearline styles. For instance, MR/2's own TwoLine
style tagline is now recognized as the beginning of the origin section
(and end of the BODY section).
o Started coding of a REXX script to handle detection of the archiver
used to pack the mail packet. A code is returned that will be used to
branch to the correct command for unpacking. To me, this is the ideal
solution, as it is forever extensible. I've got a scheme for a packer
script (for replies) that will match the unpacker used. I'm new to
REXX coding (this was the perfect excuse to get my feet wet :), so
if anyone wants to make improvements and/or enhancements, I'll welcome
them. (file is named Unqwk.cmd)
o Create msg2rep.cmd - a REXX script for packing replies into a .rep
file based on the method used to unpack the original packet. The source
packet *must* have been unpacked with unqwk.cmd (or, at least, the file
"archiver.id" must exist and identify the correct packer to use). This
script opens up "archiver.id" and extracts the id number. Based on that
number, a branch is made to the correct packet command.
NOTE: You may have to modify these files a tad IF your archivers
are not in your "PATH" environment variable.
NOTE: These command are useful if you use multiple packet sources
(BBS's) that use different compression techniques. If you can get
by with a single zipper/unzipper command, the "old" way is OK, and
in fact, still more efficient. These new files simply provide
additional flexibility for those that frequent a variety of BBS's and
need this functionality.
INSTALLATION: Modify your MR2.INI file to declare:
the default .cmd files depend on all archivers being in your "path".
If not, you may modify the path = '' statement at the top of each
file to reflect the correct path, or modify each zipper command
separately to reflect each's valid path.
o The prompt "Work area has an open packet" has been enhanced. You may
still see this prompt. However, if the work directory is found to
contain replies, the prompt will read "Open packet with REPLIES found".
o If an error occurs when unpacking the packet, you will now remain
inside MR/2 to select a new packet, or whatever.
o IF an error occurs while packing replies, the work directory is *not*
purged. Previously, any error while spawning the packer still let the
files be deleted. What happens now is, after the command error is
reported, you're prompted that an open packet with replies exists. The
correct course of action is to go back in the packet (continue working
with the open packet) fast exit with ALT-X and correct the zipper
o Cleaned up and tested UNQWK.CMD and MSG2REP.CMD. Made sure error codes
were properly returned to MR/2. Seems to work well with the new error
handling described above.
o Added new variable @[email protected]
that resolves to the Internet message
subject line (often different than the QWK "subject" field).
I hope there's a limit to the size of these things ... I only
accomodate "realistic" lengths. We'll see.
o Ooops. New template section logic didn't accomodate new messages
created w/o replying. The template file can now define a section for
o The INI parameter SplitLongMessages has been enhanced. YES/NO still
function in the old way; YES will cause messages to be split at 92
lines (90 lines of message, 2 lines for the footer). You
can now, however, place a number here as an option. This sets
splitting to YES, but modifies the line count cutoff to be the specified
value (instead of 92). This value *must* be greater than or equal
to 10 (I've been told of a BBS system that requires no more than 16
lines , so I figure 10 will be a "safe" minimum). I would
suggest using a reasonable number if you need to change the default
o New INI parameters V0 through V9 allow you to set user-defined text
strings as template variables. Uses of the strings @[email protected] through @[email protected]
in the tenplate file will be replced with the corresponding defined
These variables can contain any other variables, including other "V"
variables. This allows for a template to be defined with an
attribution line of @[email protected], for example, and this line can be changed
for each BBS by defining different values to V0 in the BBSs local
INI file. The variable replacement is recursive, so any number of
replacemnet levels is possible. It's also possible to confuse the
system by circularly defining variables. My rule: keep it where
For example, if you add a line to MR2.INI that says "V0=1:157/200"
and your template file starts "...writing from Fidonet address @[email protected]",
the fidonet node address will be placed in the reply.
o New INI parameters "INTERNET" and "NETMAIL". Use these variables to
declare which conferences, if any, handle Internet mail and Fidonet
netmail, respectively. For example, PC-Ohio has Internet mail in
conference 5 and Fidonet netmail in conference 6. My PC-OHIO.INI
Nerd' Nook has Netmail in conference in 139 and no Internet capabilities.
My NerdNook.INI file has the lines:
The "-1" tells MR/2 that there is no Internet support, and makes sure
that the Internet section template is not referenced.
o New variables @[email protected] and @[email protected] The INTERNET variable will
be replaced with the "Reply-to:" address found in Internet mail. The
target address will be stripped of extra verbage and should represent
a correct and "ready-to-go" internet address. The FIDONET variable
will be replaced with the full Fidonet address found in the origin
line of the current message. If either one of these variable can
not be resolved, then an empty string is substituted.
These variables are meant to be used for personal mail addressing
using template "sections". See next blurb.
o Sections in the template file `Internet` and `Netmail`. You may now
allocate "sections" within the template file. Sections are denoted
and named by a string between "accent" characters (`). The first
template file section has no name and will be refered to as the
"default" section. A section ends at the next section name string,
or at the end of the file.
When replying to messages targetted for a conference declared to
be the INTERNET or NETMAIL conferences, MR/2 will switch template
sections to the corresponding section. If ever a section is not found
(by name matching), the default section is used.
This allows for Fidonet netmail and Internet mail to have templates
that correctly set up destination addressing. See the file Example.tf
for examples of sections.
o Mods to reply creation ... removed the beginning CR/LF when creating
the reply file. Made changes to the way the template file handled
CR/LF spacing. Template file's allignment matches reply files
better now (line spacing/blank lines).
o When replying and the FROM user name is an Internet made-up name with
periods imbedded, MR/2 nulls-out the quoting initials. The quoted text
is simply marked with whatever symbol is defined in the INI, usually
a ">" (no initials preceed the ">").
o Oh boy. I modified the Save Reply logic of my QWK class. This is
dangerous, simply because it changes the way replies are saved. I'll
test it thoroughly before letting it out. *Please* report any problems
to me quickly.
The change comes when splitting messages (it may effect more, my hope
is that it doesn't :). IF you're in sending Internet mail or Netmail,
the message "header" will be copied to each split section. In most
cases, this will be the correct function. There may be cases where
it isn't. Yell at me and I'll make it configurable. In other words,
netmail or internet mail that's split will be addressed properly for
all "parts" if addressing is done on the first line(s) of the message.
o When replying into the Fidonet netmail conference, the source message
is first checked to see if the first line starts "From:". If so, and
what follows appears to be a Fidonet node designation (it has a ":" and
a "/"), then this is used as the value of the FIDONET variable.
If not found, the origin line is found. In netmail messages (the ones
I receive at least), there is no origin line, just a "From:" identifier
on the very first line of the message.
o Taglines now are filtered for variables (e.g., @[email protected]).
o Took template file checking one step further - if file name is
empty, processing doesn't even start.
o The initial MR2.INI file now specifies that the INTERNAL editor now
be used as the default. The initial INI editing is still performed
inside the E editor.
o New INI parameter: "TemplateFile". This is another one of those
features that is merely a starting place and has lots of future
expansion possibilities. Place a file name here that defines a
template for all message replies. The reply will created using this
file as a guide BEFORE you edit it. This allows for any necessary
cleanup. The "template" file I used for testing looked like this
(note that the variables used will be documented below):
Subject: @[email protected]
In a message dated @[email protected], @[email protected] said to @[email protected]:
From @[email protected] reading @[email protected] (@[email protected]) on @[email protected], to @[email protected]
Subject: @[email protected]
Internet: [email protected]
To First: @[email protected]
To Last: @[email protected]
YYMMDD: @[email protected]
Date: @[email protected]
From First: @[email protected]
From Last: @[email protected]
Msg Date: @[email protected]
Msg Time: @[email protected]
Day: @[email protected]
Julian: @[email protected]
Time: @[email protected]
Time 24: @[email protected]
AM/PM: @[email protected]
Upper: @[email protected]@[email protected] @[email protected]@[email protected]
Lower: @[email protected]@[email protected] @[email protected]@[email protected]
Mixed: @[email protected]@[email protected] -> @[email protected]@[email protected]
The quoted version of the original message is inserted at the $BODY
marker, which is required. NOTE that this is not an appropriate
template file for use within internationally echoed conferences.
It's offered here merely as an example.
The section before the $BODY line allows for an "attribution"
line or section. The area below the $BODY marker works as a
signoff or signature section.
AGAIN, this feature is under development and may be changed in the
next couple of versions. My idea is to add more blocks to this file.
For example, a definition for saved message headers, forwarded
header definition, etc.,. I've got plenty of ideas.
The reply file generated by my test template file looked like:
Subject: NEW ZOO
In a message dated 03/06/93, DAN HANSON said to ALL:
DH>I saw this in Time Magazine. The New York Bronx Zoo has been
DH>renamed to the International Wildlife Conservation Park. In
From DAN HANSON reading Main Board (0) on PC-OHIO, to ALL
Subject: NEW ZOO
Internet: [email protected]
To First: ALL
To Last: ALL
From First: DAN
From Last: HANSON
Msg Date: 03-06-93
Msg Time: 14:21
Time 24: 15:08
Upper: NEW ZOO SATURDAY
Lower: new zoo saturday
Mixed: Dan Hanson -> All
o Variables are available for use in the template file. They are
currently only used by the reply file generator. I'll add the
capability to other areas as I think of them.
The following variables have been provided:
The literals UPPER, LOWER and MIX are not actual variables, but
modifiers. They will convert the case of the NEXT variable
replacement to either all upper, all lower or mixed case, respectively.
Mixed case basically lower cases all letters except the first letter
of each word. See the example above for more detail.
o GREATER CHICAGO Online BBS is now offering a service called the
"OS/2 Shareware Author Support Program". They are willing to handle
Visa/Mastercard charges for shareware authors. Starting immediately,
MR/2 may be registered by "charging" it! You can register online by
calling Greater Chicago Online BBS at (708) 895-4042. Alternatively,
you can provide your charge card information to me directly on the
MR/2 registration form provided (register.doc). There is a $2.00
handling fee associated with all charged registrations, making the
total charged registration cost $22.00 US for domestic orders.
Shareware authors may get more information on the OS/2 Shareware
Author Support Program by calling the GREATER CHICAGO Online BBS at
the number above (leave a note to the sysop) or by Compuserve mail
at 70404,3277. Fidonet netmail can be sent to Bill Cook at 1:115/895.