Items which are showstoppers for the next major release are marked with '!'
in front of them (feel free to up/downgrade and/or add bugs, this file is
not read only ,-).

Bugs
----
o  a wrong usename in ~/.newsauth can't be corrected in the first
   pass
   [20050816 Urs Janssen <urs@tin.org>]

o  can 'V'iew mime-parts with (illegal) encoded filename, e.g:
   | Content-Type: image/jpeg;
   |  name="=?iso-8859-1?Q?internationales_Zeichen_f=FCr_Ehe.jpg?="
   | Content-Disposition: attachment;
   |  filename="=?iso-8859-1?Q?internationales_Zeichen_f=FCr_Ehe.jpg?="
   as tin treats the leading '=' as mailbox indicator and complains
   | Save filename for image/jpeg is a mailbox. Attachment not saved
   [20050203 Urs Janssen <urs@tin.org>]

o  unexpected multiline responses confuse tin, e.g.:
   | 240 Article posted =?ISO-8859-1?Q?=3C=3D=3Fiso=2D8859=2D1=3Fq=3F=3F=3D87r7k8na?=
   |   =?ISO-8859-1?Q?vt=2Efsf=40urs=2Did=2Etest=2Eka=2Enu=3E?=
   (the servers response should be a single line (INN 2.2))
   [20050207 Urs Janssen <urs@tin.org>]

o  fast/endless reconecction loop after a "200\n\r400\n\r" greeting,
   see
   <nntp://news.tin.org/Pine.LNX.4.61.0411190338000.24950@avenger.apcoh.org>

o  rot13-toggle '%' doesn't work in raw '^H' mode (but isn't disabled, so
   the info message in the last line is wrong).
   [20041125 Urs Janssen <urs@tin.org>]

o  AFAICS change_config_file() currently has a static return value,
   but some callers do check the return value and in case we did
   change something we should update (global) attributes accordingly.
   [20030511 Urs Janssen <urs@tin.org>]

o  Changes to int/bool tinrc variables in the Option Menu don't propagate
   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. Fix the problem properly in config.c by
   flashing changes to all affected groups and remove the reread of the
   attributes file from select.c

o  'C'atchup in pager is still not correct (we don't ever enter the next group)
   [20030515 Urs Janssen <urs@tin.org>]

o  piping/printing articles grabbles screen
   [20030501 Urs Janssen <urs@tin.org>]

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
   [mostly done]
   [Jason Faultless <jason@altarstone.com>]

o  batch mode has several bugs
   - -Z and giving a cmd-line group ends up in a loop
     (filters each group several times, ~25 times slower as without a
      cmd-line group) and the cmd-line group is not displayed in the
      statistics nor taken into account for the 'any unread news' status.
   - -vc could be more verbose (like -vcZ is)
   - -cZ has an unclear return value (shall we return 0 or 2 if there
      was unread news before -c marked it as read?)
   - -o currently is not a 'batch_mode' option
   [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@altarstone.com>]

o  add version number to other config-files (e.g. tin.defaults)
   and do the same checks as for TINRC_VERSION/tinrc. for the
   filter (and attributes) file also store the editor offset (different
   languages do use different headers) and the filter method used
   (wildmat or regexp) and the charset the file is written in (e.g.
   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 rest of the current thread
     read and jumps to the next unread article. should we let 'K' behave
     like <TAB> in the pager?

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

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

o  overview file cacheing code is over-complex
   - cache the original overview info instead of rebuilding it from
     the processed (decoded etc.) data, no matter if it's broken (e.g.
     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 (after unfolding and tab removal).
   - Add docs to explain how to create system-wide overviews

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

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

Pager Problems
--------------

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

New features
------------
o  allow remapping of the 'z' abort-key (lynx style) in wait_for_input().

o  add user defined screen layout at different levels
   [20041025 Urs Janssen <urs@tin.org>]

o  add TLS, NNTPS support
   (see draft-ietf-nntpext-tls-nntp-09.txt;
    <http://www.gnu.org/software/gnutls/>, <http://www.openssl.org/>
    might be useful;
    "stunnel -c -d 1119 -r news.example.org:563; tin -g localhost -p 1119"
    can be used for NNTPS)
   [20031210 Urs Janssen <urs@tin.org>]

o  make 'GNKSA'-parser RFC2822/USEFOR compliant

o  add In-Reply-To threading for mailgroups
   [20030518 Urs Janssen <urs@tin.org>]

o  make auto'S'ave also work for inrange articles/threads(/groups)
   (unfortunately 'S' at select level is used for something else)
   [20030508 Urs Janssen <urs@tin.org>]

o  sub-parse message/rfc822 messages (might occur in mail-groups)
   [20030310 Urs Janssen <urs@tin.org>]

o  turn ask_for_metamail into $MM_NOASK support (see metamail(1))
   [20030314 Urs Janssen <urs@tin.org>]

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

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

o  allow bold, underline, italic, ... as colour substitution for
   monochrome terminals (map green=underline, italic=yellow)
   (see also
   <nntp://news.tin.org/20020416202232.A4575@bloatware.reston01.va.comcast.net>)
   [20030218 Serge Matveev <sm@cl.spb.ru>]

o  hierarchical 'M'enu, e.g. put all art_marked_*into a 'submenu', ...
   [20020322 Urs Janssen <urs@tin.org>]

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

o  add postpone option for mail-actions;
   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  should the postponed 'file' (and posted messages 'file') be in
   mailbox_format (even if that's a one file/message format, thus
   the 'file' actually needs to be a directory?).

o  add maildir/maildir++ support (besides MBOX{O,RD} and MMDF},
   MH (not only reading but also writing), mailstore, BABYL, Kendra (MMDF
   like with 20*CTRL-A as sep.), MBX (indexed MBOX from UW-IMAP) and add
   man-pages for the various 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,
    <http://www.washington.edu/imap/listarch/2000/msg00363.html> for MBX)
   [20020215 Urs Janssen <urs@tin.org>]

o  add $LOCKEXT support
   [20030611 Urs Janssen <urs@tin.org>]

o  add xxencode (<http://www.ctan.org/tex-archive/tools/xxcode/xxdecode.c>),
   base224 (<http://b-news.sf.net/>), xBin <http://www.xbin.org/> and
   yenc (hide/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 "Face:" (incompatible "X-Face:"-replacement) support?
   [20040107 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 easily 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  add counter to post-processing commands (processing file x of y)
   (Is post-processing really that slow? [Jason Faultless
   <jason@altarstone.com>] no but if you post-process more than a
   handful of files it would be useful [Urs Janssen <urs@tin.org>])

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

o  check if servers high mark is lower than 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. (see note in rfc2046.c)
   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 than the server's high-mark don't trust them (and
   discard the locally cached data).

o  attributes (still) needs some work, some entrys aren't really useful
   on a per group basis but others would (e.g. 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 attributes (e.g. From)
   [Urs Janssen <urs@tin.org>]

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 e.g. fr.* but avoid them in e.g. de.*
   [20020910 Urs Janssen <urs@tin.org>]
   See doc/config-anomalies for other candidates that should move to
   attributes
   [20030303 Dirk Nimmich <nimmich@muenster.de>]

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.
   check for gethostbyaddr_r()/gethostbyname_r() and use them instead
   of gethostbyaddr()/gethostbyname() if available.

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  check if server supports 'LIST MODERATORS' and/or 'LIST DISTRIB.PATS' and
   if it does parse the output so it can be shown to the user. (e.g. when
   posting to a moderated group, show the moderators mail-address, but still
   leave the mailing to the server; if the group has limited distribution
   inform the user, ...)

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

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

o  unify Fcc and posted_articles_file
   [20031012 Dirk Nimmich <nimmich@muenster.de>]

o  MIME-pgp support according to RFC 2015, RFC 3156 - (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 feature Cc:

o  add feature show_new_newsgroups_since

o  add new key which taggs articles based on a prompted regex, could be used
   for GROUP_MARK_THREAD_READ,PAGE_MARK_THREAD_READ,THREAD_MARK_ARTICLE_READ
   and/or something like GROUP_SELECT_THREAD/THREAD_SELECT_ARTICLE which
   works on tagged arts (the later might be usefull in conjnction with
   GROUP_MARK_UNSELECTED_ARTICLES_READ)
   [20051110 Urs Janssen <urs@tin.org>]

o  Additions to the thread menu:
     'D'  (cancel article)
     ']'  (GLOBAL_QUICK_FILTER_KILL)
     '['  (GLOBAL_QUICK_FILTER_SELECT)
     'r'  (reply to) /* not 'R' cause it conflicts with mail_bugreport */
     ''   r should be toggle show all/show only unread
     'f'  (post a followup) (maybe also 'F', '^W', ...)
     'N'  (next unread article)
     'P'  (previous unread article)
     '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)
     '='  (mark pattern as hot)
     'Y'  (check for new articles in thread)
     '%'  (toggle rot13 encoding of screen content)
     'x'  (repost)
     keys to go to previous/next thread

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

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

o  Add to the 'M'enu:
     'h'  (GLOBAL_HELP)
     'R'  (GLOBAL_BUGREPORT)
     '!'  (GLOBAL_SHELL_ESCAPE)
     and maybe a way to changed built in path like DEFAULT_MAILER, PATH_PGP, ...

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

o  Add a commandline switch (-V) that prints out all values of cpp-symbols
   etc. [partly done, but should be cleaned up]

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).
   [done: /etc/tin/tinrc] 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  (g)oto group is case sensitive (note that MH mailgroups might
   contain uppercase chars)
   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 read_overview() more forgiving of errors. If the article # is okay,
   then there is no reason to completely hide the article
   [Jason Faultless <jason@altarstone.com>]

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

o  add check for libbzip2/zlib (>=1.1.4)/[mini]lzo
   (<http://sources.redhat.com/bzip2/>, <http://www.gzip.org/zlib/>,
    <http://www.oberhumer.com/opensource/lzo/>) and add an
   option to write/read {g,b,l}zipped local overviews.
   zlib, libbzip2 and lzo 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.

o  rewrite/cleanup all the debugging code; clearly seperate the debugging
   levels, e.g.: NNTP=0x01, FILTER=0x02, NEWSRC=0x04, MEMORY=0x08,
   ALL=0x0f

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 e.g.:
    (?:\.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 group_get_art_info()
   to allow posting to groups other than those in newsrc.

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

Filtering enhancements
----------------------
o  add spamassassin interface when ever adding body filters

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> (or <days>) 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  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 currently tagged articles

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

o  integrate multi-part tagging with regular tagging, eg.
   "This article appears to have multi-parts, try and find them (y/n)?"

o  add Content-Language (RFC 3282) analysis

o  suppress hide_uue=2 checking unless first line in an article or following
   a blank line

Internal Changes
----------------
o  move serveral (server related) files into the per-server dir
   e.g.:
      ${TIN_INDEX_NEWSDIR-"${TIN_HOMEDIR-"$HOME"}/.tin"}/.news${NNTPSERVER+"-$NNTPSERVER"}/
   should be
      ${TIN_INDEX_NEWSDIR-"${TIN_HOMEDIR-"$HOME"}/.tin"}${NNTPSERVER+"/$NNTPSERVER"}/.news/
   [20050807 Urs Janssen <urs@tin.org>]

o  make article numbers uint_least64_t (on OSs where possible), provide
   usefull fallbacks if system doesn't have <inttypes.h>/<stdint.h>
   [20050728 Urs Janssen <urs@tin.org>]

o  upgrade configure-script to autoconf-2.59
   [20050728 Urs Janssen <urs@tin.org>]

o  remove untranslateable constructs like txt_prefix_*
   [20050413 Urs Janssen <urs@tin.org>]

o  merge tinrc.space_goto_next_unread, tinrc.tab_goto_next_unread and
   tinrc.pgdn_goto_next into a single option list
   tinrc.goto_next_unread = {SPACE, TAB, PGDN,
                             SPACE | TAB, SPACE | PGDN,
                             TAB | PGDN, SPACE | TAB | PGDN}
   to shorten 'M'enu and tinrc.
   [20050709 Urs Janssen <urs@tin.org>]

o  keys which could be renamed/merged:
   - 'm' GroupMail, PageMail, PostMail, ThreadMail
   - 'N' GroupNextUnreadArt, PageNextUnreadArt, (SelectNextUnreadGrp)
   - 'S' GroupAutoSave, PageAutoSave, ThreadAutoSave
   - 'P' GroupPrevUnreadArt, PagePrevUnreadArt
   - '@' GroupReverseSel, ThreadReverseSel
   - '~' GroupUndoSel, ThreadUndoSel
   [20050408 Urs Janssen <urs@tin.org>]

o  read_overview() calls eat_re() which strips the "Re: " out of the
   subject. the modified subject ist used for batch_mode opperatios (-N/-M)
   which might not be what ppl. expect and eat_re() is the only function
   which needs the 'regex' overhead in batch_mode... (see also the note
   about "Re: "strpping at "Filtering enhancements").
   [20050225 Urs Janssen <urs@tin.org>]

o  use new_nntp_command() instead of nntp_command() in the rest of the
   code (where usefull; if we do a global change, rename it to
   nntp_command()). see check_extensions() for a sample usage.
   [20050211 Urs Janssen <urs@tin.org>]

o  replace various occurrence of "US-ASCII" by DEFAULT(_MIME)_CHARSET
   and define that to "US-ASCII" (to make 'updates' easier).
   [20040929 Urs Janssen <urs@tin.org>]

o  add configure option for slrnface
   [20030506 Urs Janssen <urs@tin.org>]

o  get rid of CURR_GROUP, use t_group instead
   create a global t_group *CURR_GROUP instead of the current macro
   reduce dependencies on my_group[] & selmenu outside of select.c
   [20030501 Urs Janssen <urs@tin.org>]

o  clean up $AUTOSUBSCRIBE code (the NNTP code path is a mess)
   [20030412 Urs Janssen <urs@tin.org>]

o  try to get rid of the magic numbers like NUM_MIME_CHARSETS and use
   a sentinel in the arrays instead (match_list is a showstopper here).
   [20030203 Urs Janssen <urs@tin.org>]

o  check where joinpath() should be used; check joinpath() for overruns.
   (e.g. grep for TMPDIR in the source)
   [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[]? (long, see memory.c:init_alloc()~102)
   There is a lot of confusion internally over how it is used
   compare setup_hard_base() with find_base() etc..
   [Jason Faultless <jason@altarstone.com>]

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

o  check where NEWSRC_FILE should be used in lang.c instead of "newsrc"

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

o  check where iKeyAbort should be used instead of ESC (etc.pp.)
   (AFAICS all fixed except prompt.c and read.c/'z')
   [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 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
   - 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/>)
   [Urs Janssen <urs@tin.org> - its4 <http://www.rstcorp.com/its4>, rats
    <http://www.securesw.com/rats/> and flawfinder
    <http://www.dwheeler.com/flawfinder/> can locate potential security
    holes]

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

o  add to autoconf:
   - 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 Makefile

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
   (e.g. char = 1 byte with 32 bit)

o  cleanup post.c

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@altarstone.com>]

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@altarstone.com>]

o  what is with NEW_HASH_METHOD in list.c?

Unicode
-------
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 (RFC 2152) (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;
    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 (e.g. mm_local_charset=UTF-8) this is a
   fault. [mostly done for ncursesw]

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 (GB2312, Shift_JIS,
    ISO-8859-6[-{I,E}], ISO-8859-8[-{I,E}]), ISO-8859-11, VISCII, VIQR;
    check wether KOI8-RU is still used/valid)
   [done except configure check 20010907 urs@tin.org]

o  make mm_network_charset an user configurable item list
   ("US-ASCII:ISO-8859-1:ISO-8859-9:ISO-8859-15:UTF-8",
    "US-ASCII:ISO 8859-5:KOI8-R:UTF-8",
    "EUC-CN:ISO-2022-CN:ISO-2022-CN-EXT:Big5:UTF-8", whatever)
   and try all given charsets in order till the one is found which matches
   best (i.e. can display most (all) of the chars in the article).
   [20050805 <urs@tin.org>]

o  add IDNA support (RFC 3490ff.)
   (<http://www.gnu.org/software/libidn/> might be usefull)
   (added minimalistic IDNA decoding support if a recent libidn is found, urs)
   [20030917 Urs Janssen <urs@tin.org>]

o  add normalization
   (via <http://oss.software.ibm.com/icu/> or
   <http://www.gnu.org/software/libidn/>)
   (done for search strings)
   [20031209 Michael Bienia <michael@vorlon.ping.de>]

Docs/online help
----------------
o  review the turkish, russian and kinyarwanda translations
   (tr.po, ru.po, rw.po)

o  add installation guide (in html)

o  add cross-compilation hints
   	CC="crosscc" LD="crossld" AR="crossar" RANLIB=":" MAKE="crossmake" \
   	./configure --with-build-cc=gcc --with-build-cpp=cpp \
   	--target=cross-traget-tripple --without-x # usual configure flags

o  better document keymap feature

o  man page always needs work and proof reading
   e.g. 'U', 'V' in pager need better documentation, random organization
   feature isn't documented at all.

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

o  replace "\\" by "\e" in manpages (portable?)

Not yet classified
------------------
o  in several places only the latest keybinding is shown in prompts
    (e.g. "q=quit, e=edit, i=ispell, g=pgp, M=menu, w=post, o=postpone: w"
     with "PostPost	p	y	w" in keymaps)
   should we try to show them all?
   [20050718 Urs Janssen <urs@tin.org>]

o  add PGP_INCLUDE_KEY to pgp_mail_keys?
   [20050426 Urs Janssen <urs@tin.org>]

o  there is no command to undo a range ('#') selection

o  'article loss' reported in
   <nntp://news.tin.org/20020915165856.GA1541@martinkl.dialup.fu-berlin.de>

o  should 'tin -z foo.bar' only start up if there is any unread news in
   foo.bar?
   [20040325 Urs Janssen <urs@tin.org>]

o  trn and perls Net::NNTP::Auth use ~/.nntpauth (format is
   "^server\s+user\s+password"), shall we also try ~/.nntpauth if we can't
   find a matching entry in ~/.newsauth?
   [20040128 Urs Janssen <urs@tin.org>]

o  what todo if in a CTE: x-uue the CD: filename differs from the one given
   in the begin line? IMHO we should use the one from the begin line for
   saving and in the overview in the pager.
   [urs@tin.org]

o  inverse_okay's Menu description isn't accurate (invers is also used for
   URL highlighting). mono_mark* do allow "Reverse video" even if
   inverse_okay=FALSE.

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

o  move tinrc.defaults for certain comands 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 needed? IMHO this can be
   dropped, '&' can be used for runtime color toggling.
   [20021106 Urs Janssen <urs@tin.org>]

o  -G doesn't "work" in the !NNTP case, shall we disallow it in that case
   or shall we try to implement it?
   [20030421 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> which is last@localhost,user@accou.nt
   should we try to fix things and quote the realname part?
   [20021007 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 dropped 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.12.1

o  clean up included pcre stuff (pcre/Makefile.in)
   [20050608 Urs Janssen <urs@tin.org>]

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 e.g. strip_blanks=ON && inverse_okay=ON
   looks ugly?

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

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 tinrc.strip_blanks? IMHO it's not needed anymore
   [20020305 Urs Janssen <urs@tin.org>]

o  doesn't handle symlinks for .oldnewsrc
   (see <20021003021508.GA28021@akk10.akk.uni-karlsruhe.de> for details, urs.
    if we're going to 'fix' this we must be careful to avoid symlink
    attacks (<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-1999-1091>)
   [20020627 Jeff Sheinberg <jeffsh@erols.com>]

o  cleanup main.c/init_selfinfo()
   ('strace -e trace=file tin' and/or 'ltrace -e getenv tin' and you know
    what I mean)
   [fixed some of the double/tripple reads, urs]

o  either use libinn(3) where ever it's possible inside the code (if
   configured to use that lib) or drop support for it.
   [20030511 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>]
