Bugs
----
o  changing thread_articles in the thread-level might trigger
   assertion in show_thread_page() -> the thread display code and logic
   needs complete rewriting.
   [20020514 Michael Bienia <michael@vorlon.ping.de>]

o  when p'|'ping multiple files ('T'agged) screen is defaced
   [20020305 Urs Janssen <urs@tin.org>]

o  running multiple tins in parallel (each connected to a different
   server) will trash all newnews=timestamps (and other configchanges)
   except the last form the formerly running tins on quit.
   same problem with .oldnewsrc
   [20020215 Mario Holbe <Mario.Holbe@RZ.TU-Ilmenau.DE>]
   having $NNTPSERVER[:$NNTPPORT]-subdirs (or something defined via an extra
   field in newsrctbl) below .tin-dir for each server (and port) would be a
   good solution.

o  $NNTPSERVER is only appended to $TIN_INDEX_NEWSDIR if -g cmd-line
   option is used, we should change that and always append it to avoid using
   a wrong cache after changing $NNTPSERVER...

o  attributes are ignored for mail-actions (except mail_to_author()) cause
   mail_loop() doesn't know the group we are in.
   [20020211 Andreas Metzler <tin-dev@downhill.at.eu.org>]

o  posting with --enable-break-long-lines and !7bit chars in From:
   doesn't work if encoded line is > 76 chars (gnksa-check doesn't
   allow \n in From)
   [20020212 Urs Janssen <urs@tin.org>]

o  The "time remaining" is not only updated on the screen when it
   changes, but constantly, leading to a very slow behaviour on a
   modem link.
   [20020203 Sebastian Bork <sebi@sebi.org>]

o  mailing_list attribute is ignored on no posting servers in select level
   [Urs Janssen <urs@tin.org>]

o  'u' etc.pp. may leed to a 'crash' due to which_thread() returning -1
   if no (unread) articles are left. which_response() exits in that case,
   not very userfriendly.
   [20010905 Urs Janssen <urs@tin.org>]

o  incorrect nested boundaries in multipart articles hang tin
   [20010804 Urs Janssen <urs@tin.org>]

o  reusing p'o'stponed articles in mailing_list groups doesn't work
   (possible fix: store Newsgroups (and other infos) via msg_add_header()
    (to overwrite any old values) in X-Tin-Postponed:-header and remove it
    before posting.)
   [20010623 Urs Janssen <urs@tin.org>]

o  reference based filters won't work with long (> 500 chars)
   References: lines
   (this might be due to the shortening of the line done by tin, i.e
    if one has a filter based i.e on the 5th oldest message-id and the
    line get's much longer by the time that id might be removed by
    tin and the filter won't work anymore)

o  batch mode has several bugs
   - -S, -Z, -N and -M cmd-line switches are broken (again)
     -S doesn't create subdirs, thus saving fails
   - -Z and giving a cmd-line group ends up in a loop
     (filters each group several times)
   - -M/-N do not remove To:, Cc:, Bcc: headers befor passing article
     to MTA (would require article parsing *sigh*) nor do they wrap
     the article into message/rfc822.
   [Urs Janssen <urs@tin.org>]

o  libuu code doesn't start viewer
   include basic library source in tin for uudecoding
   (<http://www.fpx.de/fp/Software/UUDeview/>)
   [Urs Janssen <urs@tin.org>]

o  '-s' cmd-line switch implicitly changes 'savedir' in tinrc
   [Urs Janssen <urs@tin.org>]
   Is -s supposed to affect all save operations? What about attributes?
   Might get away with simply setting glob_attributes->savedir
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  fix check_upgrade() (config.c)
   - check if TINRC_VERSION is 'older' (mismatch and not newer) as in the
     config file, give a warning and the possibility to quit without saving
     config file
   - check if TINRC_VERSION is 'newer' (already done) and give a warning
   - use a 'config option' in tinrc for version number instead of
     'hardcoded' strings
   [Urs Janssen <urs@tin.org>]

o  add version number to other config-files (i.e. attributes, filter,
   tin.defaults, keymap) and do the same checks as for TINRC_VERSION/tinrc
   for the filter-file also store the editor offset and the filter method
   used (wildmat or regexp) and the charset the file is written in (i.e.
   ISO-8859-x vs. unicode)
   [Urs Janssen <urs@tin.org>]

o  'K' is still a bit inconsistent
   - in the group and thread menu it marks current item read & jumps to the
     next unread item.
   - in the article pager (page.c) it marks the whole current thread as read
     and jumps to the next unread article. 'c'/'C' already does this better.
     should we let 'K' behave like <TAB> in the pager?

o  Changes to int/bool tinrc variables in the Option Menu don't propogate
   back to the attributes, not even groups with global attributes.
   This is because the Option-Menu in {group,page}.c doesn't reread the
   attributes, whereas select.c does. It might be better to fix the problem
   properly in config.c by flashing changes to all affected groups.

o  rewrite code to use INEWS_PATH instead of INEWSDIR
   [20021007 Urs Janssen <urs@tin.org>

o  if posting with external inews fails fall-back to built_in_inews would be
   good if running in nntp-mode
   [Done. But the read_news_via_nntp && !read_saved_news is unclear. Why can't
    you post or must use external inews if you read_saved_news?]
   [read_saved_news doesn't require a NNTP connection but the build in inews
    can't post the the local spool. urs]

o  remove built in path of external commands (metamail, ispell, ...)
   [for metamail/ispell $METAMAIL/$ISPELL could be used to override
    systempath and progname]

o  overview file cacheing code is over-complex and broken in places
   - if cache-dir is removed during the session it's not recreated
   - cache the original overview info instead of rebuilding it from
     the processed (decoded etc.) data, no matter if it's broken (i.e.
     contains raw 8 bit data) as we have to deal with that anyway. if there
     are no original overviews, cache the original data from the postings
     headers.

o  tin uses the first sig-isolator as recent one, USEFOR says it should
   use the last. There is no consense that tin should follow this USEFOR
   requirement.

o  iso2asc conversion is missing for 'internal' strings (i.e. 'M'enu)
   [20020319 Urs Janssen <urs@tin.org>]

Pager Problems
--------------
o  lines which are exatly cCOLS wide introduce an extra \n in the pager
   in raw mode (^H)
   [20010628 Urs Janssen <urs@tin.org>]

o  word_h_display_marks=0 doesn't work for the !USE_CUSRSES case
   [20020720 Urs Janssen <urs@tin.org>]

o  raw mode loses (illegal) chars in multibyte based groups
   [20021006 Michael Bienia <michael@vorlon.ping.de>]

o  lines > 1024 bytes will lose at least 1 byte (in multibyte mode it seems
   to depend on the number of multibyte-sequenes) at the forced wrap after
   1024 bytes.
   [20021102 Urs Janssen <urs@tin.org>]

Posting Problems
----------------
o  remove Message-IDs with 8bit chars in them when they occur in
   Message-ID or References header
   [done for References in replies/followups, Urs]

o  repost ('x') ignores ~/.tin/attributes - bug or feature?!

o  forged cancelling via Supersedes:/Also-Control:/Control:-header is possible
   if it is supplied by hand (inews_prog=--internal)

o  when last articles in a newsgroup were cancelled, it shows that there are
   new articles in that group (except when using -n cmd-line flag)

o  mailers other than sendmail (f.e. elm) and use_mailreader_i=OFF may lead
   to 'duplicated'-headers and multiple signatures

o  with --enable-forgery reposting of a thread reposts only the first
   article ('x' 't' 'r' <group> 'p')

New features
------------
o  instead of exiting when tin fails to get the systems domainname fall
   into no posting mode (and issue a warning).
   [20021125 Urs Janssen <urs@tin.org>]

o  add new cmd-line flag to force 'no_posting' mode
   [20021125 Urs Janssen <urs@tin.org>]

o  automatically disable TeX2ISO conversion if saving articles _and_
   postprocessing is set to != 'n'
   [20020423 Urs Janssen <urs@tin.org>]

o  add underline/bold/... support (i.e. for monochrom terminals
   as color substitution)
   [20020326 Serge Matveev <sm@cl.spb.ru>]

o  add bold-italic, bold-underline, italic-underline, bold-italic-underline
   word highlightings.
   [20020721 Urs Janssen <urs@tin.org>]

o  fetch overview data in chunks (i.e. 100 arts/chunk) to allow
   faster read interruption.
   [20020326 Dirk Nimmich <nimmich@muenster.de>]

o  hierarchical 'M'enu, i.e. hide all color_* options as long as
   use_color is turned off, put all art_marked_*into a 'submenu', ...
   (currently the menu is statically build on compile time)
   [20020322 Urs Janssen <urs@tin.org>]

o  add a postponed 'browser' (store postponed arts in
   MH or maildir format to make things easyer?)
   [20020305 Dirk Nimmich <nimmich@muenster.de>]

o  add postpone option for mail-actions
   [20020404 Urs Janssen <urs@tin.org>]

o  add base224 (<http://b-news.sf.net/>), xBin <http://www.xbin.org/> and
   yenc (decode-)support (see <http://nerv.cx/liyang/software/yydecode/>
   for readable code, ignore the crap on <http://www.yenc.org/>). also
   check <http://www.exit109.com/~jeremy/news/binaries/> which might
   replace yenc etc.pp. some day.
   [20020216 Urs Janssen <urs@tin.org>]

o  add maildir support (besides MBOX{O,RD} and MMDF} and maybe
   MH (not only reading but also writing), mailstore, BABYL, Kendra (MMDF
   like with 20*CTRL-A as sep.) and add man-pages for the varius formats.
   (see <http://www.ifi.uio.no/~larsi/notes/BABYL> for BABYL,
    <http://www.qmail.org/man/man5/maildir.html> for maildir,
    <http://www.qmail.org/man/man5/mbox.html> for MBOXCL and MBOXCL2)
   [20020215 Urs Janssen <urs@tin.org>]

o  turn CA_ERROR_SPACE_IN_NEWSGROUPS, CA_ERROR_NEWLINE_IN_NEWSGROUPS,
   CA_ERROR_SPACE_IN_FOLLOWUP_TO, CA_ERROR_NEWLINE_IN_FOLLOWUP_TO into
   CA_WARNING_s (see draft-ietf-usefor-article-06.txt 5.5) and mark them
   for removal in the future.
   [define FOLLOW_USEFOR_DRAFT to turn the mentioned errors into
    warnings. 20011226 Urs Janssen <urs@tin.org>]

o  support "Suggested Minimal Digest Format"
   <ftp://rtfm.mit.edu/pub/usenet/news.answers/faqs/minimal-digest-format>

o  add new threading method: thread by reference, but split threads on
   subject change
   [Urs Janssen <urs@tin.org>]

o  rewrite thread-method selection that users can easyly combine different
   threading methods (THREAD_SUBJ + THREAD_MULTI || THREAD_REFS +
   THREAD_MULTI || ...) - see also note in art.c
   [20011117 Urs Janssen <urs@tin.org>]

o  if there are no tagged but hot articles in the group make 'S' work on
   the hot articles instead of complaining about no tagged arts.
   [20010824 Urs Janssen <urs@tin.org>]

o  add key to toggle article and thread sorting preferences on the fly
   (like 'u' for threading)

o  add Content-Description evaluation for the part-overview in the
   pager

o  default_mailer_format should be extended to be able to
   give the interactive mailer the full article including all
   headers (useful for mutt -H). we could differ between
   %f (just body, headers must be given with %S, %T, ...)
   and %F (headers included in the body, useful for sendmail -t <
   "%F" etc.pp.)

o  add 'autoview' (spawn external viewer) 'autohide' (don't even show info
   about that part) for different content-types

o  better integrate saving of MIME/non-MIME articles when not using libuu
   MIME sections are saved by the 's'ave operations, uuencoded sections
   are saved as part of the postprocess backend
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  rewrite keymap stuff:
   Define what key should trigger what action and use function names instead
   of the old key defines. This allows to add more functionality more easily
   since you just have to add the new function in the code and to define a
   key in the keymap file that is bound to this function.
   [20020305 Dirk Nimmich <nimmich@muenster.de>]

o  check if servers high mark is lower as the one in users newsrc, if so
   issue a warning and allow the luser to reset the highmark in the newsrc
   to the servers 'l'ow or the servers 'h'igh mark or 'i'gnore it.

o  check if the articles Subject/From in the pager matches (minus
   whitespaces) the one on the overview file (if available) - if not
   issue a warning that the servers overviews seem to be broken. trust
   the headers, not overviews.
   do the same with the article numbers in the (cached) overview
   data (we already do this, but currently this will lead to article "loss").
   if they are higher then the servers high-mark don't trust them (and
   discard the locally cached data).

o  check if server supports HEADERS, if so use
   "HEADERS - Subject From Date Message-ID References Lines Newsgroups"
   instead of OVER or XOVER

o  make hide_uu a 3 way toggle for the attributes file (not tinrc).
      0 = don't hide uu-parts
      1 = hide full uu-parts incl. begin/end
      2 = hide uu-lines (might have many false positives)

o  add post_8bit_header, mail_8bit_header, post_mime_encoding,
   mail_mime_encoding to the attributes file to allow plain 8 bit
   header in i.e. fr.* but avoid them in i.e. de.*
   [20020910 Urs Janssen <urs@tin.org>]

o  join keep_posted_articles & keep_posted_articles_file into one option
   posted_articles_file=/path/to/file - don't keep arts if
   posted_articles_file is unset. join show_score/show_lines to show_infos =
   { nothing, lines, score, lines & score}
   [Urs Janssen <urs@tin.org>]

o  detect pcre version and add compatibility macros for old versions
   (interface has changed twice and might do so again)
   (leafnode comes with a (suboptimal) check)
   (is this still needed with the configure option for extern pcre?)
   [Urs Janssen <urs@tin.org>]

o  add 'make unproto'

o  add IPv6 support
   (add protocol independent wrappers which use IPv6 (functions)
    whenever possible).
   there are two small problems with the minimalistic IPv6 support which is
   currently in tin: when getaddrinfo() is used to get the name/ip of the
   newsserver it always uses DNS (gethostbyname()/gethostbyaddr() checked
   /etc/hosts first) and getaddrinfo() seems to have a (huge) delay in some
   cases. use getipnodebyname()/getipnodebyaddr() (if available) instead.

o  add cmd-line/tinrc-switch to fetch only headers of unread articles;
   in that case, make 'r' reading the rest of the articles
   [-G is a start]
   allow setting a per group limit via attributes

o  Add a trunc() function or something similar for shortening long strings
   like a group name to a fixed length ending in ... (like center_line does)
   for embedding into status messages.
   Maybe somehow merge with sized_message(), then you can use
   message(txt, trunc(group, 20)) etc.
   we now could use s{w,n}printf() to do that.

o  check if server supports 'LIST MOTD' (i.e. INN >= 2.0) and display
   it on startup.

o  if using "-n" commandline switch you can't subscribe to newsgroups not
   present in your newsrc - a simple check against the server
   [i.e. GROUP $newsgroup] would help - and if the server understands
    LIST NEWSGROUPS pattern (don't use XGTITLE, it will become obsolte) we
    could also fetch the description without loosing "-n" speed improvements;
    if the server understands LIST ACTIVE pattern we could also get group
    attribute (moderated, etc.)]

o  item_by_item_etiquette_warnings [compile-time?]
   (i.e. enable x-posts without f'up warning, disable long-sig warning)

o  Rather than Cc/Bcc, I'd like to see tin simply append the
   message to a mail folder, whose name is given by a setting
   in the (M)enu command, possibly overridden by the current
   setting of "record" environment variable. The folder would
   have to be locked using a convention that will hold off
   the various Unix mailer programs (see mbox(5), mmdf(5)).
   [append_mail() should do the trick]

o  MIME-pgp support according to RFC2015, RFC3156 - (should be easy now)
   and/or in the format that used by signcontrol/pgpverify (see also
   tinews.pl)

o  pgp-{6,7} support

o  add counter to post-processing commands (processing file x of y)
   (Is post-processing really that slow? [Jason Faultless
   <jason@radar.tele2.co.uk>] no but if you post-process more than a
   handful of files it would be useful [Urs Janssen <urs@tin.org>])

o  add feature Cc:

o  add feature show_new_newsgroups_since

o  Additions to the thread menu:
     'D' (cancel article)
     'E' (edit filter)
     'r' (reply to) /* not 'R' cause it conflicts with mail_bugreport */
     ''  r ought to be toggle show all/show only unread
     'f' (post a followup)
     'X' (mark all unread articles that have not been selected as read)
     ';' (mark unread arts as hot if >= 1 art in thread is hot)
     '+' (mark thread as hot)
     'Y' (check for new articles in thead)
     '%' (toggle rot13 encoding)
     keys to go to previous/next thread

o  Additions to the group menu:
     'Y' (check for new articles in group)
     '%' (toggle rot13 encoding)

o  Additions to the select menu:
     '%' (toggle rot13 encoding)

o  Add to the 'M'enu:
     DEFAULT_MAILER

o  Add to the POST_INFO-level:
     '?','/' search (partly done, currently only the displayed page is
                     searched which is not that useful)
     'h' help-screen

o  Add a commandline switch (-V) that prints out all values of cpp-symbols
   etc. [partly done]

o  Reorganize tinrc into related sections for easier editing
   e.g., Display, Posting etc.

o  A system-wide tinrc configuration file (to hold some defaults).
   A key code to reset to the system defaults
   Maybe a second file which could be used to force settings (eg
   inews & mailer) (tin.defaults [--with-defaults-dir] is a start)

o  attributes (still) needs some work, some entrys aren't really useful
   on a per group basis but others would (i.e. Reply-To)
   once we have a 'attributes-menu' we could remove most of the
   global 'attributes' set in tinrc and move them to a scope=*
   in attibutes (i.e. From)
   [Urs Janssen <urs@tin.org>]

o  (g)oto group is case sensitive
   also newsgroup names in the command-line are case sensitive
   better would be: check if they exist and if not ask if you would like to
   convert newsgroup name to lowercase
	[son_of_1036]
	NOTE: Possibly newsgroup names  should  have  been
	case-insensitive, but all existing software treats
	them as case-sensitive.   (RFC  977  [rrr]  claims
	that they are case-insensitive in NNTP, but exist-
	ing implementations are believed to ignore  this.)
	The simplest solution is just to ban use of upper-
	case letters, since no widespread  newsgroup  name
	uses  them  anyway; this avoids any possibility of
	confusion.

o  when From: only contains "First-name Last-name" tin strips the
   Last-name in group/thread/page-level
   [20020319 Urs Janssen <urs@tin.org>]

o  Bounce duplicate Message-ID's when the headers are read. This will
   make the threading code happier too.
   Make iReadNovFile more forgiving of errors. If the article # is okay,
   then there is no reason to completely hide the article
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  Merge the selection code with the range code. Having two similar methods
   of picking articles with similar goals is wasteful.
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  add check for libbzip2/zlib (>=1.1.4)
   (<http://sources.redhat.com/bzip2/>, <http://www.gzip.org/zlib/>) and
   option to write/read {g,b}zipped local overviews
   zlib, libbzip2 might also be used for post-processing.

o  add check for GPGME (<http://www.gnupg.org/gpgme.html>) and if found
   use it for pgp actions.

Posting enhancements
----------------------
o  sort Followup-To:/Newsgroups: after stripping doubled newsgroups and
   before checking if they are identical, if so, strip Followup-To: and
   use unsorted but stripped Newsgroups:-line only
   ulBuildArgv() would be good for this

o  if Newsgroups:-line has groups in it which are not present in the users
   active file ask the user if he wants to strip these groups from the
   newsgroups-line (N/y)
   do the same for Followup-To:

o  check if any valid groups are in the Followup-To:-line and if not inform
   the user and use Newsgroups: instead (at the start of post_response())

o  bring up a warning on a long Newsgroups: (>=5) line and
   force the user to confirm every single group he wants to post (or
   redirect followups to) in. (N/y)
   rewrite NGLIMIT handling (post.c) ulBuildArgv() would replace a lot of
   the current code
   (not just truncate Newsgroups:-line after the NGLIMITth newsgroup -
    or if we do so - give an extra warning to the user and give him the
    chance to reedit the Newsgroups:-line)

o  bring up a warning when trying to f'up into a binary group
   (use a regexp to detect binary groups i.e.:
    (?:\.binae?r|de\.alt\.dateien\.))
   (Warning, sending a followup to a binary group is undesired, post it
    anyway? N/y)
   [Urs Janssen <urs@tin.org>]

o  posting to a binary group should warn if no followup is set to another
   group/poster (you have not set a target for a possible discussion on your
   post, would you like to go on anyway? N/y)
   [Urs Janssen <urs@tin.org>]

o  when posting to a group containing uppercase-letters: bring up a
   warning: "Newsgroup-names should be all lowercase, correct it? (Y/n)"

o  Enhance -w to take newsgroup name as argument.

o  Enhance -n to take newsgroup name as argument and use vGrpGetArtInfo()
   to allow posting to groups other than those in newsrc.

o  add config option for (external) viewer for sohwing postings stored in
   keep_posted_articles_file
   [20021003 Michael Gerhards <HM-Gerhards@uni.de>]

Filtering enhancements
----------------------
o  add used filter-type to filter-file or filter-rule or use different
   filter files for wildmat/regexp

o  add command: mark all articles older/newer than <date> as read
   (useful when subscribing to a new group with high-traffic...)

o  fix kill/hot mechanism so that it is possible to match articles on
   arbitrary headers

o  don't strip "Re: " out of the subject before applying the filter on it

o  cleanup xref-filter (xref_score is no longer needed with score).

o  allow any given amount of days in default_filter_days not only
   {1, 2, 4} * 28 days

o  allow expiring filter entrys n-days after the last time they matched

o  add command to generate filter rules for all curently tagged articles

Internal Changes
----------------
o  change txt_select_comment to something like "Comment (optional) :"
   (and rename var).

o  - rename PageFirstPage2 to PageFirstPage and PageLastPage2 to PageLastPage
   - in page level Up2 ('k') does the same as PageNextUnreadArt ('N'), but
     Up ('^P') behaves different. shouldn't 'k' be named PageNextUnreadArt2
     here?
   [Urs Janssen <urs@tin.org>]

o  check where joinpath() should be used; check joinpath() for overruns.
   (i.e grep for TMPDIR in the source)
   [Urs Janssen <urs@tin.org>]

o  change '#define TMPDIR "/tmp/"' to
   '#define TMPDIR get_val("TMPDIR", "/tmp/")'
   (SUSV2 XBD Files: "applications are encouraged to use
    the contents of TMPDIR for creating temporary files rather than
    the specific name /tmp")
   [Urs Janssen <urs@tin.org>]

o  make configure look for strrstr() in libpub/publib.h
   [Urs Janssen <urs@tin.org>]

o  reorder several structs to avoid padding (see gcc -Wpadded)
   [Urs Janssen <urs@tin.org>]

o  what type is base[]?
   There is a lot of confusion internally over how it is used
   compare setup_hard_base() with find_base() etc..
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  check where PRODUCT should be used instead of tin_progname and/or "tin"
   [Urs Janssen <urs@tin.org>]

o  kick Hungarian notation
   [Urs Janssen <urs@tin.org>]

o  check where iKeyAbort should be used instead of ESC
   [Urs Janssen <urs@tin.org>]

o  use XGTITLE (if available) if -n cmd-line flag is present
   (see open.c)
   [Urs Janssen <urs@tin.org>]

o  close potential security holes:
   - change all system()/popen() calls to fork() and exec() calls
   - check where we should use snprintf() instead of sprintf()
   - check where we should use vsnprintf() instead of vsprintf()
   - check where we should use strncat() instead of strcat()
   - check where we should use strncpy() instead of strcpy()
   - check possible races with access()/link()/rename()/stat()/
                               unlink()/chdir()/fopen()/fstat()/open()/
                               opendir()/t_open()/tmpfile()
   - check getenv() results before using it
   [Urs Janssen <urs@tin.org> - its4 <http://www.rstcorp.com/its4>
    and rats <http://www.securesw.com/rats/> can locate potential security
    holes]

o  add a _-_ to the local part of the MSGID on a subject-change

o  add to autoconf:
   - determine which network libraries are needed
   - eradicate platform/compiler ifdefs

o  clean up architecture independent files, rename several defines,
   remove useless doubled defines

o  split tin.h/proto.h for better dependencies in make

o  check where int/long/... should be replaced by size_t, uid_t, mode_t,
   off_t, ...
   [Urs Janssen <urs@tin.org>]

o  add check for sizeof char, short, int, long, ...
   make sure that the code works even with 'uncommon' values
   (i.e. char = 1 byte with 32 bit)

o  cleanup (=rewrite) inews.c/header.c/thread.c

o  is art->inthread really needed, surely art->thread contains enough
   information
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  check where my_strncpy() or STRCPY() should be used
   or include OpenBSDs strlcpy(3) (and strlcat(3)) and use it.
   (<ftp://ftp.openbsd.org/pub/OpenBSD/src/lib/libc/string/>)

o  check code with Splint (LCLint) <http://www.splint.org/>,
   ccmalloc (<http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/>),
   MSS (<http://hem1.passagen.se/blizzar/mss/>) and
   valgrind (<http://developer.kde.org/~sewardj/>)

o  rewrite the tag code so that arts[].tagged becomes index in arts[]
   of next tagged article. num_of_tagged_arts becomes index of first
   tagged art. Traversing tagged arts becomes much easier & faster.
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  do real overview.fmt parsing - not only looking for Xref:full
   [Urs Janssen <urs@tin.org>]

o  strip Xref:-header if saving news in batch mode (-S)?
   [Urs Janssen <urs@tin.org>]

o  When reading local spool, assign the filehandle of the on-spool
   article directly to artinfo->raw. There is no need to take a local
   copy.
   [Jason Faultless <jason@radar.tele2.co.uk>]

o  what is with NEW_HASH_METHOD in list.c?

Unicode
-------
o  add RFC 1468/2237, RFC 1555, RFC 1922/1842 and RFC 1947 support
   (local_charset<->network_charset should allow this - anything else
    needed?)

o  add UTF-8 (unicode) support (RFC 2279)
   (see <http://www.cl.cam.ac.uk/~mgk25/unicode.html>)
   if we ever want to add UTF-7 (posting) support (I don't think
   this is needed) we have to encode it ourself (as iconv() might
   encode <, @, > which leads to illegal headers) or split headers
   into "encoding part" and "rest" ...
   [local_charset<-> UTF-8 which needs iconv() is added;
    UTF-8 as local_charset needs _much more_ work, see below.
    20010830 urs@tin.org]

o  make select/group/thread/page-level multibyte "safe". they all use
   strlen(), strncpy(), strncat(), snprintf() to build the screen - but
   in a multibyte environment (i.e. mm_local_charset=UTF-8) this is a
   fault. (this might require libutf8 for those systems which don't have
   wide-char/multibyte functions)
   [partly done for ncursesw 20010904 urs@tin.org]

o  make mm_network_charset an "option_list" to avoid junk input or
   undesired (UTF-1, UTF-7, UTF-16*, UTF-32*, UCS-2, UCS-4, ...) encodings.
   add configure check for the hardcoded charsets (try iconv_open(x,
   us-ascii) on each...) and disable those not available.
   (think about more network charsets, i.e. ISO-2022-JP-3)
   [done except configure check 20010907 urs@tin.org]

Docs/online help
----------------
o  add instalation guide (in html)

o  better document keymap feature

o  man page always needs work
   i.e. 'U', 'V' in pager need better documentation

o  error message when tin -uv and using XOVER is misleading

o  tin.defaults could use more documentation on manpage (tin.5)

Not yet classified
------------------
o  move tinrc.defaults for certain comds to a pre-filled .inputhistory?
   (if so, also move i_key_search_last there)
   [Jason Faultless]

o  what about -a cmd-line flag? is this really neaded? IMHO this can be
   dropped, '&' can be used for runtime color toggling.
   [20021106 Urs Janssen <urs@tin.org>]

o  commas in real-name might cause problems in mail-replys
   From: Last, First <user@accou.nt> (which is illegal) leads to
   To: Last, First<user@accou.nt> wich is last@localhost,user@accou.nt
   should we try to fix things and quote the realname part?
   [20021007 Urs Janssen <urs@tin.org>]

o  why are -A and -g disabled on M_AMIGA?
   [20020928 Urs Janssen <urs@tin.org>]

o  -R should work even if tin is compiled without NNTP_{ABLE,ONLY}
   [20020829 Urs Janssen <urs@tin.org>]

o  nuke $BUG_ADDRESS
   [20020226 Urs Janssen <urs@tin.org>]

o  what is with FOPEN_OPTS (VMS)? is it missing from ~50% of all
   fopen()-calls or can it be droped entirely?
   [20020821 Urs Janssen <urs@tin.org>]

o  setting TIN_HOMEDIR to a non-existent dir gives a "Filesystem full"
   error-message (but doesn't abort) instead of creating the dir. bug?
   feature? if the later we should give a more exact error-message.
   [20011112 Urs Janssen <urs@tin.org>]

o  check_article_to_be_posted() still need some cleanup
   (avoid setup_check_article_screen(&init);StartInverse();EndInverse();
    overhead)
   [20010629 Urs Janssen <urs@tin.org>]

o  update gettext stuff to > gettext-0.11.5

o  should the postponed 'file' (and posted messages 'file') be in MH-format
   if tin is running in MH-mode? (add MH to the allowed mailbox formats) if
   so we need to extend fetch_postponed_article().

o  check if fetch_postponed_article is MH seperator "safe"

o  --disable-inverse-video seems to be ignored - do we still need it?

o  tin in batchmode dumps core if getting a SIGINT, useful?

o  what is with conflicting tinrc settings? should we disallow those, or leave
   it to the user to realise that i.e. strip_blanks=ON && inverse_okay=ON
   looks ugly?

o  what is with DEBUG_NEWSRC_FIXME (not DEBUG_NEWSRC) in newsrc.c?

o  shows up cross-postings multiple times even if read once before getting
   a resync/reread active/newsrc-file

o  numbering of Hot articles is wrong after (post)processing them
   (6T 0A 0K -5H R)

o  think about group numbering in "only unread" display mode
   (using different numbers in show all/show only unread leads to some
    problems, f.e. group moving)

o  remove strip_blanks? IMHO it's not needed anymore
   [20020305 Urs Janssen <urs@tin.org>]

o  what about the INN_NNTPLIB stuff? does this still work or can it be
   dropped?
   [20021007 Urs Janssen <urs@tin.org>]

o  AFAIK the 'hardcoded' local charset stuff (--with-local-charset) is
   obsolete (at least the two windows charsets should be, IIRC cygwin now
   uses ISO-8859-1, haven't seen any other working windows 'ports'; the NeXT
   port seems to be dead). if this can be confirmed: remove the related
   code/files.
   [20021022 Urs Janssen <urs@tin.org>]

o  doesn't handle symlinks for .oldnewsrc
   (see <20021003021508.GA28021@akk10.akk.uni-karlsruhe.de> for details, urs)
   [20020627 Jeff Sheinberg <jeffsh@erols.com>]

o  figure out what the -l and -n cmd-line flags are good for if not
   running in nntp-mode and document it - if they have no meaning at all
   disallow them if tin is not nntp_able at all.
   [20021117 Urs Janssen <urs@tin.org>]

o  cleanup main.c/init_selfinfo()
   ('strace -e trace=file tin' and you know what I mean)
