home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
NETMAIL
/
MR2_198.ZIP
/
READ.ME
< prev
next >
Wrap
Text File
|
1994-02-13
|
134KB
|
2,646 lines
MR/2 - A QWK Compatible Mail Reader for OS/2. 02/14/94
Copyright (c) 1994, 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 $25 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.
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)
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.
---------------------------------------------------
ALSO READ: MR2.DOC (v1.0) and MR2.HST (v1.0->v1.4)
---------------------------------------------------
Changes included in v1.98x
--------------------------
o Manual work. It's growing fast. Enclosed is a new "preliminary"
MR2.DOC file. The old manual was 22 pages, this one is 70 or so
and there's still plenty to add. Some sections are incomplete.
No, I haven't checked for spelling errors. I'm open for comments,
but don't dig too deeply, please.
o PurgeAfterDays and PurgeAfterCount now actually function. Here's
how it works: When you close a packet, MR/2 has always "packed"
your InBasket, if any. This process simply involved passing through
the InBasket and removing "killed" message by writing over them with
active ones. When the ReplyLog was added, the same process was
performed. Since the reply log grows with each reply, I added code
to control the number of messages kept, by maximum age or by maximum
count, or by both.
If PurgeAfterDays is not specified (or set to zero), no age
check is performed on replylog messages. Otherwise ...
The Reply log is first packed the old way with a slight additional
check. If a message is found to be active and older that the
cut-off date (older that PurgeAfterDays old), then the message is
marked as killed. The normal removal process follows after this
check. If a message is killed and it has a "source" or "original"
message after it (these have special MR/2-internal markings), this
is also killed. Once this pass has been completed, all manually
killed and "old" message have been removed, along with any "source"
messages recorded with them. A count of active messages is returned
to the packing process.
If PuregAfterCount is not specified, or set to zero, no maximum
message checking is performed. Otherwise ...
Now, MR/2 compares the active message count to the specified maximum
(PurgeAfterCount). If found to be greater, then the number of
messages to delete is calculated. A new pass is made through the
folder, and the oldest messages are marked and deleted until the
number of messages to delete has been reached. Again, if a message
is removed, so is its source/original message, if one exists.
I will add a way to mark a reply as "permanent". This will keep
the packing routines from removing it. A permanent message will
not be deleted until you manually kill it. As an additional
feature, I want to add an "unkill" key. I've killed a couple of
replylog messages that I didn't want to, and saving them was a
real pain. And I even know how! I wouldn't expect anyone else to
be able to figure this out.
o Double confirmation prompt on exiting the editor w/out saving. I
lost my last long-winded reply to this gotcha. If you would press
ESCAPE too many times, too fast, while in the internal editor, you
would often end up losing any/all changes. This was because ESCAPE
is seen as a request to exit the editor, and the "would you like to
save" question, when ESCAPE is pressed, says "No". Two escapes and
you've lost any changes. I've done this more than once by accident.
It angered me; I apologize for causing anyone else this frustration.
Now, if you escape out of the editor and changes have been made, it
asks you if you wish to save them. If you press ESCAPE, it askes if
you're sure, and ESCAPE says "no, I'm not sure" and saves your work.
You must press YES or press ENTER to abort changes.
o Cutting from a DOS windowed session and pasting to MR/2, using
ALT-* fails. Previous versions would actually crash, leaving the
clipboard open and locking up any program that tried to access it
afterwards. I'm still trying to find out why this fails, but in
the meantime, I removed the crashing, and the subsequent lockups.
o Packing the folders (Inbasket, ReplyLog). A informative popup
window now is displayed while this process performs it's work.
o Added a "Make Permanent" key for use within the Reply Log.
Pressing "!" will mark the Reply Log message as a "keeper" and
the Folder packing routine will no automatically delete this
message, nomatter how old it is or how many messages over the
maximum exist.
o Added an "UnKill" keystroke. Pressing "U" will remove the "Killed"
marking from any message.
o New INI parameter - BackdropMaxLines. This controls the maximum
number of lines from the WELCOME and GOODBYE screens will be flashed
to the screen. Some BBS's have ANSI Welcome screens that are
multiple pages long. MR/2 would proceed to flash these messages
completely at various times. Set BackdropMaxLines to 25, for
example, to flash only the first screen. Setting this parameter to
zero will suppress the Welcome screen altogether. The default is
set to -1, which will flash any and all lines of the file to the
screen.
o I think I fixed the problem with crashing when trying to finish
out of MR/2 *before* the background searching was finished. This
would not happen if all virtual conferences had been created but,
if you would open a packet by mistake and try to quickly get out
of it, crash! This was because I was deleting all the work files
before the background process was told to stop ... and it was
trying to read messages.dat.
o New INI parameters: F2 through F10. Used to attach command-line
actions to function keys.
Changes included in v1.97x
--------------------------
o I forgot to list the INI options SavePointerFiles, PurgeAfterDays
and PurgeAfterCount in the MR2INI.ORG file. These are now listed.
More INI's, as I try to clean up some smaller user problems and
requests:
o "DoorName" may now be used to identify the target BBS door "user
name" to which to address ADD/DROP messages. This not only aids
in the case where a BBS door provides no DOOR.ID file, but also
when trying to perform ADD/DROP functions from no-packet entry or
reply packet maintenance. For example, DoorName=RoseMail will
address all ADD/DROP messages TO: RoseMail.
o "CursorSize" may now be specified for the normal internal editor
cursor. Many users complained that, in certain video modes
(large number of lines/screen), and under some setups, the cursor
could not be seen. By default, MR/2's normal editor cursor is
1 scanline high (maybe two?). When lines/screen is 34 or more,
MR/2 changes the cursor to 6 or 7 scanlines. This was reported to
still not be visable sometimes. So, You may now specify the number
of scanlines for a normal cursor - from 1 to 13. MR/2's "overtype"
cursor is 13 (14?) scanlines tall and is not configurable at this time.
Example: CursorSize = 10
o I did manage to finalize the thesaurus data file. The "officially
released" thesaurus wordbase will consist of 9242 "key" words
with a total of 70,101 synonyms. The technique I'm using makes it
easy to find synonyms, even if the word is not found to be a key.
o There was a problem with using a MessageOrder of anything BUT
subject. A variable remained uninitialized in all cases except
by subject, and this caused crashing as soon as a conference was
selected and the message index sort was started. Fixed.
o Selection lists had a bug that wouldn't allow you to select the
LAST entry (if the "page" was full). Clicking on the bottom
line of the box did nothing (it's supposed to page down), and
clicking on the slot for the last entry on the page paged-down.
Fixed.
o INI file now includes a default virtual conference. This will
help new users "discover" this key feature much quicker.
o Manual has actually been worked on! No, it's not in here.
It's not in *that* great a shape yet, but it's progressing :)
Changes included in v1.96x
--------------------------
Still lots left to do, I'll try to get a summary list together
and post it next time. I'm getting close, tho. Bug reports seem
to be light, which makes me happy. I wanted to hit Feb 1st, but
I'm not sure now. If I can get a couple of good days in I can call
it soup. It will be *very* soon, the manual being the last major
"feature" to address.
o New and Improved help screens. Added definitions for dozens of
previously-unlisted keystrokes and functions. HELPS include 20
or so completely *new* screens, too, covering many of the newer
enhancements.
NOTE that mr2.hlp is a simple editor file with [TAG] markers to tell
me where a help section starts. The section ends at the next tag
marker. If you don't like my HELP text, you *can* create your own
text (modify my descriptions). A section must fit on the screen,
tho, with a char/line or two reserved as border. Hey, if you end up
with something you think is better, send it to me and if I agree,
I'll use it :)
I start on the manual next - actually already have, but now I have
to be serious!
o Updated MR2INI.ORG with a section that describes the newest
INI variables.
o Tab expansion in the message viewer. I default this to 4
characters, but allow you to toggle this value via ALT-TAB.
Sequence is 4,8,0,2 where "0" means show the tab character and
don't expand.
o I discovered that searching while in the INBASKET or the REPLYLOG
didn't work. Searching within an INBASKET has never worked.
Fixed this (modified QWK.Getfh()).
o By request (several), the spacebar may now be used as an alternate
to ENTER for selecting a conference w/mail to read. This was a
tough call, as the ' ' is a valid typing character, and I can see
some folks trying to do a conference name prefix jump to the "main
board" conference by typing "Main ". Where this would previously
work, and it still *might*, the spacebar press will cause the
highlighted conference to now be selected. Open for comments, I
think this will be OK, tho.
o It was pointed out to me that many keyboards don't have an F11 key,
and that's what I chose as the "mark" key on selection list. (At
this time, "marking" within a list only has a purpose on the packet
selection screen, for merging QWK packets.) After some thinking and
experimentation, I made the "*" key a synonym for F11 on pick lists.
It was suggested to use + and - to mark, unmark, but the minus or
dash often comes up as part of conference and packet names. So,
"jump to prefix" would be affected. The "*" key will toggle the
mark on and off. This key is easily selected w/o shifting by using
the one on the numeric keypad (eeek! Assuming you have one :).
o UNQWK.CMD bug - my first user "fix" to this routine! Thank you
Wolfgang von Thuelen for pointing this out. In the check for long
file names, I ignored the case where file names were exactly 12
characters long BUT were still non-FAT names (e.g., "mwcst.qwk;11").
The first 'if' statement was changed from "if flongnames < 0" to "if
flongnames <= 0".
o More thesaurus work - mostly minor cosmetics. I've almost got
what I want, although I know the ALT-S and ALT-L are buugy now.
I'm letting it out with these bugs, as it's still functional and
I doubt many are using this feature (yet?). Keys you may press
with descriptions are placed above editor window.
Changes included in v1.95x
--------------------------
I'm calling this v1.95x, as I consider myself "close" to what I wanted
in a v2.0 release. I do have a few features to add; although not many.
Believe me, I've got plenty of ideas for v2.01 and beyond. Existing
users know that this has never been a static product :). I've created
quite a few monsters here ... huge new features that are going to take
some "shaking out" to get them working perfectly.
o Clipboard: When doing an "append" (ALT-GREY-= or ALT-GREYENTER)
to an empty clipboard, MR/2 would crash. The first text copied to
the clipboard had to be done with the ALT-+ command, then appending
would work. Fixed. You can now append to an empty clipboard.
o Reply log messages can now be "Copied" and/or "Replied to". The
message is then copied into the reply conference as to be "sent
again".
o INI parsing problem prevented FolderPath from being recognized.
(Discovered when relinking and testing MR/2 PM).
o Mouse could not be used to select the very first entry in a selection
list. This was broken recently - now fixed.
o Template Sections labeled as "New" using routing lines: I had
previously noted in this document AND personally corresponded
electronically with a few of you about this. Specifically, *before*
this version, the $Body line was needed *before* the routing line,
as for "new" messages, only the "signature" sections was placed in
the reply file. THIS HAS ALL BEEN CHANGED. The 'New' Sections now
work the way you would expect; the entire section is placed in the
reply file, and the $Body (while still necessary) should be placed
where you would normally start your reply. In other words, these
sections should be setup the way you would expect from using the
"normal" sections as an example.
o Packet selection screen: You may now MARK two or more packets on
this screen and actually MERGE them together as one QWK packet.
Use F11 to mark the packets to combine, then ALT-M (Merge) to
merge them together. This process calls upon my new and improved
MQWK.CMD REXX command file to do most of the work. This makes the
process configurable/extendable, as long as you want to tinker with
REXX source code.
Multiple/automatic archiver detection is not supported at this time;
the archiver name is hard-coded in the script to be "pkunzip -n"
and the zipper is 'pkzip'. Modify these in MQWK.CMD if necessary.
When you press ALT-M, and if 2 or more packets are marked, MR/2 will
prompt for a target packet name. If a name is supplied, all marked
QWK packets will be merged into one with this name. If no name is
supplied, MR/2 simply combines the packets in the TMP$$ work
directory, where they can be read as a combined packet. NOTE,
however, that bookmarks will be lost, as there will be no "target"
packet to record them to. I suggest always allowing MR/2 to
repack the combined QWK packet.
FURTHER NOTE: I've now modified the script so that there is very
little reason *not* to repack the combined messages into a new QWK
file. If a name is supplied as a target, MR/2 combines all marked
packets and jumps right into "read" mode. AT THE SAME TIME, I spawn
another session, in the background, to archive the combined packet.
This becomes invisible to you and should not impede your normal
reading operations. If the combined packet does not show up on the
packet selection screen, you may reference MQWK.LOG for possible
error messages. All output from the archiving process is redirected
to this file.
Index files (*.ndx) are discarded by the merge process ... MR/2 will
create index files when it opens the combined packet.
I've tested this procedure with QMail and CamMail doors. I expect
that other doors may created cases that call for a little adjusting.
Keep me posted. ALSO, no error checking is performed to assure that
all the packets you are merging together are of the same BBS. THIS
IS IMPORTANT, as merging dissimilar packets WILL NOT WORK CORRECTLY.
ALSO NOTE that this takes alot of free disk space. A set of QWK
packets totaling 2MB might require 4-5 MB additional free disk space
to function.
o INTERNAL: Messages.dat is now opened in READ-ONLY mode. This allows
the file to be accessed in a background task for archiving.
o INTERNAL: Modifications to zDList, zDLSelect and zDirSelect (linked
list and selection from list(s) routines) to further support "marking"
of members and retrieval of "marked" status in various forms.
o I received a packet via CIS email from the Channel1 BBS. This
board has been a great logic-breaker for me ... they ought to quit
growing! Anyway, their control.dat files finally made it over 64k,
which has always been an MR/2 limitation (due to an initial design
flaw on my part). This is now fixed so that there is *no* maximum
control.dat file size limitation. I now handle/parse this file one
line at a time w/o loading it all into memory up front. Channel1
packets once again work!
o HideConferences can now be specified multiple times within a set
of INI files. The hidden conferences list is now cumulative where
before only the last HideConference line was effective.
o I expanded the packet selection screen even more and added columns
for Per (Personal) and Rep (Replied-to) message counts. I know that
I'm constantly trying to remember which packet had all the personals
to me in it, so this helps me out. The reply count may also help
tell you something about a particular packet.
o Modified ZTC's library routine system(). Command line was deemed
invalid when > 128 characters. OS/2 allows much more; I changed
the max to 256. This will allow more QWK packets to be merged
together (it broke today at 4 fully qualified packet names).
o Changes to the way the built-in thesaurus functions. I've still
got some fancy things to do, but it's getting closer. Invoking
the thesaurus for a word that was not a "key" in the word base
previously did nothing; it just ignored you. Now, MR/2 posts a
message and jumps into a sequential "match" search. When you
request a further search of the database using ALT-S, a similar
message is posted. Both messages mention that you can now press
ESCAPE to hault the search. Also, when a search completes with
out finding any new words, MR/2 keeps the previous word list on
the screen. Before, you would be placed out of the thesaurus.
Changes included in v1.72x
--------------------------
o Made the default starting sequence for the reply log 1. Was set
at 100 for testing. If you already have replies in your log,
the only way to reset the sequence is to delete (or rename) the
log.
o If your PacketPath did not contain a drive specification (for
example "\dl\qwk\"), then the drive free space literal didn't
work.
o Bookmarks and other EA's would sometimes not be recorded. This
also had to do with the packet path being "fully qualified".
It should work both ways now.
o Total message counts were being padded by 25. Fixed.
o Created the first cut of mqwk.cmd ... short for mergeqwk.cmd.
This REXX script allows you to create a new QWK packet from
two or more existing QWK packets. It merges the packet files
(except that it throws out the indices, MR/2 doesn't really need
them :) and repacks as if all the messages came in the same
single packet. Source packets *must* be from the same BBS, tho.
o Bug when processing QWK packets w/no indices. If MR/2 was left to
build the NDX files, all NDX files would be created fine ... except
for Personal.ndx. After the first message recognized as a "personal"
message, the NDX builder changed a counter and wouldn't match
another messages as personal. Basically, only one message would
ever be recognized as being "to you" (unless your name was actually
a full 25 characters). Fixed - now all personal messages are
recorded in MR/2's version of Personal.Ndx.
o If no address book(s) exist for a session, and a user would
press F2 while in the TO field, MR/2 would crash. This was
reported by a user that was used to pressing F2 from anywhere
to get a tagline list. Many are probably used to this. Fixed.
o Ctrl-C handler would be deactivated whenever a call to a command
line utility was made. This would include archivers or file viewers
but not editors. This meant that pressing CTRL-C while viewing a
message or editing a reply (internal editor) would break right to a
command line ... no warning, no chance to save your work. Fixed.
o I added something in awhile ago and never documented it, as I still
considered it "unfinished". While viewing a messages, pressing '*'
will load that messages as displayed into the editor. The purpose
of this is to allow cutting/appending to the system clipboard. You
can, for example, find a message that contains a paragraph you'd
like to use. Press '*', mark and bound the section (F11 - F12) and
append to the clipboard (ALT-GREYENTER). Now you can go into a
reply and paste the selected text in using ALT-GREY*.
o Fixed several crashing problems with address book maintenance. These
were extremelly difficult to find, as it turns out, but I did find
them. It seems to work OK again (ALT-A, ALT-C and ALT-D).
Changes included in v1.71x
--------------------------
This is one of those "quick fix" patches ... sames notes as for 1.70.
o Oops. That was quick. I had broken the Conference= clause in
custom conferences. Only searched the first conference number in
this list. Fixed.
o OK, so I added the INI variable HideConference=. List after this
conference numbers you wish NOT to list in the conferences w/mail
list, separated by commas. For example, I suppress all the forsale
conferences I build my virtual conferences from by posting the line:
HideConferences=276,554,648,1534,1473,1460,1228,1119,1002
in my INI.
Changes included in v1.66x thru v1.70x
--------------------------------------
This one is a biggy. Again, PLEASE save your original MR2.EXE, in case
something nasty shows up in this one. Lots of changes.
PLEASE DO NOT DISTRIBUTE THIS FILE. I'd like to keep this a
strictly limitted beta.
NOTE that reply logging is in here and ACTIVE. Your INI variable will
work. Set it to YES, NO or FULL (to save originals w/replies). I will
warn you that REPLY LOGGING is still unfinished. It works, but I may
have to change some things that may require purging any existing log.
So, if you wanna try it, consider it experimental and don't count on
logged messages *always* being available.
Still to do, reply logging wise:
- if log entry is killed, kill the original (don't kill any yet :).
- allow killing of just the source/original msg (*don't* try this).
- when viewing an original, message movement is inconsistent.
(NOTE: when on a logged reply, press J to see the original).
- Reissuing the same or a modified logged reply is not functioning.
- purge logic by day / count is not in.
- no way yet to "make entry permanent" so day/count purge skips it.
- Separate reply log sort?
Thesaurus: code is also in place for simple access. That's just not
good enough for me, tho. I plan on reworking this quickly; it's a
simple matter of beefing up the user interface to offer more options.
I've got some neat ideas. Currently, ALT-T or ALT-F1 while on a word in
the internal editor invokes the thesaurus. A beep occurs if the word is
not found as a "key"; nothing else. This will change. If found, the
synonym list is displayed. To search further for words where your
source word lists as a synonym, press ALT-S (search). At any time,
pick a word and hit ENTER to replace the original word in the editor.
Pick a word and press ALT-L to "lookup" *that* word as a key. I want to
try to stack lists somewhat as you move through so you can back-pedal.
I also want to allow entry of an alternate search word. I also want to
allow insertion of the picked word in addition to replacement mode.
Maybe more.
You'll need the thesaurus database file, distributed separately. I'm
putting out a BETA dictionary for beta testers here only. PLEASE DO
NOT DISTRIBUTE. The final version should be available soon. Look for,
oh, we'll call it BETAThrs.zip at 300k. This unpacks to mr2thsrs.bin,
which goes in the directory with mr2.exe. No read.me for it, no .diz
file ... this ZIP should go nowhere. Please?
AGAIN, PLEASE DO NOT DISTRIBUTE ANYTHING FROM THIS RELEASE.
I'll have something much "safer" in a couple of days. I *do* need your
help, tho. Please report anything nasty you find quickly. Thanks!
o Well, Reply logging is coming along. I now have a seemingly-clean
method implemented for recording the replies. The ReplyLog
conference shows up in the conferences w/mail listing. It showed up
originally *before* the InBasket; I promptly moved it to the end
of the list. It doesn't stay there for various reasons. I'd like
to see it stay at the end of the list, just before active replies,
if any. There's still much to work out in general operations from
within this conferences. AND, I still don't have a mechanism for
FULL logging (i.e., capturing the original message w/the reply).
o New INI variable, PacketRefresh. This is a time period, in seconds,
that MR/2 should use as the packet list auto-refresh cycle. Set it
to between 0 and 32000 (60 is the default). When set to 0, refresh
is disabled. Setting it to low numbers (less than 5 seconds) may
not be too advantageous.
o I played around with PacketRefresh set on 5 seconds. It's usable,
although too much for my tastes. The massive screen flash drove
me crazy, so I minimized/localized it and now it isn't quite
as obnoxious.
o Hmm. I'm not sure why, but for some reason my mission tonight
tangented to supporting PC-Board escape sequences for Welcome and
Goodbye screens. I spent more time than I should have, but they
work. This wasn't even on my 2.0 list; oh well. The support is
only on the auto-display backdrops; I can easily add it into the
internal file viewer.
o Fixed a bogus error report "Erc at location 6: ####". It was
actually an error that I expected. The displaying of the
message was the actual bug. This happened when openning a second
(or subsequent) MR/2 session.
o Internal editor now has a built-in thesaurus. It features 9000+
base words with a synonym count of 60,000+ words. From within the
editor (whether actually editing a reply *or* while independently
spell-checking an existing reply with Ctrl-F2), just press Alt-T or
Alt-F1. If the word exists in the thesaurus index, a list of
synonyms are displayed. There are some more options, which I will
wait on explaining, because I *think* they're about to change :)
o PC Board codes are now supported both as backdrops (Welcome, Goodbye)
AND as file selection (e.g., viewing of bulletins). Also, in
reworking the code for this, I found that the ANSI detection
logic for backdrop displays actually read the file(s) from disk
twice. Minor, but a waste of a half-second or so anyway.
o Packet drive free space now shows on the packet select screen.
o Main Packet menu now has an entry for "Pack Replies". This is to
allow you to pack the replies that have been created to that point,
so you may upload them in a separate communications session. When
invoked, you first see a big dialog warning you of what you are
about to do, and listing out what you *shouldn't* do. You can ESCAPE
from there to abort, or press any other key to continue.
If you continue, another prompt is displayed for you to confirm your
actions. If you confirm that the replies are to be packed, MR/2
creates a REP file containing all active replies and removes these
from view. It also then adds them to the reply log, if active.
This is slightly risky ... I suggest you use this option with
caution. AND, delete existing replies once you are sure they've
been uploaded to the appropriate BBS.
o Packet selection screen now has column headings instead of the
"Avialable Packets" title. I played with many different layouts
and liked this the best.
o Lots of changes to the way MR/2 builds and maintains reply messages
and packets. All of them meant to be inivisible; I hope they stay
that way, too :). All in order to support Reply Logging ... the
tough part is keeping the original/source message around for
reference and keeping it logically attached to the reply.
o Forwarding of messages is now considered internally to be a
form of carbon-copy. Previously, forwarding one of your own
replies would misfire and modify the original. This should fix it.
o Two things that *still* don't quite work right, both regarding
silicon or carbon copies. First, I'm not happy with what happens
when you copy a multiple part message to someone else. You can't
copy it again after that. Second, copy a routed message (with
address data at the top of the message) just plain doesn't work
right. I need to look at these.
o Reply logging. Ok, I've got an experimental technique in place. It
seems to work ... time will tell. It is *nothing* like what I had
originally tried way back, like a year ago. This system works by
making a shadow files of your replies as well as the original/source
messages, if any. When the reply file is deleted, the shadows are
seen as "ready" and are merged into the Reply Log. The reply log has
been moved back to the front of the conference list, following
Personal messages and then the Inbasket, if either or both exist.
This is a complex technique, but I feel it gives me the best shot at
maintaining an accurate reply log, nomatter how the user chooses to
delete his reply packets. I should suppress most, if not all,
duplicate replies. There is one existing loophole that I know of,
and I'll either plug this or document it soon ... it has to do with
killing all your replies individually until none exist.
NOTE that this *is* a complex process. One or two (if logging is
set to FULL) files are involved, as are some extended attributes. I
wanted to depend on EA's totally, but the 64K total EA limit per
file worried me. Replies are assigned sequence numbers as created,
and logged replies are given yet another sequence number as their
"message number". I hope all of this ends up worth it :)
Whatever the case, the reply log logic is such that it does very
little to change the actual process of replying and packing replies.
So, the old problem of the reply conference ballooning to a huge
size should not come about again.
Still lots to do ... now that a reply log exists, I need some new
access routines, a purge routine and more ...
o While viewing a reply-log message ONLY, the 'J' key will allow you
to jump to the original/source messages, if one exists. Original or
source messages are logged ONLY if LogginReplies = FULL in your INI
file. These original/source messages are visible ONLY this way, but
then are available for printing, replying again ... most of the
normal messaging functions may be used.
o Message Index Screen now shows message date/time. There wasn't any
more room, so date/time is at the end of the line and appears "off
the screen". I added pan-left and pan-right capabilities to the
screen. Left and Right arrow keys are used. Mouse hotspots are
provided on the display's border box - two arrows and the phrase
"Alt-O to Sort".
o Sort Order for messages now supports Date/Time order. Previously
this was not functioning.
o Alt-O to order messages via the message index now shows date/time
as an option.
o The Reply Header Edit screen has an expanded tagline area. I moved
it to the left and squeezed it on the right - 10 more characters!
By request :).
o New INI variable: SavePointerFiles. Defaults to YES but can be set
to NO. If a BBS places a message-pointer file in its QWK packets,
then this file is saved to the MR/2 software directory when a packet
is opened. Only pointer files newer than the existing pointer file
(if any) are kept.
o New INI variable: PurgeAfterDays. This defaults to 0, which
indicates that no age-checking is to be performed on the Reply Log.
If set to a valid, positive number of days, then Reply Log messages
older than this day-count will be removed each time the log is
packed (when a packet is closed).
o New INI variable: PurgeAfterCount. This defaults to 0, which
indicates that no quantity checking is to be performed on the Reply
Log. If set to a valid, positive number, then the Reply Log
messages are counted during packing. If there are more than the
specified number in the log, then the oldest messages will be
removed until this number is reached.
o OK, I mucked up the inbasket name. Nobody saw this but me, so
no damage done.
o Negative percentages on packet select screen has been fixed. Simple
(and stupid on my part) integer math overflow. Math now uses long
values.
o Divide by zero errors on some packets where, for whatever reason,
total ends up being zero. Fixed.
Changes included in v1.65x
--------------------------
I think I'll leave at that for now ... I'll put this out for "beta"
testers before I throw any more huge code changes in and cause severe
bugs :)
o When you delete a .rep file from the packet selection screen,
the file is now copied to a ".old" file. This mimick the deleting
of an existing reply packet when opening a packet; if you respond
to "delete" the existing replies, it would copy the file to a
bbs.old name and then delete the original.
o When selecting a reply file to open, MR/2 would flash the BBS
name select screen and remove it. This flash has been removed.
o Divisor bar between packets and replies on the selection screen.
o Reworked help screens a tad. Modified screen writes to be a bit
snapier; cleaned up the often-visable cursor that shouldn't have been
and changed the color from nasty green to bold-white on blue.
o Cleaned up some bugs with manually killing replies. Sometimes the
wrong reply would get killed. This occured mostly when multiple
part replies existed in the reply conference.
o I modified the Edit Message Header screen. Instead of adding another
bar that explained tha F6 is the "pick address" function key, I modified
the way the keys work. Now, F2 is the generic "pick from list" key, and
the list to select from is dependant on the current field (the field in
which the cursor resides). Use F2 to pick TO, CONFERENCE and TAGLINE
values from pick-lists; just move into one of those fields before
pressing F2. For old timers, this may take some getting used to, but
I think it is cleaner this way.
o Conferences w/mail list now updates automatically when custom
conference building thread completes. Previously, you had to select
a conference and then exit to get the list of custom conferences to
be displayed.
o Packet list is refreshed every 60 seconds. Basically, if you're
parked on the Packet Selection screen, every 60 seconds an ALT-N is
generated as a keystroke by the keyboard event processor.
o While viewing message as search results (including custom conferences),
I add the ability to search forward for the next hit *within* the
current message. While MR/2 lines up the first match near the top
of the screen, finding subsequent matches was sometimes difficult,
particularly on long messages. Now, ALT-N is search forward within
messages. It searches from the next undisplayed line (as if you
had next-paged) forward. I tried it searching from display line 3 so
that the next hit not on line 2 would be moved to line 2, but this
was too much ... it's easy to spot (IMO) all hits on the same page.
I also played with beeping when ALT-N found nothing more ... but this
was agrevating. I think this works the best. I'll see about adding
search-backwards, too.
ALT-N was chosen because the N key is the "next search result message"
key. Walking through searches requires only finger movement on and
off the ALT key that way.
Changes included in v1.64x
--------------------------
I posted a general notice in Nerd Nook's MR/2 conference asking for a
little word-of-mouth marketing help. MR/2 doesn't get talked up
much anymore; it seems other products have captured most of the
attention. I've asked that, if given the chance, MR/2 users speak up
and voice their opinions. Thanks in advance.
o ALT-F is available in pick-lists to search for text strings. It
works in all pick lists except the Conferences w/mail ... this
has code attached to that key combo already. For example, to find
a tagline with the name "Jim" in it, press ALT-F, fill in Jim and
press ENTER.
The tagline "He's dead Jim ..." (if it's there :) will be highlighted.
The search starts from the NEXT position (it's incremental), so
HOME to the beginning to search the entire list, or ALT-F and
ENTER to search from the current "hit".
o INTERNAL: One more change to the form class. The cursor is now
set to the ORIGINAL state when a FillField call is exited. This is
as opposed to just being turned OFF. Sometimes the cursor would
not be present (of course, toggling the INSERT key twice would have
turned it back on ...).
o Reassembling of "split" replies now functions. I've tested with
messages split into 12 individual sections. When replying, MR/2
will recreate the original, unsplit message. Once you save this,
all parts are replaced with the new parts. I've tested the
modification of a 6-part reply, adding text to make it up to 12
parts and all worked well.
This *will* be controled by an INI option so you can choose
between never or always reassembling, or being asked each time.
NOTE: I *also* preserve manual page break commands (e.g., ".pg").
If you placed them in the original message to force a break,
they'll be there when the message is reassembled.
NOTE: The message parts must be found to be consistent w/in
the reply folder. If you've killed a section and subsequently
packed the replies so, say 1-5 and 7-8 are present but 6 is
missing, MR/2 will only edit the single part. Also, parts are
identified by the sequence token placed in the Subject when
MR/2 splits messages (e.g., "1/10"). If these are changed or
otherwise inconsistent, you'll only have access to individual
parts again.
o Added the ability to spell check an existing reply at any time.
Ctrl-F2 while the reply is visible. This basically puts you into
the internal editor and auto-invokes the speller. You have no
opportunity to edit the message header, but you can exit the speller
and do normal text editing if you wish. You must use F10 to save
the changes to the reply.
o You can, of course, use an external editor AND use a separate,
external spell checker of your choice on your replies. This is
simply a matter of specifying a .cmd or .bat file as your "Editor"
and calling your Editor, then call the spell checker against the
reply file right after that. What you can't do (yet :) is use my
internal editor and an external spell-checker. Coming up ...
o I had received reports for a long time, mostly from a single user
(Mike :), that the keyboard would sometimes, randomly, cease
functioning. He seemed to correspond this problem with the use of
MS Word, so I tended to blaim it on MS <g>. It seemed to never happen
to me or anyone else, at least. Well ...
With all my playing around lately, I've seen the keyboard from within
MR/2 quit responding. The mouse worked ... enough that I could move
around and exit cleanly. The command line accepted keystrokes, but,
once back in MR/2 again ... nothing! Usually I'd have to load
a new session, and *once*, that didn't even work. I put some error
checking in my kbd*() access code and find that MR/2 was failing to
receive the keyboard focus. I'm still not sure why, exactly, but I
modified the code to use the default system keyboard (instead of
using KbdOpen() to obtain a new "logical" keyboard) and all seems to
work now. Time will tell...
I've left some primitive error checking in this code. A simple line
will appear that says, for example "Erc at location 3: 449" if an
error occurs. Let's hope there aren't any more, but please report
them if they do. Thanks.
o If you would ENTER a new message (using 'E') while viewing replies,
all replies after that would appear to be scrambled. Once you
exited the replies conference and reentered, everything would be fine.
Entering a new message from the Replies conference fried the NDX file
image in memory; reselecting it loaded it again. This has been
corrected.
o Tons of changes revolving around modifying replies. Copying a reply to
another user now reassembles split parts, if any, and copies all parts
to the new target. You can do this to as many users as desired as long
as you do it all w/o exiting the copy-loop. Once you're out, due to
the way MR/2 sorts the conference messages, a split message with more
than one copy is unavailable as an original for more copies.
o New INI parameters: PreEdit and PostEdit. These function *only* when
using the internal editor; external editor users can put pre and post
process commands in a .cmd or .bat file that also invokes their editor.
The only other possibility left is for an external editor user to
be able to automatically spell check the reply when finished.
PreEdit executes the specified command with the reply file name
appended *before* entering the internal editor. This allows for
quote processors and other filters to be used.
PostEdit executes the specified command with the reply file name
appended *after* leaving the internal editor. This allows for
formatters, spellers or other filter programs to be used.
o Background screen when no Welcome screen once again changed. From
blank to MR/2's header and blue pattern backdrop.
o Modified the Pre and PostEdit processors. I thought about it, and I
was limiting the use of these to users of the internal editor.
There are places where this is helpful elsewhere so ... These
commands are invoked (if specified) before and after a reply is
edited, regardless of the editor being used. It is *still* more
efficient to use a .bat or .cmd file to do all three when using an
external editor, but the option is yours. This also allows for the
specifying of "PostEdit=INTERNAL" with the internal editor. This
forces an invocation of the spell-checker after every message
editing session.
I've tested PostEdit spell checking using the DOS ShareSpell
shareware package. Works great!
o New INI parameter, ReassembleSplits. May be set to YES, NO or
ASK ... defaults to ASK.
o New INI parameter, ShowBBSId. May be set to No, Top, Bottom or
Both. This is the new BBS-ID string that notes the packet file name,
BBS name and logical conference name. You can now control if and
where you see it.
o Fix: On Fast Exit using 'X', the INBASKET was packed and any killed
message removed. Problem was that the NDX file still referenced
those messages. Walking through the Inbasket would show garbled
text when a missing message was encountered.
I now suppress the packing of the Inbasket on fast exit ... this
makes sense anyway. This way, the Inbasket is in the exact state
it was left in upon reentry.
o Fix: Bookmarks are saved as EA's on fast exit. If you would fast
exit a packet after reading most of it, then delete the "exiting"
packet from the work directory upon reentering MR/2, your bookmarks
for that packet would be lost. I now save them before fast-exiting.
o Taglines can now be sorted (temporarily, until packet is closed and
they're reloaded from disk) by pressing ALT-O from the tagline
select screen.
o Address book is now sorted by description. I'll give you more options
at a later time.
o ALT-R in the editor, importing a file, left the cursor position
in limbo afterwards. This caused strange results; most notably
a seemingly unresponsive keyboard that would suddenly snap back
into activity. This has been corrected. Multiple imports seem
to still proceed slowly, particularly if the file(s) are large.
o Wrapping of reply lines: .pg lines are considered hard returns
as are tabs at the beginning of lines.
o Reply file now have EA's attached to them (total count).
o If percentage read flags are displayed (now the default, suppressable
via INI setting), then I also list all .REP files in the ReplyPath
at the bottom of the packet list. They will ALWAYS sort to the
bottom of the list, but will follow normal sorting rules between
.REP files (in other words, packets are sorted as a group, the
reply files are sorted as a group, and the two list are then
appended together). The last column for a reply packet shows the
number of replies contained in the file. Yes, you can open a
reply file. You end up with replies and the inbasket available,
similar to "no packet entry" mode. You can also RENAME and DELETE
.REP files as you can packets.
o When using 'E' to enter a new message from within the inbasket, you
were asked if the current message should be killed after the reply
was saved. This is no longer the case.
Changes included in v1.63x
--------------------------
o Internal editor ALT-R text import was extremely slow. I played
around with the code somewhat and turned off the screen display
while importing. I think this works much more like it ought to.
Text imports are now lightning fast compared to the old method.
o Started adding support for system clipboard access to the internal
editor. It *seems* to work fine. I can cut/copy text into the
clipboard, and I can paste it back, or paste it into E or EPM. I
can also cut from EPM/E and paste into my editor.
I was *going* to use the standard PM keystrokes where possible for
cutting and pasting. The problem is that SHIFT-DEL and SHIFT-INS
are the same as the unshifted versions in normal character mode.
I'm not really interested in switching to "raw" or "binary" keyboard
mode, so ... I used something similar to QEdit's key assignments.
ON THE NUMBER PAD, the "grey" keys ONLY, ALT- is the CUT key, ALT+
is the COPY key, ALT-* is the PASTE key. I've added two non-standard
clipboard access modes: ALT/ is the CLEAR clipboard key, and ALT=
is the APPEND to clipboard key. You can append all the text you want
to the clipboard, "building" a collection of paragraphs, for example.
THIS IS THE SYSTEM CLIPBOARD!! So, you can cut/paste to/from any
Windowed full screen session (including DOS) or any PM app that
support the clipboard.
More ways to access the clipboard to come ...
o Since it was pointed out to me that *most* PC keyboard don't have
an equal "=" key on the numeric pad, I've made the ALT-ENTER on the
numeric keypad to be the same. This is the clipboard APPEND command.
o Not only does switching session cause the blink attribute to come
back alive, so do VIO popups like TE/2 alarms windows. :(
Windowed session seem not to be affected, only full-screen sessions.
o I had reactivated the LoggingReplies switch so that I could work more
on this feature. Well, many existing INI's have this switch set to
YES; in fact, the default INI has this flag set to YES. This caused
many reports of problems. I've switched the code back so that the
INI value is ignored, but I can still switch it to YES for development.
Sorry for any inconvenience.
o Fixed the backdrop and file display function to clear the screen, even
if the file-to-display is non-existant. For example, if a Welcome
screen is not found (common during no-packet entry :), then old screens
are cleared before menus and/or conference pick lists are displayed.
o New INI parameter, AutoUnpackReplies. This defaults to NO, which means
you'll be prompted for reply-file disposition if replies are found to
exist. If set to YES, the prompt is suppressed and replies are
unpacked, as if you had said to "Keep" them.
o New INI parameter, AutoFirstReadKey. Defaults to nothing. If you set
this to, for example "Q" (e.g., "AutoFirstReadKey = Q"), then
whenever a conference is selected (that contains more than 1 message),
the quick thread index is selected as if you had pressed Q. The other
common use for this would be to specify an "I" for the master message
index. By request ... open for opinions.
o INTERNAL: Forms.cpp (FillField) - fixed the order that the cursor
is reset. I was turning it off, then resetting the normal size.
Setting the size turned it back on which often left the character
cursor visible when it should not have been. Fixed.
Changes included in v1.62x
--------------------------
o Address book maintenance would crash when modifying an address file
with comments in a certain format. Comment lines were viewed as
real lines and attempts to parse them were made. Fixed.
o With the colors I personally use, I have a black background with
search "hits" in yellow background. Yellow is a "high" color,
which requires the video "blink" bit to be off. Otherwise you
get an orange blinking highlight. My sessions always started with
search words marked in yellow. Somewhere down the pike, and often,
they'd start to be displayed in blinking orange. I saw nothing in
my code. *Finally* found it tonight ... it's OS/2! If your screen
shows yellow highlighting, you switch to the desktop, then switch
back to MR/2, blinking-orange! I fixed this so that the blink bit
is set OFF before each message is displayed ... so it's fixed for the
next message.
o Store address of current message in address book. ALT-A ("Add"?).
Works nicely ... some minor bugs that I'll have fixed up in a minute.
o Cleaned up address "stealing", address-tag selecting and address book
maintenance. I'll test if for a couple of days and let others try.
I rearranged alot of code to get things to work "properly". Now, for
instance, I won't let you add a tag that already exists (if it's a
"new" address add). Conference numbers validate but I and N are
allowed for Internet and Netmail conferences. I also ended up
patching *alot* of the @Internet@ and @Fidonet@ parsing logic. These
will even work cleaner now.
o New INI variable - PacketSort. Setting packet sort to NAME will sort
the available packet list by file name. Specifying DTIME_DDATE will
result in descending dates, descending time (this *is* the default and
the way MR/2 has worked for quite a while ... newest packet first).
Specifying ATIME_DDATE results in newest-date first, but inside each
day, packets are listed in ascending time order (oldest first, newest
last). This way multiple packets created by a single visit to a
mail door list correctly ... QWK, QW0, QW1, etc., even tho the last
packet is newer. By request.
o New Packet Select screen "look". Actually, I just extended the box
(made it wider) so that it can hold more data. I've listed, next
to each packet, the percent read. Following this is the actual count
of "read" messages, followed by the total message count. This is
tentative ... I'm taking votes. I don't like the marking of a packet
with a "replies exist" flag, as I often have replies that belong to
3-4 packets, but I have 6-7 packets for that BBS. I've got another
idea ... maybe I'll squeeze this in quickly. If the packet has never
been read, all I can show is "0%". Ideas? I can show counts of
personal messages? replied-to messages? ... whatever.
NOTE: before I'm done, I'll add an INI flag to force the packet
display to the "old way". The old way is actually quicker ... I now
have to poll for EA's for each packet. It's not really noticable on
my system; your mileage may vary.
o Hee hee! I've now (**finally**) got a working clipboard class! More
on this when I actually put it to work :).
o Fixed up the shadow on the extended packet select box. Also, added
the INI parameter "ShowReadPercent" that can be YES or NO. Allows
selection of the old way, if desired, over what is now the new way
with read percentages. The default is YES, show it the new way.
o I finally made the INI parser case statement too complex and broke the
compiler. I "hand optimized" this routine, finding lots of excess
code. I moved many simple sections of code into separate routines.
I report it only because changes like these, although seemingly simple,
can cause bugs. If you see any INI oddities start to occur, please
let me know.
o Ooops. No packet message entry had some problems if you used ALT-X
to fast-exit the packet, then tried to get back in. The error
occured while trying to resolve the packet name from the EA's.
There are no EA's for no-packet entry! Fixed.
o Added a "Local/Global" flag to the address book maintenance screen.
It's changable ONLY when adding the entry ... I make no attempts to
remove the address from one book and add it into another. maybe later.
"L" for Local puts it in your bbsname.ADR while "G" for Global puts
it in the main, global address book, MR2.ADR.
Changes included in v1.61x
--------------------------
o INTERNAL: Dlist class modified. Added a "fmarked" flag. Also added
methods is_marked(), mark(int) and mark_all(int). Since this class is
a low-level building block used by *lots* of code, recompiled all source.
o INTERNAL: Dlselect.cpp modified to start support of markable linked-list
displays.
o 'E' is now available from the message viewer to enter NEW messages w/o
having to return to the Packet menu. The current conference will be
the default for the new message, but To and Subject remain blank.
o INTERNAL: Modified the Event class once again. My code to disable
and enable the event handler (for external editing) closed the event
semaphore, the opened it on enable. This was unnecessary and could
cause problems with my multiple-instance logic. Now, DosSemClose is
skipped, and semaphore need not be re-opened.
o INTERNAL: QWK class now uses a the unique semaphore internal ID set
by the event class. This in an attempt to get multiple instances
running.
o You may now specify the name of a unique MR2 sub directory to use
as the work directory right on the command line. For example,
"MR2 /Wtmp$$$" will override the INI setting for work path and
create/use a "tmp$$$" sub directory for unpacking and reading the
QWK packet. Another aid in what will eventually allow multiple
instances.
o OK! I was able to run 3 simultaneous copies of MR/2. I ran three
windowed sessions and was able to (using OS/2's window menu) cut
and paste between them. All that's *really* required is that
you specify a different work directory for each session using the
/Wpath command mentioned above. I can see myself having either
"MR/2 - 2" and "MR/2 - 3" icons on the desktop or multiple command
files for when I need to reference other packets. I was able to open
up two instances w/o specifying a work path, the second instance
after a packet was already open. I was able to read the same packet
*in two different windows*, allowing me have two separate spots
visible at one time. Exiting one occurence messed things up a bit,
as it deleted most of the unzipped work files. I play with this
idea some more ... and I'll play with my own code to access the
clipboard in full-screen sessions.
o Fixed a bug in No-packet entry. If target conference was changed
BEFORE creating a reply, this conference would be forgotten and
the original conference would be defaulted on the AFTER pass. Fixed.
o Address book lookup failed to close the .adr file when tag was found.
Found this while trying to rewrite the .adr file. Fixed.
o Address book maintenance. Add new or modify existing records from
the address book selection screen. ALT-A to add, highlight an entry
and press ALT-C to change. ALT-D to delete (confirms w/a prompt).
Text file is rewritten each time, previous version is copied to
bbsname.old or mr2.old, depending on which book is being modified.
o NOTE: Address book tags are resolved in a first-found order. The
local address book, if one exists, is checked first. If not found
there, the global MR2.ADR is checked. If duplicates exist, only
the first one found (searching the file(s) sequantially) is the one
that's used. Pick list selections go through the same process ... so
picking the "other" one doesn't matter.
o I am now displaying both the packet name, BBS name AND the "logical"
conference name in two places on the message viewer. I'm trying to
determine which spot I like more. The bottom status line position
overwrites the old first-time-user help prompts. This worries me,
which means I'd make it an INI toggle that defaults to the help
prompts. The display in the middle of the divisor bar is "safe",
but it looks a tad cluttered to me. Votes?
o Rot13 support. The internal editor will now rot13 a clock of
highlighted text. Just press ALT-E (E for "Encrypt"?). A block
must be highlighted, tho. In the message viewer, ALT-E will rot13
the whole message. Read the desired part and ALT-E to return the
message to normal viewing. Replying to a message displayed in
rot13'd form is OK, the message buffer is only temporarily converted
and almost any action switches it back.
o RemoveReplyBookmarks now defauls to YES. I'm trying to remove the
problem of missing origin lines. If it doesn't go away, I'll set
this back. INI file can still override this ...
o New INI parameter "FileViewer". If you set FileViewer=List, for
example, you will invoke the command "List filename" whenever a
bulletin, news file or file list is selected for viewing. OR,
specify your editor ("FileViewer=Q" in my case). This eliminates
file size restraints withing my internal viewer (which I intend to
remove anyway). It also allows more power ... it's a user's choice,
at least.
o Listening to someone from a while ago ... I've taken a small amount
of time to encrypt and otherwise protect my copyright notice and banner.
It was reported that my reader was available in Hong Kong with another
name and copyright notice on it. It won't be so easy to change this
information any more. Users will notice no difference ... just FYI.
o Spell checker crashing. This was reported by two users, but I couldn't
get it to happen for me. Luckily, one of the users was a coworker and
I was able to see it first hand on his machine. Turns out the crash
occurs only if the reply starts with a quoted line. Mine always start
with an attribution line ... "In a message dated ...". I reworked the
quote-skipping logic within the spell checker (and eliminated another
bug at the same time). I've tested with all forms of quoted lines that
I could think of an all seems to be in order. I guess you'll tell me :).
Changes included in v1.60x
--------------------------
NOTE: Most versions from this point on until the end of the year will
contain **lots** of new code. For those that consider themselves
less-than-adventurous, it might pay to stick with what you're using
until all the new features shake out some. Still, I *do* use MR/2 every
day, so I have a great incentive for keeping it functional.
NOTE that all address book and dictionary logic is in development and
subject to radical changes at any time. Version numbers may not jump
very fast, but these are all considered v2.0 features. I consider every
version released (in limited fashion only) from now until Jan 1st to
be a v2.0 beta.
o I removed the necessity to have a "String = " clause in a custom
conference definition. It was pointed out that, if you could search
on "anything", you'd be able to build combined conference for easier
manual scanning. Before, if you defined a conference with no search
criteria or a NULL string, nothing would match. If you searched on
a space, it would work, but the highlighting was awful! Now,
either include the clause "String =" (followed by a CR/LF) or leave
if out altogther, list a bunch of conference number to search, and
a combo-conference is built.
o `NewRime` template section now available for "new" messages written
to an address-book target whose private mail section-type is `Rime`.
To add `NewRime` to your existing template file, simply add a
section in this format:
;---------------
`NewRime`
$Body
->@RimeSiteNo@
Your name here
;----------------
o Also, the NewInternet and NewNetmail sections should be changed. The
routing lines (the very first lines of each section) should now match
the normal Internet and Netmail sections, respectively.
o Address Book. I've added the ability to record email addresses and
other pertainent information in a simple text file. At this time
there is no way to add or maintain the address book other than via
direct text editor modifications. I expect this to change. See
example.adr for a starter kit/example file. My email addresses
are pre-recorded here in various forms :)
To access an address-book entry, you use the first field of the
record as the identifier or "tag". When filling out the message
header information, enter a "!" followed by an existing address
book tag, tab or enter out of this field and the address book data
will be accessed and automatically applied. For example, to send
an internet message to me (assuming you have a private internet
mail conference defined), simply type "!NK-I" as the TO user and
press ENTER. Oh, you must first copy the file example.adr to
mr2.adr. MR/2 looks for a BBSname.adr (e.g., "NERDNOOK.adr")
first, then "MR2.Adr" second, both in the MR/2 base directory.
The format is:
Tag | Description | TO name | Conference | Private? | Section | Address
where:
Tag is a short identifier you'll use to reference the address,
Description is a free-form field to help you remember who/what this
address is for.
To name is the name to plug into the TO; header field.
Conference is the conference in which to place the message. NOTE that
this is usually a specific number, but "I" is allowed and will be
replaced with the conference number set as your "Internet" conference.
Also, "N" is allowed and represents the defined Netmail conference.
Private is either "Y" or "N", representing the privacy flag.
Section identifies the template section to use. Sometime this may
obviously be unnecessary, but it does allow for user-defined "special"
sections to be created and used for specific address book entries.
"Internet", "Netmail" and "Rime" will probably be used most frequently.
NOTE that "New" is automatically prepended by MR/2 when entering "new"
messages.
Address is the first-line address code. If the template section uses
the @Internet@, @Fidonet@ or either of the @Rime*@ variables, the
contents of these variables will be set to this string.
NOTES: There is no error checking or identification by BBS name, other
than allowing for BBS-specific address books. MR2.Adr, if it exists,
is always references, but after any bbs-specific file has been checked.
Use of the "N" and "I" conference identifiers helps make some addresses
less BBS-specific. For example, I can send Fidonet netmail from any of
three separate BBS's. My MR2.adr can contain netmail addresses for
use on all BBS's, as long as my template file(s) have been set up
correctly and private mail conferences have been identifies in the
BBS-specific INI's. This can get complex - but it also can be quite
powerful and handy.
o Not labeled as of yet on the Edit Header screen: F6 calls up the
address book pick-list. Contains BOTH bbs.adr and mr2.adr.
o Internal dictionary available when using the INTERNAL editor. You'll
need one of the two dictionary files available:
MR2DICTL.ZIP (280k) - 120,000 words, 480K uncompressed
MR2DICTS.ZIP (128k) - 60,000 words, 248K uncompressed
The spelling checker logic is fairly good. The suggested word part
needs a little work. You can add words to a "user" dictionary. I'll
provide a utility later to manipulate dictionaries (add/delete words,
merge user dictionary, etc.,.).
CTRL-F2 while editing a reply. ESCAPE stops the speller in between
checks. If a word is not found in either dictionary (base or user),
then you are given up to 10 suggested spellings. You are allowed to
pick one of these, skip the word, ignore the word for the rest of the
time you are editing the current file, add the word to your user
dictionary, edit the word by hand, or stop the spelling check
procedure. The mispelled word is highlighted, and the menus/pick
lists move to opposite sides of the display in an attempt to give you
an unobstructed view of the word "in context".
QEdit users will notice the menu's look a bit familiar :). It was
quite timely of Qedit to get me my v3.0 upgrade around the same
time as my dictionary thinking started ...
MR2DICT.BIN is the dictionary used ... it must be in the MR/2 home
directory with MR2.EXE. MR2USER.BIN is the user dictionary. It will
be created whenever the first word is added to it.
Due to the size of these dictionary files, the base dictionaries
themselves will remain separate zip files for distribution purposes.
NOTE: Dictionary is English-only; no support for hi-end ASCII
characters at all. Sorry.
Changes included in v1.57
-------------------------
o Changed the internal QWK initialization routine that matches NDX
files to master conference names. Previously, the master conference
was sequentially searched until the number associated with the index
file (e.g., 1695 for "1695.NDX") was matched. On a 3000 conference
BBS, this resulted in an average of 1500 checks before a match. If
you had mail from 100 conferences ... yikes! It took awhile,
although, in reality, it was only a matter of seconds. The new
logic searches the master list once and a compressed easy/quick to
search array of conference numbers is searched to see if the master
name is needed. If found, it is processed. This makes things just a
tad more snappier.
o Ooops. It was pointed out to me today that sorting by message number
didn't work correctly. I was using string compares, where message
number is left justified. This means that message number "1000 "
would come *before* message "9 ". WRONG! Easy to fix - I now
convert to numbers and compare.
o INTERNAL: Event class now checks for errors when creating the event
semaphore. If the named semaphore already exists, a new name is
created and another attempt is made. This is to aid in running
multiple instances. Also, a global variable is set with the final
"ID" used. This is necessary when creating some of the other
control semaphores.
o Mods made to logic that builds "Conferences w/Mail" list caused the
sort order to be alphabetical. While this may be desirable to some,
I've become acustom to and still prefer the default "numerical" order
by conference number. I'm the only one that saw this happen, but it
sure confused me. I reworked the code a little more and got the "old"
sort order back. I also managed to make it even more efficient in
the process :).
o Someone noticed that when using NO PACKET ENTRY, the Inbasket was
inaccessible. This has been corrected.
o Internet private mail (replying). While replying to various Usenet
messages via private Internet mail, I noticed MR/2 was leaving alot of
To: addresses blank (@INTERNET@ values not found, replaced with blanks).
The address was usually easy to find, on the first line identified
by the PC-Board "@From:" command. MR/2 now extracts valid addresses
from these lines and can reply properly.
NOTE: I've heard from some users that their internet mail was
getting bounced because, when copied from the message header FROM
field, the address was in all upper case. My upper-case addresses
seem to work, but there are several different qwk->internet systems
in use. To be safe, I've modified the default template file to
convert internet addressed to lower case. If you're using a
template file, and you'd like to do the same, simply find @INTERNET@
variable and change it to @LOWER@@INTERNET@.
o Conference names containing hi-end ASCII characters were getting
truncated. Switched to using unsigned characters and the problem is
now gone!
o INTERNAL: Small patch to GetMessageLine(). If pMessage is NULL,
this function instantly returns -1. No packet entry into private mail
conferences crashed inside this function when templates were being
processed.
o I had introduced a few bugs with no-packet entry. There were various
cases where internal information was not correctly set and crashes
would occur. Things seem to work much smoother now.
o I received an Internet message just today about deferred messages and
how zeros seem to be mysteriously appearing. I checked my inbasket
(remembering that I'd seen this happen before) and did some
experimenting. Sure enough, one character of every message was
being changed; the most frequent occurence was a ' ' being changed to
a '0'. I was marking the 'archived' bit (my personal invention) of
the message header, only I was changing the 127th byte of the actual
message, instead. The archive bit is bit 16, which will change a ' '
to a '0', an 'a' to a 'q' and so on. I now have moved this mark back
into the message header, where it belongs. The "archived" indicator
that's supposed to be showing for folder messages will probably work
now, too.
Changes included in v1.55 - v1.56
---------------------------------
o Inbasket packing often left killed replies visable and available across
packets. Fixed - killed messages will once again disappear the next
time the packet (and related inbasket) is closed.
o Conversion of the master conference linked list to my new,
experimental "quick heap" routines. I'm maintaining a separate heap
for memory needed for this linked list. The list is freed in huge
chunks instead of 2 parts per conference name (i.e., PC-Ohio's 3000
conferences caused the old heap to have to free 6000 linked entries,
maintaining the "available block" information as each one is
released). This *should* speed up the exiting of packets. Deleting
the files is still a source for delay ... perhaps I can multithread
this and overlap things a bit.
o Modified MR2UTIL.CPP - RemoveWorkFiles() routine. You wouldn't
believe the amount of code I was executing to delete a packet's
files! I was actually building a sorted linked list of file names
with details (sizes, dates, etc.,.), then immediately deleting each
file found in this list. Now, this routine merely finds the "next"
file and removes it. Results in a noticable speed up when exiting a
packet. Between the above quick-heap mod, and this one, I think I've
licked this problem. These changes are to the core QWK engine, so
they'll help both MR/2 and the PM version.
o I've made all internal linked lists use the new QHEAP. Should result
in improved "snappiness". Also has big-bug potential. I'll test
thoroughly before releasing.
o Made some new routines for general use. Includes a low-overhead
delete-by-wildcard routine and an "at least one file matching
this wildcard exists" function. Minor performance improvements
should result, as the code scattered about in several places used
previously had high overhead.
o Rewrote the bintree() class to use QHEAP. Master conference
sorting should be faster for large conferences. At least a tad ...
Changes included in v1.54 - Limitted distribution
-------------------------------------------------
o Message Sort can now be defined in the INI as no order, Subject,
From or To. The FROM and TO options are new.
o NOTE that if you don't sort by subject but then ask for a quick
thread summary (by pressing Q), messages are sorted by subject from
that point on. Previously, Q would just beep at you if SUBJECT was not
the specified message sort.
o From the Message Index, ALT-O now allows you to change the message
sort on-the-fly. You may select from a menu the option to
sort by NUMBER, SUBJECT, FROM USER or TO USER. Once mesasges are
sorted, normal reading (e.g., ENTER for next) will give you the next
message in the NEW sort order. Again, pressing Q resorts by
Subject ... this will probably change too, as I've got ideas :)
o OK, the "Q" key has been changed once again. I'm still trying to
figure out what the correct method should be. Now, if you press the
Q key and message sorting is by subject, it works the same ... you
get the Quick Thread Summary list. If you happen to be sorted by
FROM or TO user, you get a by-user summary. If there is no sort or
message number sort and Q is pressed, the sort is changed to subject
and the thread summary is displayed.
o I added a new function on the message reading screen triggered by
pressing the C key. This is the "Copy" function. It simply places
a copy of the current message in the reply conference, changes the
FROM user to your name and places the EDIT HEADER screen up. Right
now you can copy any message to someone else and make it "from you";
not just your own replies. This may change. Copy loops for multiple
copies until your ESCAPE from the "next" message header edit.
I also plan to add a manner to copy to predefined distribution lists.
o Forwarding messages: If a `Forward` template section and accessed
message header information, this information would be copied from the
header AFTER the header editing process. That meant that if you
changed the conference or subject, the changed data would be used.
This has been corrected to show correct original data.
o When creating some types of new message where MR/2 defaulted the TO
user to blank, the cursor would be one character over. This was a
bug in the internal EditHdr trim function. Fixed.
Changes included in v1.53
-------------------------
o Messages.Dat and mr2bm.bin would never get deleted from the tmp$$
directory when a packet was closed. Just a minor flaw, but this did
waste some disk space when MR/2 was not in use. Fixed.
o When MR/2 builds it's own NDX files, it now opens the target index in
APPEND mode. No biggy, except in playing around qith QWK merge logic,
I found that my QWK engine assumes all conference's message are
together. This may or may not be true for most mail doors, but I
should be able to handle non-contiguous conference messages with out
breaking anything.
o ALT-E to enter new messages w/o an existing packet failed to read and
configure based on the selected BBS's "local" INI. The local INI is
now added to MR/2's configuration parameters when one for the selected
BBS is found.
o New INI parameter "RemoveReplyBookmarks". This is NO by default, but
may be set to YES if it is found that MR/2's bookmarks are interfering
with a networks routing or origin lines. There was a problem on
ILink where someone's origin lines were not appended about 50% of the
time. It was blamed on my use of the last byte of the message header
as a bookmark flag. Setting this INI option to YES will cause MR/2
to replace any bookmak character at this position with a space (0x20).
You lose any bookmark information stored in this byte with this option,
but the bookmark flags saved with replies is minimal anyway.
o Modified the confirmation button screen routines to accept the pressing
of a "k" or "K" to mean "keep" when prompting about existing replies.
For an "Ok/Cancel" choice, "o" or "O" means OK, and "Y" still works as
a positive response on all versions of this screen.
o Reply splitting: instead of "(Cont'd)" being attached to the subject
of a plit message, MR/2 now numbers each part and gives a total count.
The counters are placed at the far right of the subject space, so
subjects like "MR/2 1/2". This preserves as much of
the original subject as possible. This also will assist in MR/2's
sorting of multiple part messages (when sorting by thread).
o When a single piece of a split message is later modified, the last
line of that part would often be removed before entering the editor.
This has been corrected, although more changes to come might
render this fix useless ...
o Save file selection screen now supports long file names. I changed the
order of the display to place the file name last. I don't like this
as much as when it's first, as you can't use keyboard chars to jump
to filename (i.e., pressing "M" no longer moves to the first M file).
I may play with trying to fit the long file name in front, maybe with
leader dots to line it up with the corresponding date/time and size.
o Improved the long file name selection logic. Moved the name back to
the front of each line so shortcut keys work again. Selection box
expands to fit around longest name (I've set a max of 42 characters
for save file names ... at least it's better that 8 :).
o Decision Button logic changed once again. I like this even more.
Now, if the screen reads YES/NO, the only letters MR/2 responds to
are Y and N. KEEP/DELETE recognize only K and D, and OK/CANCEL see
only O and C. All other typing characters are ignored. Also,
if you use the right arrow key, the right box is highlighted and
becomes the default when ENTER is pressed. If you press left arrow,
the highlight moves back to the left box and this is again the ENTER
default selection.
o Form filling logic changed somewhat. Implemented the TAB key to
advance one field as the down arrow key does now. Also implemented
SHIFT-TAB as a previous field key synonomous with the up arrow key.
o Added the capability to split messages at a user defined point.
Used SLMR's ".pg" marker technique. Start a line with ".pg" and
MR/2 will force a split at this position.
o Made Fast Exit from the message viewer *really* fast! Instead of
filtering back through all those nasty C++ destructers, I simply call
DOSExit after some simple cleanup. Seems to work nicely even on
packets with a large number of conferences (~3000). I'll spend some
watching for bugs ... I think I can multithread my freeing of many
internal structures and linked lists too. (This is what takes MR/2
so long when closing a large packet w/lotsa conferences - all the
freeing of memory. ZTC doesn't handle this very quickly ... I'll
try to help them some :).
o If you specified a static, hard-coded tagline, then hit F2 to "pick"
a new tagline, MR/2 would crash. Now it puts up a nicer "empty list"
message, although it still doesn't let you pick a new one :).
Changes included in v1.52
-------------------------
o New variables for use with templates to allow random and user-selected
phrase insertion. First, there must exist a text file containing a
list of possible phrases, one per line. Then, the template file
must contain one of the following (assuming "phrases.phr" is the file
name and it resides in the MR/2 home directory. Remember, when
replying, you're pathed into the TMP$$ sun directory):
@SELECT:..\phrases.phr@
@RANDOM:..\phrases.phr@
Select will build a list of te file's contents and display the
phrases in a selection box for you to pick from. If you ESCAPE
from the selection w/o picking an entry, MR/2 will randomly select
one for you. If you choose the RANDOM option, no user prompting is
performed; MR/2 randomly selects one of the phrases to include.
You may have multiple phrases per template line; as many as you want
in any given section. They're processed one at a time. Phrases may
even contain other @ variables, however, these variables are not
replaced with data until AFTER the phrase is selected. Hmmm, I'll
have to test this, but there should be no reason a random phrase
couldn't reference another select/random phrase clause. Ah, I'm
thinking too hard :)
When you're selecting a phrase manually, the template line in
progress is displayed on the bottom "status" line of the screen.
OK, how about an example? Here's what I tested with in my template
file:
==================================================
On @MSGDATE@, @FROM@ @SELECT:..\SAID.PHR@ to @TO@:
$BODY
To which, @SELECT:..\TOD.PHR@, I reply:
Nick
====================================================
The contents of the file "SAID.PHR" I used for testing was:
said
spewed
bellowed
expounded
proclaimed
jabbered
mumbled
and "TOD.PHR" contained:
on this brisk morning
in the heat of the night
in a babbling frenzy
without a hint of intelligence
all just jibberish to test with. It works very nicely, tho.
The sysops will love me now! BTW, I used a .PHR suffix to stand
for "phrases". Phrases should be of a reasonable length (none
longer than 200 chars, for select, only 76 are usable).
Please, let me know if you can think of any "colorful" extensions
to this idea! :)
o ADD/DROP conference would not work if a DOOR.ID file was not present in
the packet. I now default to QMAIL format in these cases, and create
QMAIL-style add/drop messages.
o When you would modify a reply and change the header data, the index
list would not reflect these changes. The "I"/Insert index list will
now accurately match reply header data.
o Ooops. "InBasket" Folder was not being packed. In other words,
messages that were deferred, then later killed/deleted would still
be physically contained in the InBasket.Dat file. They were marked
as inactive, so they couldn't be read. Code to pack this file
has been reinstituted.
o Double oops :) FolderPath was never sufficiently documented as a
valid MR2.INI parameter. It was metioned in the read.me file, but
was never entered into the MR2INI.ORG file. It's there now, and ...
o It never really worked, anyway. It "kinda" worked, as it did
everything correctly except allow you to actually read deferred message
from anywhere except off of the MR2 home directory.
o I just spent 3 days tracking and fixing a bug ... one that ends up I
put in just 5 days ago :). In tracking this down, I did discover some
potential problems and even a memory leak with the Quick Thread
Selection screen logic. These problems may have been the cause of some
of the rare/random reports of crashing I've received. Well, at least
the memory leak is gone! (it was relatively minor)
o In case you're just tuning in, MR/2, while an OS/2 app, still
"polls" the keyboard for input. This is to ease mouse support. It's
technically possible to use semaphores and other OS/2 resources to
support both devices (kbd and mouse) w/o polling, and most OS/2-ers
will tell you this is the route to take. Still, I could think of no
clean way of removing polling, short of spending a couple of weeks
and adding tons of code. When I asked for suggestions in various
OS/2 programming conferences, it got fairly quiet. Zortech's default
libraries originally used a very tight polling loop. MR/2 uses a
much friendlier loop, using calls to DOSSleep between every poll.
I've increased the default sleep time from .30 seconds to .50
seconds. Using PM SysInfo, my CPU showed 19% usage w/o MR/2 loaded.
At 30 ms delay, the meter showed 23%. At 50 ms, it reads 21%. I
investigated this in response to a reported problem where MR/2
allegedly hogged the CPU from a comm program (OS/2 hosted - HA5?).
I've never seen this myself ... MR/2 has never caused my system to
seem slow or impeeded my TE/2 use. I'm in MR/2 more than anyone :),
and by default I'm using TE/2 probably more than the average user.
Anyway, .50 seconds is the new default. I'll probably make this
configurable for those that see a difference :). I'm also planning
on playing with the background search thread priority now that OS/2
2.1 is out. I'll see if the old IDLE thread bug still exists.
o Modified the origin line find logic. Original code, for some stupid
reason, started at the beginning of a message and search forward. I
now start at the end and work backwards. This will help prevent
erroneous detection of the origin when user-entered dashed lines are
entered as section separaters.
In addition, I revamped the whole routine. It seems to do a much
better job of finding the start of the origin section.
o There was a problem on some systems with the personal conference not
showing in the selection list. This was when working on an HPFS
drive, and the personal.ndx file was unpacked with a lower case file
name. When MR/2 scanned conferences, it always matched on capital
letters for the personal index. This was never a problem BEFORE
long name support, as the names always came back capitalized. Now,
they come back as they are on disk. I've fixed this problem and
scanned for other possibilities. I think that was it ... time will
tell! NOTE: The report I received that finally solved this one
specifically mentioned a 32-bit UNZIP.EXE. He mentioned that all
worked OK with the -U switch added to the command line. Just FYI.
o Message Header Edit screen now allows you to enter conference numbers
that are not present within the control.dat master conference list.
Maximus QWK doors and PC Board's built-in QWK feature do not supply
complete conference lists. Some QWK doors also make this optional to
reduce packet size. Previously, you could not post into a conference
that was not defined in the contorl.dat file. Now, you may manually
enter ANY number. If MR/2 cannot find it in the master list, it will
beep and clearly identify the conference number as a possible problem
with the tag: "** WARNING: Unknown Conference **". It's the user's
resposibility to make sure a message is posted to the correct
conference number. Maybe I'll add a user-definable master list later.
Changes included in v1.51
-------------------------
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 After a brief "vacation" <NOT!>, work is once again progressing :)
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
to unqwk.cmd.
o Selecting an alternate conference using F4 from the Message Header
Edit screen was broken. This has been fixed.
o Packet path would get reset after every packet. That meant that if
you used ALT-P to change to a different directory and opened a packet,
you'd lose that path when that packet was exited. Packet path and
Video mode now are kept across packets
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
still crashes.
Changes included in v1.50
-------------------------
o Read.me is now shifted around so that most recent changes (from now
on, at least) list at the top. The old mr2.hst file that used to
house the list of modifications up to v1.00 (beta changes) is gone.
Mr2.hst now contains a list of changes from v1.00 up to v1.40.
This read.me file contains changes made in v1.40 and beyond.
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 @Fidonet@ variable. Removed any
@fidonet suffix that exists in the origin line.
o Ooops. When using the internal editor, and editing mr2.ini, the
read clock string would pop onto every edit screen. The clock display
is now suspended/resumed correctly.
o Clock would still pop up if you would request HELP while inside the
editor, then CANCEL to clear the help screen. Fixed.
o ALT-W now "works" when inside the internal editor. It will write the
entire file currently being edited, to another file named by you.
This does not change the original file's name. It will overwrite any
existing file ... I guess there's an enhancement idea right there :)
NOTE: The internal editor works similarly to the E and EPM editors
as far as CR/LF's go. If you type in a long reply letting the
editor do the wrapping, there are not necessarily CR/LF's at the end
of every line. These occur only where they previously occur, or
when you force a "hard return" by pressing ENTER. MR/2's reply
saving logic places hard returns into the replies. This means that
files that are created by using ALT-W *may* appear to be one long
line (or at least one long line per user-typed paragraph) when
viewed with another editor, printed, or typed to the screen. If you
want to ALT-W write a reply with correct CR/LF placement, save the
reply AND THEN go into the reply conference and re-edit it. Once it
has been saved, CR/LF's will be placed properly. Let's see if this
causes a problem for anyone.
Changes included in v1.48x
--------------------------
o Add/Drop - you can add or drop a conference via "door" command now.
Simply highlight a conference on the Conferences w/mail or the Write
New selection list. Press ALT-A to add, ALT-D to drop, and confirm
the action. Adding/Dropping a non-BBS conference (MR/2 created, for
example) does nothing.
o Internal Editor: cursor would not be visible in with screen displays
of 40 lines or more. I was drawing the cursor, just too thin! Now,
the cursor setting routine queries # lines and adjusts.
o Modified the "no packets exist" screen to report the option of
pressing ALT-E to enter message to a known BBS even though no packets
exist. Formatted the text on this screen a little better.
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 NOTE: starting with the next release, this file will begin to list the
latest changes at the TOP of the file, with older revisions towards
the bottom.
Changes included in v1.47x
--------------------------
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:45@ sets the next column to 45.
@RCOL:72@ says to right justify the next variable referenced at col 72.
@Center:40@ says to center the next variable referenced over column 40.
The @RCOL@ and @CENTER@ 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 @COL@ specs may be supplied. This will delete the specified
number of characters before the variable. For example, @ITIME@@COL:-4@
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
doc/examples.
o The template file now supports comment lines. Simply start the line
(very first columns) with ";;" and the line is ignored.
o Save message - if your "default" file in the INI has a "*" or a"?"
in the name, MR/2 shows the file selection list immediately upon
hitting the "S" to save.
o MR/2 now will highlight all occurences of a search string within a
"hit" message. This includes custom conferences, and soundex hits.
Soundex highlights may appear longer or shorter than the actual hit.
Since the length of these matches is variable, a "best-guess" is made.
Header area hits are highlighted also. A multiple part search string
will cause ALL strings that have matched to be highlighted. Color
defaults to yellow background, black letters, but ...
o I added yet another 2-byte color combination to the end of my "archaic"
(as it's been referred to :) color specification. Modify your INI
color line (example given):
Colors=1E171E??
replace the ?? with the two-digit color code for the HIGHLIGHT color to
use when displaying search result "hits". The default, black on yellow,
would be specified as E0.
If you don't like new the highlighted text, just define the highlight
color to be the same as normal text. This will still show differently
in the header and quoted text sections ... let me know.
o INTERNAL: had to modify csoundex to return hit pointer.
check_for_string() now returns a point to a hit, and sets a global
length variable, __cfs_match_lgth. ViewBuffer now has code to search
for match string(s) and hilite any/all found.
INI.cpp: added another parse for new color possibility.
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 GetMessageLine: added a new parameter, maxline_length. This defaults
to 32000, but may be overridden. Problem was with long usenet message
(no linefeeds), stacked string variable were getting overflowed. This
becase apparent when searching for varibale values ... may exist in
other places.
o Specified maxline_length on all calls to GetMessageLine() found in
MR2.cpp and MR2Util.cpp.
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:
QuoteBody="%i│▌",Paragraph
then you'll get a quotes like:
MN│▌Yes- DOS 6 upgrade is... (lines chopped for brevity)
│▌number of files that...
MN│▌And 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):
MN┤Yes- DOS 6 upgrade is... (lines chopped for brevity)
│number of files that...
o Prewrapping still screws up. I'll look at this tomorrow. :(
HA! I had a problem where I saw too many lines as being "quoted".
Fixed this and text is flowing much nicer. Time will tell.
o Editor: Hi-end ASCII (>127) is now available via the ALT-nnn (numeric
keypad entry). Hi end characters that used to display with different
attributes now display correctly (normal text color).
o Forms: ALT-nnn combinations can now be used to enter characters into
forms. The Header Editing form will now accept these characters.
Still a problem ... display rountines aren't showing them ...
OK, fixed displays. It was a trimming problem, hi-end ASCII getting
trimmed off the end as, when seen as signed chars, they're actually
LESS THAN a ' ' and would get trimmed.
o Oops, old quote detect now also uses new "extended" quoted line
detection logic.
Changes included in v1.46x
--------------------------
Beta bug fixes...
o Trying to declare SmartWrapping or SmartQuoting in the INI file
resulted in a crash. I messed up by referencing an uninitialized
pointer. Sorry ... fixed now.
o Modified the logic to pick out the quoting initials to better parse
Internet "from" fields. Still needs some other strange-character
detection added (nick.knight@pc-ohio 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 (Michael.Hagerty@nitelog.com to Nick Knight, reply would
be quoted MK>) This *was* fixed in v1.45 but not documented.
o So my wrapping logic needs a little work :) 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 :)
Changes included in v1.45x
--------------------------
Another limitted release beta ...
o INTERNAL: get_origin into mr2util.cpp from qwksrch.cpp. Previously
it was considered part of the searching logic but now has more
applications.
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 module: Wrap.cpp - WrapMessageText() called from MakeReply()
and SaveReply().
o New function in mr2util.cpp: fQuoteLine(). This used to be a simple
macro used in a single place. It was needed in another chunk of
code so I made it a function. This also allows for extensions, as
all MR/2 currently recognizes is a '>' in any of columns 1 through
5. If one's there, I call it a quote line.
o New INI variable: SmartQuoting, defaulting to "YES" but may be
manually set to NO via INI settings. SmartQuoting will "prewrap"
the reply file that MR/2 generates, compensating for the user
initial prefix string. In other words, when you first see the
reply, the original sender's text will be rewrapped and quoted so
as to fit inside the WrapLinesAtColumn defined in MR2.INI.
NOTE: that existing quoted lines ARE NOT REWRAPPED.
ALSO NOTE: SmartQuoting will *not* quote past the first tearline.
If this creates an incovenience, please let me know.
o New INI variable: SmartWrapping, defaulting to "YES" but may be
manually set to NO via INI settings. SmartWrapping will change
the logic used by MR/2 when the edited reply file is saved.
If set to NO, the old wrapping method is used. When left on,
MR/2 will format your NEW text with some intellegence. There is
logic to differentiate between a "hard" and "soft" return, and
soft returns will be removed if necessary.
The old technique would simply insert hard returns to make the line
fit within the declared wrap column. The remaining section of the
original line would often be short (one or two words) and look out
of place, stranded on a line by itself. The new technique attempts
to rewrap the text as a whole and eliminate some of the older
method's ugly results.
NOTE: Quoted lines ARE NOT REWRAPPED, these are always considered
to be prefixed and terminated by hard returns.
o New template sections are definable: NewInternet and NewNetmail
for creating new messages in these private-mail conferences.
o The NewMessage template section was never actually used ... the
"default" direct section was always being used for new messages.
Fixed.
o When editing a message header and the conference is the Internet or
Netmail defined conference, the "private" flag is set to YES.
o INTERNAL: SetSection() moved into mr2util.cpp.
o INTERNAL: AppendFile() - replaced fpreamble with multivalued
"subsection" parameter.
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: @RimeIDCode@ and @RimeSiteNo@ 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:
@RimeIDCode@ and @RimeSiteNo@, defined above.
@Version@ for the MR/2 version.
@SerialNumber@ is replaced by the registered serial number
(empty if not registered).
@UserName@ is replaced by your user names as found in the QWK
control.dat structure.
@IDate@ is replaced with the Internet "Date:" spec, or the
the same results as @MDATE@ if a date string is not
found.
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 ** DO NOT USE THE ALT-W feature inside the internal editor. **
ALT-R seems to work ok (Read or "insert" file).
Changes included in v1.44x
--------------------------
o When replying into the Internet mail conference, the @INTERNET@
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
INTERNET value.
o Added ALT-R and ALT-W support to the internal editor. ALT-R prompts
for a file name, then reads that file into the current cursor
position. ALT-W prompts for a file name and writes the entire edit
buffer to that file (overwritting). I'm not happy this code ... and
it doesn't seem to work that well. I also noticed that the editor
doesn't save files in full text mode (no CR's).
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 The internal editor now saves and ALT-W writes files in TEXT mode.
I had to do cr/lf translations myself :(. Writing is OK now, although
I'm still hoping to recognize and write only a block, if something is
highlighted/marked. Reading/importing a text file also works OK, but
since I'm tricking the editor by inserting the file into the internal
editor keyboard buffer, it runs more slowly than it should. Plenty of
room for improvement here :)
THIS IS BUGGY AND MAY GET YANKED !!!!
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 INTERNAL: QwkSrch.cpp - modified fopen() call to open custom conference
NDX file. It now prepends the BaseDir and WorkPath. MR2PM, under some
interesting circumstances, would write these files to the wrong
directory. MR/2 classic probably could have, too.
o Qwksrch.cpp - James Schmidt found a couple of problems.
If you set the CHECK= parameter for a custom conference to TO, FROM
and/or SUBJECT, and the source message used mixed case text, a match
would never be found. Fixed. Also, if a message had no detectable
origin line, for some strange reason I called the whole message part
of the origin/tagline area (and it had no "body" section). This is now
reversed - a message with no tearline is all "body" and has no origin
section.
Changes included in v1.43x
--------------------------
FOLKS: Same as before ... 1.42 was kept *very* internal. This version
is still beta stuff.
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:
Zipper=..\msg2rep
Unzipper=..\unqwk
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 INTERNAL: packet_exists() now returns TRUE+1 if a .msg file is found
in the work directory.
o INTERNAL: packet_exists() and remove_packet_exists now use the file
name "control.dat" when checking (and removing) packet exist status.
If you left a no-packet entry session with ALT-X, then tried to go back
in later, MR/2 would not see the existing work (since no messages.dat
file ever existed). Control.dat will always exist if a "packet" is
open.
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
problem.
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 @ISUBJECT@ 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
`NewMessage`.
o There was a problem with clearing of search results if there was no
local INI when a packet was closed. Previously, hit counters for custom
conferences would not represent the correct counts (counts would not
be cleared for the next packet). Now, all data is cleared (MR2.INI is
always reloaded after a packet is closed).
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 <cont..d> 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 <really!>, so I figure 10 will be a "safe" minimum). I would
suggest using a reasonable number if you need to change the default
at all.
Changes included in v1.42x
--------------------------
FOLKS!!!: This is truely a beta ... please save your old working
MR/2 version before trying this release. I changed alot of code, and while
eveything appears to be OK so far ... well, we all know better than to
get too relaxed, eh? :)
o New INI parameters V0 through V9 allow you to set user-defined text
strings as template variables. Uses of the strings @V0@ through @V9@
in the tenplate file will be replced with the corresponding defined
text string.
These variables can contain any other variables, including other "V"
variables. This allows for a template to be defined with an
attribution line of @V0@, 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
it's understandable.
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 @V0@",
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
file has:
Internet=5
Netmail=6
Nerd' Nook has Netmail in conference in 139 and no Internet capabilities.
My NerdNook.INI file has the lines:
Internet=-1
Netmail=139
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 @INTERNET@ and @FIDONET@. 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.
Changes included in v1.41x
--------------------------
o Template file processor would lockup if the named template file did
not exist. Same ZTC bug where fopen() doesn't return NULL on error.
Fixed with a call to my file_size() function.
o Taglines now are filtered for variables (e.g., @FROM@).
o Took template file checking one step further - if file name is
empty, processing doesn't even start.
o Distribution packets now contain a FILE_ID.DIZ file to help automate
BBS description entry.
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.
Changes included in v1.40x
--------------------------
Not much feedback on the internal editor yet. I used it for a while but
switched back to QEdit. I need file import/export capabilities myself; I'll
be adding that to the internal editor soon.
o Save file wildcarding logic fix. First, if you entered a spec like
"c:\tmp\*" and pressed ENTER, MR/2 would save the message to that file
name, which is illegal. No error would be reported. Now, when ENTER
is pressed and a wildcard is in the file name specified, MR/2 converts
the ENTER into an F2 keypress and shows a file pick list.
o If "C:\tmp\*" was provided as the save file pick list, and a file was
selected from the list, the file name returned would be grunged. The
file name field would be filled with some mutation of the subject line
from the message display. This was due to the missing ".", which I
assumed would always be there. This has been corrected.
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: @Subject@
In a message dated @DATE@, @FROM@ said to @TO@:
$BODY
Nick Knight
From @from@ reading @CONFNAME@ (@CONFNUM@) on @BBSID@, to @TO@
Subject: @Subject@
FidoNet: 1:157/2
Internet: nick.knight@pcohio.com
Compuserve: 76066,1240
To First: @tofirst@
To Last: @tolast@
YYMMDD: @yymmdd@
Date: @date@
From First: @fromfirst@
From Last: @FromLast@
Msg Date: @msgdate@
Msg Time: @msgtime@
Day: @Day@
Julian: @Julian@
Time: @Time@
Time 24: @Time24@
AM/PM: @AmPm@
Upper: @Upper@@Subject@ @upper@@day@
Lower: @lOWER@@Subject@ @lower@@day@
Mixed: @mix@@From@ -> @mix@@to@
-------------------------------------------------------------------
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
<My reply would be inserted here.>
Nick Knight
From DAN HANSON reading Main Board (0) on PC-OHIO, to ALL
Subject: NEW ZOO
FidoNet: 1:157/2
Internet: nick.knight@pcohio.com
Compuserve: 76066,1240
To First: ALL
To Last: ALL
YYMMDD: 930306
Date: 03/06/93
From First: DAN
From Last: HANSON
Msg Date: 03-06-93
Msg Time: 14:21
Day: Saturday
Julian: 065
Time: 03:08
Time 24: 15:08
AM/PM: PM
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:
BBSID TIME
CONFNAME TIME24
CONFNUM TO
DATE TOFIRST
DAY TOLAST
FROM YYMMDD
FROMFIRST UPPER
FROMLAST LOWER
MSGDATE MIX
MSGTIME AMPM
SUBJECT JULIAN
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.
KNOWN BUGS AND STUFF
====================
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.
Other frills that have not yet been addressed: Bulk marking,
twit filter, function key assigning. There are probably others.
Feel free to bombard me with requests.
************************************************************************
NOTE: READ.ME format has changed! Go to the BEGINNING of the file for
the most recent changes!!!
************************************************************************