home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-07-11 | 50.2 KB | 1,090 lines |
- MR/2 - A QWK Compatible Mail Reader for OS/2. 07/11/93
-
- Copyright (c) 1992, Knight Writer Software Company.
- All rights reserved.
-
- ===================================================================
- N O T I C E
- ===================================================================
- This IS a shareware package, and does require a registration fee if
- you choose to continue using it after 30 days. The registration
- fee is currently $20 US. Eventually, the product MAY have a
- "begging" screen with a key-file that will register the software
- and suppress it. The more interest I get, the more likely I am to
- continue with improvements.
- ------------------------------------------------------------------
-
- CONTACTING THE AUTHOR
- =====================
-
- You can contact me in a number of ways. Unfortunately, I can't
- provide a phone number at this time.
-
- US Mail: Nick Knight
- 1823 David Ave.
- Parma, Ohio 44134
-
- Fido netmail: 1:157/2 to "Nick Knight"
-
- Internet: User "Nick Knight", (nick.knight@pcohio.com)
-
- Fido Echomail: Find the Fidonet OS2PRODSUPPORT conference. I'm there.
-
- Echomail messages to me in more general conferences are
- discouraged, as keeping them "on topic" and
- interesting to the masses would be difficult. I do
- read OS2, OS2PROG, C_PLUSPLUS and DR DEBUG daily,
- though. OFFLINE echo also (deals with mail readers),
- this might be THE place to ask public questions, eh?
-
- I recently have acquired access to a host of other
- networks with OS/2 conferences. These include RIME,
- SmartNet, Uninet, Intelec, Nanonet, Racenet and some
- others I can't remember.
-
- 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. **
- ** **
- ** If you JOIN 208 before downloading files from area **
- ** #45, your download is "free" as far as time and byte **
- ** counts are concerned. **
- **************************************************************************
- **************************************************************************
-
- 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.
-
-
- 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
- ====================
-
- Mouse support is missing from some of the "inform user" screen.
-
- The TEMPORARY directory MUST remain a subdirectory of the MR2 home dir.
-
- You can't use "\" or "&" as part of any search text (since MR/2 uses them
- as delimiters).
-
- You can't cancel a search until the first "hit" is displayed. This is
- particularly irritating when soundex searching, since soundexing is
- noticably slower.
-
- If you set "SkipReadMessages" to true, you cannot gain access to a
- conferences where all messages have previously been read.
-
- Other frills that have not yet been addressed: Bulk marking, carbon
- copies, twit filter, function key assigning. There are probably others.
- Feel free to bombard me with requests.
-
- No long file name support. Since QWK is a DOS thing, the only place I can
- see using it is for packet names (if the user renames it). Any ideas?
-
-
- ************************************************************************
- NOTE: READ.ME format has changed! Go to the BEGINNING of the file for
- the most recent changes!!!
- ************************************************************************
-
-