Binary Newsreader (BNR) for OS/2

Version 1.25
©1996,1997 Ralf Christen


Table of contents


1.0 Environments

The software was tested under OS/2 Warp 3 (Base, FixPak 17, Fixpak 22), OS/2 Warp 3 Connect (Base) and OS/2 Warp 4 (Base).

1.1 Warp 3 - FixPak 17

There is a general problem after installing Fixpack 17 that focused windows are displayed BEHIND all other windows or some dialog windows remain gray. This is an OS/2 problem and NOT a BNR problem. IBM opened an APAR for this problem which has number PJ21838. This is fixed in FixPak 22.

1.2 Warp 3 - FixPak 22

Users report that BNR works just fine with fixpak 22 installed. The window problem mentioned above, is fixed in FP 22.

1.3 Warp 3 - Connect

Warp Connect users should have fix pack IC12657 installed.
Click here to get the fix pack. Be sure to read part 1.5 of this documentation.

1.4 Warp 4 - Merlin

BNR works just fine with Warp 4. There are no special fixes needed. Be sure to read part 1.5 of this documentation.

1.5 TCP/IP 3.0

BNR uses a TCP/IP interface called RXSOCK.DLL which has been published as a part of the IBM EWS-program (Employee written software). Version 1.3 of this interface is included in the BNR package. However, if you should have TCP/IP for OS/2 installed (is part of Warp Connect and Warp V4) you have a newer (and slightly faster) 32-bit version of this DLL. Thus, you can delete the BNR delievered 1.3 version. The BNR 'About' screen then should show you Version 2.0 of the TCP/IP interface. Please note that this is the version of the DLL and NOT the TCP/IP version number.


2.0 Decoder software

You need an UUE-Decoder and a BASE64/Mime-Decoder installed. I suggest to use the combinded UUE- and BASE64/Mime-Decoder UUDEVIEW, written by Frank Pilhofer (which is my favourite decoder).
I have seen that it is much better to use a text-based Decoder (such as UUDEVIEW) because they don't pop up every time BNR calls them to decode an article (which takes you the keyboard/mouse focus away). If you use a combined UUE/BASE64 decoder, you should enable the 'General decoder' checkbox on the 'Decoder' page of the configuration notebook.


3.0 The newsserver

BNR supports up to 2 newsservers. You can configure them in the configuration notebook. There is also a checkbox called 'Use XOVER NNTP command' on this page. XOVER is an extended NNTP command which gives direct (and fast) access to subject headers. BNR uses this command to retrieve the subject headers from your newsserver. However, some newsservers don't support this command and you have to deselect this option. BNR then uses the slower XHDR command. Because we have to submit 3 XHDR commands to get all relevant information, you will notice that the red progression indicator goes from 0 to 100 percent three times.

How do I know if my server supports XHDR? Try to get a subject list with XOVER enabled. If there are no articles found, you should disable this option.

Some newsservers DO support XOVER but they use a different implementation. This can produce scrambled subject lists. In that case, you should also disable the XOVER commands.

If you want to try other public newsservers, you should visit the site at http://login.eunet.no/~kjetilm/news.htm which contains a directory of public newsservers.

3.1 Import/Export newsgroups

BNR can import and export NEWSRC compatible UNIX newsgroups files. This allows you to synchronize your subscribed newsgroups across different newsreaders or even platforms. The import and export functions are available on the menubar of the newsgroups manager.


4.0 Getting started

Perform these simple steps to get started after you copied the BNR files into a new directory and started the software the first time:
  1. Select 'Create desktop folder' from the 'Configure' Pulldown menu. This creates the necessary desktop objects for you.
  2. Go through the configuration notebook and modify your personal settings. Each notebook page contains a short function description. You should complete at least the two pages 'Decoder' and 'Servers'. All other pages contain acceptable default values you can use for your first start. If you use the recommended combined decoder software UUDEVIEW, you can enter the following decoder command: UUDEVIEW.EXE -i +d -p D:\DOWNLOAD % where D:\DOWNLOAD is the path you want to have the decoded files saved.
    Please note, that you can enter your own name on the 'Register' page without being registered. This information is used to reply to or post articles. After this, close your notebook. Chapter 5.2 contains a detailed description of all notebook settings.
  3. Go to the newsgroup manager and download the list of all available newsgroups (-> Load all). Please note that there is also a 'flat' newsgroup manager (-> Editor) if you should not like the hierarchical (tree) manager. There, you can subscribe to a newsgroup with a simple cut/paste operation of the newsgroup name. If you should have an other newsgroup reader which is able to export NEWSRC compatible files (such as NR/2) you can import this NEWSRC file into BNR without reloading the entire newsgroup list.
  4. After restarting the newsgroup manager, select (subscribe to) the newsgroups you want to work with, using the 'Add' button.


5.0 Normal work

Here's how you work with the BNR (after downloading the list of all available newsgroups):
  1. Get the newsgroups status to have an overview of the number of unread articles (Ctrl+S)
  2. Select a newsgroup from the drop-down-list. This will download the headers of all unread articles for this newsgroup (It's also possible to directly enter the name of a newsgroup in the drop-down-list. This receives the headers and automatically subscribes to this newsgroup). If you want to cancel this process for some reason, you can hit the 'ESC' button or select 'Stop newsgroup load' from the 'File' pulldown menu.
  3. A doubleclick marks an article to be downloaded as the first (or only) part. If there are multipart articles you want to connect, mark the second, third etc part using the right mouse button (a popup menu comes up) and then 'select subpart'. If you have the 'automatic subpart detection' feature enabled, BNR will automtically search for subparts and mark them for you (strongly recommended).
  4. Press Ctrl+R to receive the selected articles (or press the button located at the upper right corner of the window). This puts the selected articles to the receiver job queue and downloads/decodes them automatically while you can select the next few articles...
  5. Mark the articles you have seen 'as read' (Ctrl+M)

Please note:

5.1 Using the timer

There is a timer feature which is located on the menubar of the receiver job queue window. With this feature, you can

Please note:

5.2 The configuration notebook

Filters
"Filters" are used to select articles containing a specific piece of text. You can use them to drop unwanted articles headers which do not contain a required text (GIF, JPG, BMP, ZIP etc). That's a very effective way to reduce the number of received article headers to those you really want. The option "Override at runtime" allows you to override them prior to download the subject headers. A small popup window will come up at runtime where you can enter enter different filters for this specific download.

On the second page you can specify the maximum number of article headers you want to receive at a time. The remaining article subjects are not lost; you can get them after marking the received article subjects 'as read'. Use this options if you have very large newsgroups which use too much time or memory. Another option allows to specify the minimum number of text lines an article must contain. BNR doesn't display articles having less lines than specified. Be aware: It is possible to suppress the (small) last part of a multi-part article when specifying a minimum number of lines. The disabled option "Eliminate crossposted articles" isn't available yet.
It is possible that BNR receives slightly more or less articles than specified in the value mentioned above. This is because a newsserver only delivers an estimated value of available articles. BNR reduces the number of the highest article number to match the maximum number of articles to load. If the estimated value received from the newsserver was not correct, the result can slightly differ.

Blocker
On this page you can maintain a list of e-mail identifications of authors you want to exclude (block) from your subject list. Articles from one of those authors won't be displayed on the screen. You can also add an author to the blocklist using the Ctrl+B command on the main window. There, you'll add the author of the currently selected article to the blocklist. You can also add generic E-Mail IDs to the blocklist. They must have the format *@myhost.net. This would exclude all posts submitted by an E-Mail address at myhost.net.

Hangup
This command is used to hang up when "Hangup now" or "Hangup after download" is selected on the main window. If you are connected to the Internet through a network (a leased line), you just can ignore this. Usually, the hangup command tells the dialer to hang up.

Decoder
These commands are used to decode the UUE- or BASE64-coded downloaded articles' content. Substitute a '%' for the name of the file to be decoded. A valid command could be 'DECODER.EXE -d %'. If you have a decoder which is able to decode both UUE- and BASE64-coded articles (such as UUDEVIEW) or if you want to write your own batchfile to decide which decoder shall be used, you can enable the "General decoder" option. If you have this option enabled, BNR doesn't analyze the received data, which can be slightly faster. Furthermore, BNR never calls the editor to display unrecognized articles. If you want to do so, you can select "Remove received articles from list". This removes received articles immediately from your subject list. If you do not select this option, received articles get a "REC" marker. You shouldn't remove downloaded articles from your list if you want to reply to one of them. You can automatically mark downloaded articles 'as read'. They won't be displayed the next time you reload the headers of this newsgroup (or they already have a "REC" marker). However, from time to time, you still have to mark the entire newsgroup 'as read' (up to a certain article number) to mark all unwanted articles as well.
If you use UUDEVIEW, you can use the following command: UUDEVIEW.EXE -i +d -p D:\DOWNLOAD % where D:\DOWNLOAD is the path you want to have the decoded files saved.
There is one more variable available: The %N decode the articles of different newsgroups to different subdirectories.

Encoder
This command is used to encode binary files you are uploading (posting) to a newsserver. Substitute a '%' for the name of the file to be encoded. If you do not want to upload your own binary files using the BNR you can ignore this page. UUE is the only supported encoder type.

Servers
You can specify the names of two newsgroup servers. They are used as a primary and alternate (backup) server. You can specify the name of the server or the IP-adress (in the format nnn.nnn.nnn.nnn) of the server. In the first case, BNR will ask the TCP/IP defined nameserver for the appropriate IP-address of your newsserver. If your newsserver doesn't listen at port 119, you can specify a different port using a server address like 'myserver.net:nnn' where nnn is your new port number. The option "Use XOVER NNTP command" should be checked if your server supports the XOVER command. If you can receive a correct subject list with XOVER enabled, you can leave it that way. If you get an empty (or scrambled) list, you can disable XOVER (which enables the usage of XDHR). For a detailed description see Chapter 3.0 'The newsserver'.

Posting
This information is used when sending (posting) articles to the server. Enter your real Mail-ID here! Your registration name is automatically added to your Mail-ID: "ralf.christen@ibm.net" gives ralf.christen@ibm.net (Ralf Christen)". If you want to have replies to a different address, you can specify this address in the "Reply to" field. If you want to have the name of your organization in the header information of your article, you can enter this in the "organization" field. The field "Timezone" is to specify the timezone of your location. Usually, you refer to the next known timezone (such as GMT, EST etc) and specify the appropriate offset (GMT+1, EST-1 etc). You can use test newsgroups (alt.test) to test your postings.

Prompt
If you receive an article which cannot be decoded, (neither UUE nor BASE64), you can display the content on the screen, using an editor of your choice. This function is used to display non-binary articles (maybe an announcement of an upcoming binary file) which contain text. Because BNR is a binary newsreader, this shouldn't be the usual case. However, there are 3 options: "Always display", "Display if automatic hangup is disabled" (to avoid the display of many articles while being in unattended mode) and "Never display". Valid OS/2 editor commands can be "E.EXE", "EPM.EXE" or any oder OS/2 editor which is currently installed on your system.

Register
Here's the place to fill in the registration information you have received from the BMT Micro Shareware Registration. If you have questions on how to register, see Chapter 9.0 'Registration'.

Display
You can use the OS/2 functions to customize to following objects of the BNR screens:

Select a font from the OS/2 font list and drop it on one of the objects mentioned above. The BNR will save those fonts and automatically reloads them after restarting. BNR also saves the size and position of both windows. If you want to restore the original size, you can press the "Restore window size" button on this screen. You should use the Binary Newsreader on a 1024x768 display.

Logon
Some servers require a user identification and password to log on. If you want to connect to one of those servers, you can enter the logon information on this screen. Newsservers of access providers do not require a login, because they test your IP adress to grant access. In that case you have to leave the fields blank!

Options
The BNR can ask you if you really want to quit. There are two options "Confirm leaving BNR" and "Confirm leaving BNR with jobs in queue" to enable this function. If you want to have a copy of the receiver job queue saved to disk, you should enable "Save reciever job queue to disk". Then, you can terminate and restart the BNR anytime and continue working with your receiver queue. Sometimes, the receiver task can fail due to a communication or server error. A "watchdog timer" checks the active connection every few minutes and restarts a failed receiver job.
On the second page you can enter the name of the Web Browser you want to use for actions such as sending mail, reading the documentation or going to web pages.

Logging
If you are processing scripts, you do not want the BNR to display error messages in a message window. There are several logging options available when processing BNR scripts:

If you want to have an error log in a ASCII file, you have to specify the output logfile you want to use. If you select to use an external logging utility, you must specify the exact command to call this utility. Substitute a '%' character for the message to be logged. Example: To use the LOGGER.EXE utility which is part of the SYSLOG package written by Jochen Friedrich, you can enter C:\SYSLOG\LOGGER.EXE -t BNR %

5.3 Performance Considerations

Be aware, that some options impact the performance of your BNR
OptionImpactWhen
Eliminate crossposted articlesCPUReceiving headers
Mark received articles 'as read'HarddiskPut articles into queue
Use of XOVER disabledLineReceiving headers
Save receiver queue to diskHarddiskWhenever the queue changes

Important: If you mark received articles automatically 'as read' you should reorganize the BNR.MRK file from time to time. The BNR.MRK file is a OS/2 INI-file which can grow very fast and slow down the entire BNR work (heavy disk work when pressing the RECEIVE button). Because the OS/2 INI-file management still hasn't an effective algorithm to reduce deleted records you have to do this manually using a utility software such as INIMAINT. In some cases, this reduces the BNR.MRK file size by 90%. This also applies to BNR.INI.


6.0 Starting the BNR

6.1 Command line parameters

There are some command line parameters you should be aware of:
/Dstarts BNR in debug mode. Use this function if you have to submit an error report after one of these symptoms:
- BNR closes after an error without further information
- OS/2 issues SYS3175 (GUI problem).
/CSconnects automatically to the newsserver after starting and gets the newsgroup status.
/I=Specify a different path for the internal BNR work files. The example /I=D:\DATA tells BNR to put the work files to the D:\DATA directory. Use this in a Client/Server environment (to force saving personal work files on the clinet) or to connect to different access providers with different newsservers.
/RRestarts a reloaded receiver queue automatically when starting BNR.
/SRemoved since V1.20
/CRemoved since V1.25

This is the complete syntax diagram:
BNR.EXE [/D] [/CS] [/I=datapath] [/R] [script.bsc]

6.2 Using an automatic Dial-Up Connection

If you want the dialer to connect to your service provider when starting the BNR, you can add the BNR to your desktop as follows (replace d:\path with the path where you have BNR installed):

6.3 BNR Work files

BNR uses the following work files which are created automatically:
BNR.INIConfiguration settings, subscribed newsgroups
BNR.GRPPlain ASCII-file of all available newsgroups
BNR.MGPPlain ASCII-file of top level hierarchy of all newsgroups
BNR.MRKSingle marked articles
BNR.QUEPlain ASCII-file of the saved receiver job queue

You can redirect the path of those files using the /I command line parameter.


7.0 Scripts

BNR supports a simple script language which enables you to automate often used downloading procedures. You can do almost everything with a script you can do manually. Currently, there are no 'logical components' such as IF-THEN-ELSE or things like DO-WHILE etc in this script language. That's why a BNR script is always processed sequentially (top down). However, I think it's a nice tool to get binaries from selected newsgroups automatically.

7.1 Create a BNR script

I decided not to build a separate BNR script editor; therefore you have to use an OS/2 editor such as E.EXE or EPM.EXE to write a BNR script. A BNR script always has an extension of .BSC (which means Bnr SCript) and is stored in the same directory where BNR is located. I strongly recommend to use long filenames (on a HPFS disk) because this gives a nice description of your script for free. A valid BNR script filename would be 'My_first_script.BSC'.

7.2 Script command syntax

A BNR script contains script commands; always one command per line. And here is the complete list of commands (in alphabetical order):

CONNECT n
Doesn't really connect to your newsserver but selects your server where 'n' can be 1 or 2. 1 means your primary server, 2 means your secondary server. If you omit 'n', you select your primary server.

END
This command ends the script immediately. Use it you want to end script execution within a script.

EXECUTE pgm parms
The EXECUTE command provides a handy way to execute OS/2 commands while processing scripts. The following command example can be used to call the PKZIP packer: EXECUTE D:\PACKER\PKZIP.EXE PICS.ZIP E:\DOWNLOAD\*.JPG
If you want to use an internal OS/2 command (such as DIR, COPY or TYPE), you have to call the CMD.EXE program like this: EXECUTE CMD.EXE /C COPY E:\DOWNLOAD\*.JPG A:

FILTER f1 f2 f3 f4 f5 f6
The FILTER command overrides the 6 filters defined on the 'Filter' page of the configuration notebook. If you omit one or more of the 6 possible filters, they are blanked out and not in use.

GOTO xxx
Jump to the script line containing the label 'xxx' which has been defined using the LABEL command.

GROUP xxx
Switches to the newsgroup 'xxx' and receives the list of subject headers. You can even switch to newsgroups you are not subscribed to.

HANGUP
Just hangs up using the 'Hangup' command specified in the configuration notebook.

LABEL xxx
This command defines a label 'xxx' which can be reached using the GOTO or ONERROR command.

MARKREAD
Marks all articles in the article list 'as read'. This command must be after a GROUP command because it marks all articles as read that have been loaded using GROUP.

MESSAGE xxx
You can send your own message to the BNR logfile or to your external logging utility (see the 'Logging' page of the configuration notebook). Use this command to write additional information to your log; error messages issued by BNR are being logged anyway.

ONERROR xxx
This command defines to go to the label 'xxx' if we encounter a problem during script processing. The label must be defined using the LABEL command. If you omit the label 'xxx', BNR ignores errors and continues with the next script line.

PAUSE
This command suspends the execution of your script and returns control to the BNR. You can continue or stop the execution using the appropriate options on the menubar (-> Scripts).

QUIT
This ends the script and quits the BNR immediately without further notice.

RECEIVE
Puts the selected articles to the receiver job queue. This command must be after one or more SELECT commands because it receives the articles evaluated by SELECT.

SELECT xxx yyy zzz ...
This selects articles to download from the subject headers which contain the string 'xxx' AND 'yyy' AND 'zzz' in their subject or author-id. You can specify as many strings as you want. If you have the 'auto subpart detect' feature enabled (what I recommend), this also selects all subparts to download. Be sure NOT to mark subparts; this will the mentioned 'auto subpart feature' do for you; therefore you should include a SELECT like '1/'. Please note that the parameters of this command are NOT case sensitive. This command must be after a GROUP command because it processes article headers received by GROUP.

TRACE ON|OFF
You can turn on the script trace using the TRACE ON command which enables logging of every script command. Use TRACE OFF to turn the command logging off.

WAIT
Waits until the receiver job queue is empty and all articles have been received. You can stop the execution of WAIT using the appropriate option on the menubar (-> Scripts). Issue a WAIT command after a RECEIVE but before a QUIT, END or HANGUP command.

7.3 Examples

Here's an simple script example:

CONNECT 1Select the primary newsserver
GROUP alt.binaries.picturesSwitch to alt.binaries.pictures
SELECT .JPG 1/Select all 1st part JPG files
RECEIVEPut them to the receiver job queue
MARKREADMark them 'as read'
GROUP alt.binaries.pictures.natureSwitch to alt.binaries.pictures.nature
SELECT sunset 1/Select all 1st part sunset pictures
RECEIVEPut them also to the job queue
MARKREADMark them 'as read'
WAITWait until all articles have been received and the queue is empty
HANGUPHang up

And here's an example with error processing:

MESSAGE The script starts nowSend a message to the log
CONNECT 1Select the primary newsserver
ONERROR ERRLABEL1Define the error exit label 1
GROUP alt.binaries.picturesSwitch to alt.binaries.pictures
SELECT .JPG 1/Select all 1st part JPG files
RECEIVEPut them to the receiver job queue
MARKREADMark them 'as read'
GOTO RECEIVE2Jump to label RECEIVE2
LABEL ERRLABEL1This is the error exit label 1
MESSAGE Error in alt.binaries.picturesSend a message to the log
LABEL RECEIVE2Define the label RECEIVE2
ONERROR ERRLABEL2Define the error exit label 2
GROUP alt.binaries.pictures.natureSwitch to alt.binaries.pictures.nature
SELECT sunset 1/Select all 1st part sunset pictures
RECEIVEPut them also to the job queue
MARKREADMark them 'as read'
GOTO WAIT-FOR-ENDJump to label WAIT-FOR-END
LABEL ERRLABEL2This is the error exit label 2
MESSAGE Error in alt.binaries.pictures.natureSend a message to the log
LABEL WAIT-FOR-ENDDefine the label WAIT-FOR-END
ONERRORIgnore errors
WAITWait until all articles have been received and the queue is empty
HANGUPHang up

7.4 Execute a script

There are four ways to start a BNR script:


8.0 Frequently asked questions (FAQ)

Where are the decoded binary files stored ?
That depends on the settings of your decoder software. BNR only downloads articles and calls the decoder.

Where are the text files stored ?
Downloaded UUE or BASE64 articles are stored in the BNR directory with names like ARTnnnnn.TMP and are deleted after the decoding process. Plain text articles remain there.

My decoder does not work (but it's configured correctly)

  1. BNR is stored in a 'long-filename-directory' but your decoder cannot process long path/filenames
  2. Your decoder needs its INI/DLL file but can't find it. You should put your decoder into the BNR directory
  3. BASE64 decoders can have problems if the original name of the binary file is not specified correctly in the downloaded article. There's nothing you can do about this (except a decoder which asks you for the original filename)

How does the automatic subpart detector work ?
This feature automatically finds and marks subparts (articles which are made of more than one part) after you have doubleclicked the first part. Usually, their headers contain some text, indicating the sequence of this part and the total number of all parts (eg 01/05 means part 1 of 5). BNR recognizes subject headers which contain the following strings as a first-part article: '(1/' or '(01/' or '[1/' or '[01/'. Of course, the number behind the slash must have a value other than 1 otherwise it would be a single-part article. BNR starts with its search with the article following the marked 1st part and automatically stops if all parts have been found. If it reaches the end of the list it restarts from the top down to the 1st part. If some subparts are missing, a message is displayed.

How can I unmark an article which I have marked to download ?
You can unmark an article with a simple doubleclick. If it's already in the receiver job queue, you can use the 'Delete entry' function on the menubar. However, you cannot delete the entry being received right now. In that case, you have to stop the receiver job queue, delete the entry and restart the queue.

How does the BNR determine if we have a UUEncoded or a BASE64 article?
UUEncoded files do have a string like 'begin nnn' at the beginning of a new line. BASE64 articles must have the keyword 'base64'. However, if you have selected to use a 'general decoder', BNR doesn't determine the coding scheme.

Will there ever be a Windows 95 version of this software ?
No.

What the hell am I doing here?
You're reading the documentation


9.0 Registration

You have 50 trial usages. After this (if you like the software), you must register. The registration fee of this software is US$ 25.

There are many ways to register:

How to pay: Please have this information ready:


10.0 Support and new versions

10.1 BNR on the Internet

10.2 Known problems and limitations

Don't change your newsserver after you have received the list of articles or BNR will try to get the selected articles from the wrong server. This produces errors like "412 not in a newsgroup", "423 no such article number in this group" or "430 no such article found".

The progress bars do not adjust when resizing the window


11.0 Version history

Version 1.00 (released May 8th, 1996)

Version 1.01

Version 1.05 (released May 28th, 1996)

Version 1.10

Version 1.11 (released June 20th, 1996)

Version 1.20 (released January 20th, 1997)

Version 1.21 (released February 15th, 1997)

Version 1.22 (released March 8th, 1997)

Version 1.25 (release June 8th, 1997)


©1996,1997 Ralf Christen, ralf.christen@ibm.net
Last modified June 8th, 1997