Things to change in snews 1.91 (93-08-23 DTF)
---------------------------------------------
modify expire so it:
- just displays groups & sizes with -l (list) or -d (display) switch
- defaults to taking expire times for each group from a config file 
- uses Expires: lines to expire old articles (easy)
- uses Supersedes: lines to expire old articles (more difficult)
- uses Control: messages to cancel articles (more difficult)
- allows -i interactive switch switch to interactively delete articles (no need
for iexpire program then)
Careful when implementing these, though!  The article numbers will no longer
match those in the users' .nrc files.  Maybe replace deleted articles in the
middle of a newsgroup with an pseudo-article like this:
	Newsgroups: group.name
        Distribution: local

	This article is not available.
(What happens to reply and other commands when operated on this article?)

fix limitation in expire so only that group currently being expired is removed
from the history file (err on the side of expiring so a cross-posted article
won't ever stay in history forever)
 - in expire, expire history as normal
 - in expirei, expire history to the second days on the command line

expire should require a parameter in the group name field when using the -e n
option

change .nrc file to newsrc format, or at least compress it

allow personal.rc loading if only UUPCNEWS and USER or LOGNAME environment
variables are set -- look up passwd file in UUPCSYSRC directory to find home
dir of USER/LOGNAME and therefore personal.rc

when saving files to disk from snews, don't expand tabs (not easy)

Allow editing of all article headers with the message & signature (make this
an option in the .rc file)
- alternatively, look for lines at the top of the message which look like
part of the header (i.e. no spaces before a colon, blank line before body
text) and ask the user to "Merge header lines in body with header (y/n)?"

Fix reading RFC-1036 headers which wrap over to another line

Followup articles should go to all groups in Newsgroups: line, not just current
group
 - assume groups not in ACTIVE file are ok to post to
 - make sure article is stored immediately to all cross-posted groups

Articles to a moderated group should be mailed to the Approved: header address
(make sure cross-posts work correctly to moderated groups, too)

Header parsing when posting should happen at post time -- this will allow 
unlimited References:, Newsgroups:, etc.

add MIME headers to outgoing messages
 - start with Content-Transfer-Encoding: 7bit or 8bit, depending on body
contents (this might not be accurate -- 7bit might actually be quoted-printable
and 8bit might actually be binary)
- if 7bit, assume character set is US-ASCII
- if 8bit, use the CharSet= variable in .rc file to choose character set
(default is no charset= on Content-Type line)

found a post with X-Charset: ISO-8859-1 -- could support this, but how long
will this type of header be around?

If MIME-Version: is found, then "default Content-Type: is text/plain; charset=
US-ASCII"; Content-Transfer-Encoding: defaults to 7bit
- make sure to check headers for 8 bit characters, too.

Could add Content-Length:, but is there a need?

add base64 and quoted-printable text display on a line-by-line basis by
adding a function mime_decode_line(char *, enum mime_decode_types) and
piping its output to display_line()

add text/simplemail decoding function display_simplemail(char *) which calls
translate_line()

if MIME-Version: is found, assume US-ASCII character set unless otherwise
specified (this doesn't really buy anything, though, except maybe in multipart
messages, and even then it might not be right)

Allow quotation marks around charset="xxx" in Content-Type: header

allow editing of the entire article, including headers

change post_sequence() to use sopen() with O_RDWR and SH_DENYRD and SH_DENYWR

add keys to go to top & bottom of screen (thread & group selection)

add mouse support

more time efficient storage of article headers (like snews /2)

modify character set support to load the correct mapping tables for the current
code page from disk at run time

have SNews actively select the most appropriate code page for each article

add F4 to pipe entire thread at thread selection level

add support for mapping arbitrary ~/ file names in pipe command

Display the word MIME in the bottom right hand corner of the screen when the
MIME-Version: header is found (or when an unsupported content-type is found)

display the character set in use when the F3 key is hit to change char set

change smartcmp() to kill trailing spaces so thread subjects with trailing
spaces are added

add 'k' command to mark the current thread as read (from thread selection and
article reading modes).

add command to mark all threads to this point as read (catch up to current
thread)

add command to toggle display groups/threads from all to just those with
unread articles

allow user to specify if file is to be saved in mailbox format or not

allow user to specify alternate mailer to use for replying to articles
(Mailer= variable in config file)

add command-line option to snews for "safe" mode; disallows !, |, 's'

add command-line option to snews to select code page (-p n) -- good for users
with a new code page, or terminal users

fix unbatch so it uses the length after #! rnews nnn instead of just looking
for the #! rnews line (or at least check that nnn is a number).

fix unbatch so it doesn't add an extra line at the end of every article

make sure articles ending with CR/LF lines are processed correctly (i.e. strip
off CR on every line) -- unbatch

maybe change enum exit_codes and other enums to typedefs

add variable to select posting log file (post.log)

move all posting operations into another program, pnews (may not be worthwhile)

unbatch should uncompress with spawn() instead of system() and look at the
return code

allow esc key to abort thread loading

only save the .nrc file if new articles have been read (or 'c'aught up)

add article 'C'ancel command (generate Control: message)

support 43 lines (actually n lines) and perhaps 132 columns (or n columns)

have a toggle key to go between the group name and group description, stored
in a newsgroups file

do something with ctrl-break instead of ignoring it

add Tass-like keys (from tass source)

allow three config files to all be read -- uupc.rc, snews.rc and personal.rc

Add option to use domain name in Path: line (maybe PathName=name.to.use.in.path
where the special word domain means to use the domain name, not uucp name)
- better yet, just allow user to override Nodename= in the snews.rc file with
whatever he wants to go into the Path line (that will work, right?)


Bugs (very conservatively defined as such)
------------------------------------------
fix bug when sending mail with a " in the Subject:

see if expire bug still exists that deletes the original newsbase name even
before the new newsbase is written

fix bug that *appears* to eat memory after Aborting during posting (maybe
not aborting, too) (was this fixed with the open file bug? probably)

fix file name input routine to work when RAW is on

fix bug in unbatch that appears to truncate to 1 blank line mega collosal large
(12000 line) articles (I see no reason this didn't work, though)
