Short: GRn 2.0 - Gadtools Read News for UUCP and TCP/IP Uploader: mbs@adastra.cvl.va.us (Michael B. Smith) Author: mbs@adastra.cvl.va.us (Michael B. Smith) GRn 2.0 - Gadtools Read News version 2.0 August 16, 1993 GRn is a fully-featured Intuition based Newsreader for the Amiga running 2.04 or above. GRn works with AmigaUUCP, with C News, with TCP/IP using the C= socket.library (via NNTP), with DNet, with direct-connect serial connections, and with NFS mounted news partitions. GRn requires release 2.04 of AmigaDOS, and works with 2.1, 3.0 and 3.1. Copyright 1992, 1993 by Michael B. Smith. Copyright 1991, 1992 by Michael H. Schwartz. All Rights Reserved. No warranties, express or implied, are available. Use at your own risk. The authors have taken pains to attempt to produce quality software, but by no means are we liable for anything it does. (TODO list at bottom) GRn 2.0 now: works properly on 2.04, 2.1, 3.0 and 3.1 automatically depth arranges custom screens when required uses the same text in requesters everywhere removes files from T: when using NNTP has more modularized code no longer crashes when a file isn't in news article format has the busy pointer set when Subscribing fails if NNTP startup fails is *much* smarter about screen and window sizing uses LESS THAN 1/2 the memory of 1.16f doesn't have problems with NNTP/socket.library startup doesn't have problems with Gadtools on 3.0 and 3.1 has custom memory allocation routines that make it run much faster starts up faster no longer assumes that the user's grnrc has not gotten corrupted no longer assumes that Path:, Subject: and From: are valid doesn't leave a hanging signal when CTRL-C'ed handles errors from socket.library correctly strips NNTP messages properly and NNTP operations are now enhanced adds a References: header when following up to the first message in a thread has Cancel working with NNTP has all I/O AmigaDOS based has had all known Enforcer and Mungwall hits removed, including one due to an AmigaDOS FGets() bug deals properly with empty newsgroups supports sockser.device and dnet.device in a system-friendly manner updates gadgets properly when subscribing has been completely ANSI-fied sorts the displayed newsgroup list prior to allowing the user to subscribe implements the SUBSCRIBE keyword implements the "Rescan News" button sets GTLV_Selected for the current article implements ROT-13 support with CTRL-X (no mouse equivalent) is not case-sensitive when scanning message headers is now case-insensitive when sort-by-subject implements Hide-Read messages -- this is the default has a friendlier crosspost message shows the first newsgroup after subscribing displays the error number when a posting error occurs sets GTLV_MakeVisible for V39 and above systems has been prepared for localization closes the custom screen when a low-memory abort occurs no longer requires the UULib: assign generates MIME headers for all mail messages and news articles implements the DISCARD option, such that read article do not have an entry written to the user's grnrc -- reduces startup time and memory usage of GRn presumes that if the user-defined nodename has a period in it, it is a FQDN and the domainname is ignored prefixes a period to the user-defined domainname if it doesn't begin with one when using socket.library NNTP, the hostname (FQDN) is obtained from socket.library, and the user may not override those variables implements NNTP authentication has an improved grn/8 font does double click timing according to user preferences immediately observes a Hide Read request sets the busy pointer whenever the user's grnrc file is saved, or the newsgroup status information is updated does not have memory leaks when a file was Published or a message is mailed; and all temporary files are removed consolidates all ASL activities and has been prepared for an ASL screenmode requester asks the user whether they wish to post a README as part 0 of a Publish'ed file treats an empty file name as an abort condition in Publish uses the following algorithm: /* ** SetWhoAmI ** ** Try to reasonably setup the string used for the From: and ** Submitted-By: headers. ** ** Finding the hostname is unreasonably complicated because ** AmigaUUCP and Amiga C News and socket.library do not use the ** same set of environment/configuration variables to set the ** hostname. ** ** The following precedence is used for determination of the ** originating hostname: ** ** 1) If node is set, and domain is set, then the ** originating host is the concatenation of those ** two strings. If domain does not begin with a ** period, one is added. ** ** 2) If node is set, and domain is not set then the ** originating host is the node IF the node contains ** a period. If the node does NOT contain a period, ** then .UUCP is appended, and that becomes the ** hostname. ** ** 3) Domain is not referred to any farther. ** ** 4) If node is not set, the mygethostname() is called ** which should return the fully qualified hostname ** from whatever networking software is in use (currently ** it calls the socket.library gethostname()). ** ** 5) If mygethostname() failed (returns < 0), then host ** is used to set the hostname. ** ** 6) If host is not set, we abort. ** ** RealName and userName are used as they always have been. */ has shift-cursor-right do "Next Group with Articles" has shift-cursor-left do "Previous Group" implements the BugAddress environment variable for specifying the email address to send bug reports sorts the newsgroup list after a subscribe uses a safer, Intuition friendly, method for locking out user input when a requester is displayed has the Save and Print command set the busy pointer, and display the "fuel gauge" requester immediately after filename selection has all requesters look alike implements the "_mark" button to allow a message to be marked as unread prefers the NNTPSERVER command over HOSTNAME updates the window title after each article is displayed allows an empty UULib:Config file displays a message when retrieving the newsgroup list from an NNTP server sets the busypointer when sending mail or posting news uses 32-bit values everywhere treats "re:" and "Re:" as equivalent when sorting by subject recognizes requester shortcuts per AUISG recognizes ESCape as a NO synonym in all requesters implements SCANALL to scan all files in subscribed newsgroups during startup (to be used with CNEWS and UPDATERC) updates the article status display after Catchup updates the group status display after Junk respects scrollable public screens and does not require that all of the window fit in the display clip sets up Gadgets per AUISG standards allows a TOP and LEFT specification of zero centers the status bars in Article and Group mode enforces a minimum window size of 620x200 implements '0' as a synonym for 'C'atchup in Article Mode implements a guick move feature in subscribe mode implements HOST, USER=NAME and REALNAME as parameters and tooltypes; not just environment variables implements the same keyboard shortcuts for Subscribe as are present in Article Mode only retrieves the newsgroup file from an NNTP server once displays a fuel gauge if more than 5 articles have to be processed in a newsgroup at startup implements the NOSCAN parameter only activates requester windows when the original window was active no longer opens commodities.library properly parses boolean options from its icon allows its window to be resized implements the NORESIZE parameter to disallow resizing GRn still doesn't: implement KILL files have localization features have an ASL screen-mode requester have a "Mark Mode" support XPK or UMS support a Unix-standard .newsrc have an Iconify option directly support MIME messages have menus