"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "doc/TODO" between
tin-2.4.3.tar.xz and tin-2.4.4.tar.xz

About: TIN is a threaded NNTP and spool based UseNet newsreader.

TODO  (tin-2.4.3.tar.xz):TODO  (tin-2.4.4.tar.xz)
Items which are showstoppers for the next major release are marked with '!' 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 in front of them (feel free to up/downgrade and/or add or fix bugs, this
not read only ,-). file is not read only ,-).
Bugs Bugs
---- ----
o replying via email to an article with o replying via email to an article with
From: =?us-ascii?q?<a@example.com>,?= <b@example.org> From: =?us-ascii?q?<a@example.com>,?= <b@example.org>
will result in will result in
To: <a@example.com>, <b@example.org> To: <a@example.com>, <b@example.org>
[20141230 Urs Janssen <urs@tin.org>] [20141230 Urs Janssen <urs@tin.org>]
o get_respcode() doesn't handle the 401 response code. as we have to o get_respcode() doesn't handle the 401 response code. as we have to
skipping to change at line 51 skipping to change at line 51
o batch mode has several bugs o batch mode has several bugs
- -Z and giving a cmd-line group the cmd-line group is not displayed in - -Z and giving a cmd-line group the cmd-line group is not displayed in
the statistics nor taken into account for the 'any unread news' status. the statistics nor taken into account for the 'any unread news' status.
- -vc could be more verbose (like -vcZ is) - -vc could be more verbose (like -vcZ is)
- -o currently is not a 'batch_mode' option - -o currently is not a 'batch_mode' option
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o add version number to other config-files (e.g. tin.defaults) o add version number to other config-files (e.g. tin.defaults)
and do the same checks as for TINRC_VERSION/tinrc. for the and do the same checks as for TINRC_VERSION/tinrc. for the
filter and attributes file store the charset the file is written in tinrc, filter and attributes file store the charset the file is written
(e.g. ISO-8859-x vs. unicode) and for the filter file the filter method in (e.g. ISO-8859-x vs. unicode) and for the filter file the filter method
used (wildmat or regexp (or TRE)) used (wildmat or regexp (or TRE))
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o overview file caching code is over-complex o overview file caching code is over-complex
- cache the original overview info instead of rebuilding it from - cache the original overview info instead of rebuilding it from
the processed (decoded etc.) data, no matter if it's broken (e.g. 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 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 are no original overviews, cache the original data from the postings
headers (after unfolding and tab removal). headers (after unfolding and tab removal).
- Add docs to explain how to create system-wide overviews - Add docs to explain how to create system-wide overviews
skipping to change at line 103 skipping to change at line 103
[20140513 Urs Janssen <urs@tin.org>] [20140513 Urs Janssen <urs@tin.org>]
o remove Message-IDs with 8bit chars in them when they occur in o remove Message-IDs with 8bit chars in them when they occur in
Message-ID or References header Message-ID or References header
[done for References in replies/followups, Urs] [done for References in replies/followups, Urs]
o keep RFC 6532 in mind as parts of it will sooner or later make it into o keep RFC 6532 in mind as parts of it will sooner or later make it into
NNTP (sic!). NNTP (sic!).
[20120220 Urs Janssen <urs@tin.org>] [20120220 Urs Janssen <urs@tin.org>]
o repost ('x') ignores ~/.tin/attributes - bug or feature?! o repost ('x') ignores some ~/.tin/attributes
[IMHO a bug as settings like mailing_list are essential, Urs] [fixed for mailing_list, Urs]
o forged cancelling via Supersedes:/Also-Control:/Control:-header is possible o forged cancelling via Supersedes:/Also-Control:/Control:-header is possible
if it is supplied by hand (inews_prog=--internal) if it is supplied by hand (inews_prog=--internal)
o when last articles in a newsgroup were cancelled, it shows that there are 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) 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 o mailers other than sendmail (f.e. elm) and use_mailreader_i=OFF may lead
to 'duplicated'-headers and multiple signatures to 'duplicated'-headers and multiple signatures
New features New features
------------ ------------
o add configure check for cl_clear_secret() in libcanlock and CL_API_MAJOR,
CL_API_MINOR in canlock.h and if suitable prefer over bundled
libcanlock (--with-canlock).
[20190212 Urs Janssen <urs@tin.org>]
o allow per server cache_overview_files setting via serverrc. o allow per server cache_overview_files setting via serverrc.
[20180215 Urs Janssen <urs@tin.org>] [20180215 Urs Janssen <urs@tin.org>]
o add something like default_cmd_line_opts (acting like $TINRC) to serverrc?
precedence [low to high] = serverrc.def_cmd_line_opts, $TINRC, cmd-line?
[20190205 Urs Janssen <urs@tin.org>]
o if we extend serverrc it should also get some 'M'enu.
[20190205 Urs Janssen <urs@tin.org>]
o implement SAVE_APPEND_FILE_ALL ('A') and SAVE_OVERWRITE_ALL ('O') keys o implement SAVE_APPEND_FILE_ALL ('A') and SAVE_OVERWRITE_ALL ('O') keys
which just ask once if file(s) already exist (open_save_filename()). which just ask once if file(s) already exist (open_save_filename()).
[20170811 Urs Janssen <urs@tin.org>] [20170811 Urs Janssen <urs@tin.org>]
o add second pipe command when piping multiple articles to use one o add second pipe command when piping multiple articles to use one
pipe per article (currently it is one pipe for all). ':' could be pipe per article (currently it is one pipe for all). ':' could be
used as key (only in use at the pager where this feature doesn't make used as key (only in use at the pager where this feature doesn't make
sense). sense).
[20160412 Urs Janssen <urs@tin.org>] [20160412 Urs Janssen <urs@tin.org>]
skipping to change at line 226 skipping to change at line 238
[20030314 Urs Janssen <urs@tin.org>] [20030314 Urs Janssen <urs@tin.org>]
o fetch overview data in chunks (e.g. 100 arts/chunk) to allow o fetch overview data in chunks (e.g. 100 arts/chunk) to allow
faster read interruption. faster read interruption.
[20020326 Dirk Nimmich <nimmich@muenster.de>] [20020326 Dirk Nimmich <nimmich@muenster.de>]
o add bold-italic, bold-underline, italic-underline, bold-italic-underline o add bold-italic, bold-underline, italic-underline, bold-italic-underline
word highlightings. word highlightings.
[20020721 Urs Janssen <urs@tin.org>] [20020721 Urs Janssen <urs@tin.org>]
o allow bold, underline, italic, ... as colour substitution for o allow bold, underline, italic, ... as color substitution for
monochrome terminals (map green=underline, italic=yellow) monochrome terminals (map green=underline, italic=yellow)
(see also (see also
<nntp://news.tin.org/20020416202232.A4575@bloatware.reston01.va.comcast.net>) <nntp://news.tin.org/20020416202232.A4575@bloatware.reston01.va.comcast.net>)
[20030218 Serge Matveev <sm@cl.spb.ru>] [20030218 Serge Matveev <sm@cl.spb.ru>]
o hierarchical 'M'enu, e.g. put all art_marked_*into a 'submenu', o hierarchical 'M'enu, e.g. put all art_marked_*into a 'submenu',
restructure/sort 'M'enu items, some display-options (render BiDi) are restructure/sort 'M'enu items, some display-options (render BiDi) are
currently under expert options, some options in display options are currently under expert options, some options in display options are
navigation options (catchup thread, use mouse, ...) navigation options (catchup thread, use mouse, ...)
[20020322 Urs Janssen <urs@tin.org>] [20020322 Urs Janssen <urs@tin.org>]
skipping to change at line 257 skipping to change at line 269
[20010623 Urs Janssen <urs@tin.org>] [20010623 Urs Janssen <urs@tin.org>]
o should the postponed 'file' (and posted messages 'file') be in o should the postponed 'file' (and posted messages 'file') be in
mailbox_format (even if that's a one file/message format, thus mailbox_format (even if that's a one file/message format, thus
the 'file' actually needs to be a directory?). the 'file' actually needs to be a directory?).
o add maildir/maildir++ support (besides MBOX{O,RD} and MMDF}, o add maildir/maildir++ support (besides MBOX{O,RD} and MMDF},
MH (not only reading but also writing), mailstore, BABYL, Kendra (MMDF MH (not only reading but also writing), mailstore, BABYL, Kendra (MMDF
like with 20*CTRL-A as sep.), MBX and MIX (indexed MBOX from UW-IMAP) like with 20*CTRL-A as sep.), MBX and MIX (indexed MBOX from UW-IMAP)
and add man-pages for the various formats. and add man-pages for the various formats.
(see <http://www.ifi.uio.no/~larsi/notes/BABYL> for BABYL, (see <https://quimby.gnus.org/notes/BABYL> for BABYL,
<http://www.qmail.org/man/man5/maildir.html> for maildir, <http://www.qmail.org/man/man5/maildir.html> for maildir,
<http://www.qmail.org/man/man5/mbox.html> for MBOXCL and MBOXCL2, <http://www.qmail.org/man/man5/mbox.html> for MBOXCL and MBOXCL2,
<http://www.washington.edu/imap/listarch/2000/msg00363.html> for MBX, <http://www.washington.edu/imap/listarch/2000/msg00363.html> for MBX,
<http://www.washington.edu/imap/documentation/mixfmt.txt.html for MIX) <http://www.washington.edu/imap/documentation/mixfmt.txt.html for MIX)
[20020215 Urs Janssen <urs@tin.org>] [20020215 Urs Janssen <urs@tin.org>]
o add $LOCKEXT support o add $LOCKEXT support
[20030611 Urs Janssen <urs@tin.org>] [20030611 Urs Janssen <urs@tin.org>]
o add xxencode (<http://www.ctan.org/tex-archive/tools/xxcode/xxdecode.c>), o add xxencode (<http://www.debath.co.uk/code/xxencode.c>),
base224 (<http://b-news.sf.net/>), xBin <http://www.xbin.org/> and base224 (<http://b-news.sf.net/>), xBin <http://www.xbin.org/>,
yenc (hide/decode-)support (see <http://nerv.cx/liyang/software/yydecode/> base91 (<http://base91.sourceforge.net/>) and yenc (hide/decode-)support
for readable code, ignore the crap on <http://www.yenc.org/>). also (see <http://yydecode.sourceforge.net/> for readable code, ignore
check <http://www.exit109.com/~jeremy/news/binaries/> which might the crap on <http://www.yenc.org/>). also check
replace yenc etc.pp. some day. <http://www.exit109.com/~jeremy/news/binaries/> which might replace yenc
etc.pp. some day.
[20020216 Urs Janssen <urs@tin.org>] [20020216 Urs Janssen <urs@tin.org>]
o add "Face:" (incompatible "X-Face:"-replacement) support? o add "Face:" (incompatible "X-Face:"-replacement) support?
[20040107 Urs Janssen <urs@tin.org>] [20040107 Urs Janssen <urs@tin.org>]
o turn CA_ERROR_SPACE_IN_NEWSGROUPS, CA_ERROR_NEWLINE_IN_NEWSGROUPS, 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_ERROR_SPACE_IN_FOLLOWUP_TO, CA_ERROR_NEWLINE_IN_FOLLOWUP_TO into
CA_WARNING_s (see RFC 5536 3.1.4. and 3.2.6.) and mark them CA_WARNING_s (see RFC 5536 3.1.4. and 3.2.6.) and mark them
for removal in the future. for removal in the future.
[define ALLOW_FWS_IN_NEWSGROUPLIST to turn the mentioned errors into [define ALLOW_FWS_IN_NEWSGROUPLIST to turn the mentioned errors into
skipping to change at line 419 skipping to change at line 432
o Additions to the group menu: o Additions to the group menu:
'V' (View/pipe/save multimedia attachments) 'V' (View/pipe/save multimedia attachments)
'Y' (check for new articles in group) 'Y' (check for new articles in group)
'%' (toggle rot13 encoding of screen content) '%' (toggle rot13 encoding of screen content)
o Additions to the select menu: o Additions to the select menu:
'%' (toggle rot13 encoding of screen content) '%' (toggle rot13 encoding of screen content)
key to toggle groupname abbreviation key to toggle groupname abbreviation
o Add to the 'M'enu: o Add to the 'M'enu:
'R' (GLOBAL_BUGREPORT)
'&' (GLOBAL_TOGGLE_COLOR) '&' (GLOBAL_TOGGLE_COLOR)
and maybe a way to change built in path like DEFAULT_MAILER, PATH_PGP, ... and maybe a way to change built in path like DEFAULT_MAILER, PATH_PGP, ...
o Add to the attachment menu ('V'): o Add to the attachment menu ('V'):
'F' post followup to current article, not including current attachment 'F' post followup to current article, not including current attachment
'R' reply through mail to author, not including current attachment
or
'R' (GLOBAL_BUGREPORT)
'f' post followup to current article, including current (or tagged) 'f' post followup to current article, including current (or tagged)
attachment(s) attachment(s)
'm' mail attachment 'm' mail attachment
'o' print attachment 'o' print attachment
'r' reply through mail to author, including current attachment 'r' reply through mail to author, including current attachment
'' reply through mail to author, not including current attachment
('R' is already taken by GLOBAL_BUGREPORT)
't' tag attachments for '|', 'p', 's', 'm' (done for 's') 't' tag attachments for '|', 'p', 's', 'm' (done for 's')
'#' tag range of attachments (n-m) '#' tag range of attachments (n-m)
'x' repost current attachment to another group 'x' repost current attachment to another group
'%' (toggle rot13 encoding of screen content) '%' (toggle rot13 encoding of screen content)
'&' (GLOBAL_TOGGLE_COLOR) '&' (GLOBAL_TOGGLE_COLOR)
o Add a command-line switch (-V) that prints out all values of cpp-symbols o Add a command-line switch (-V) that prints out all values of cpp-symbols
etc. [partly done, but should be cleaned up] etc. [partly done, but should be cleaned up]
o Reorganize tinrc into related sections for easier editing o Reorganize tinrc into related sections for easier editing
skipping to change at line 467 skipping to change at line 478
then there is no reason to completely hide the article then there is no reason to completely hide the article
[Jason Faultless <jason@altarstone.com>] [Jason Faultless <jason@altarstone.com>]
o Merge the selection code with the range code. Having two similar methods o Merge the selection code with the range code. Having two similar methods
of picking articles with similar goals is wasteful. of picking articles with similar goals is wasteful.
[Jason Faultless <jason@altarstone.com>] [Jason Faultless <jason@altarstone.com>]
o add check for liblzma/libbzip2/zlib (>=1.1.4)/[mini]lzo, lzlib, liblz4, o add check for liblzma/libbzip2/zlib (>=1.1.4)/[mini]lzo, lzlib, liblz4,
liblrzip, libzstd, ... liblrzip, libzstd, ...
(<http://tukaani.org/xz/>, <http://sources.redhat.com/bzip2/>, (<http://tukaani.org/xz/>, <http://sources.redhat.com/bzip2/>,
<http://www.gzip.org/zlib/>, <http://www.oberhumer.com/opensource/lzo/>, <https://zlib.net/>, <http://www.oberhumer.com/opensource/lzo/>,
<http://lzip.nongnu.org/lzlib.html>, <http://code.google.com/p/lz4/>, <http://lzip.nongnu.org/lzlib.html>, <http://code.google.com/p/lz4/>,
<http://freecode.com/projects/long-range-zip>, <http://freecode.com/projects/long-range-zip>,
<https://github.com/facebook/zstd>) and add an option to <https://github.com/facebook/zstd>) and add an option to
write/read *zipped local overviews. write/read *zipped local overviews.
the libs might also be used for post-processing articles. the libs might also be used for post-processing articles.
o rewrite/cleanup all the debugging code, the output in /tmp is messy; the o rewrite/cleanup all the debugging code, the output in /tmp is messy; the
on screen output either slows down things dramatically or is unreadable; on screen output either slows down things dramatically or is unreadable;
split DEBUG_MISC? split DEBUG_MISC?
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
skipping to change at line 530 skipping to change at line 541
to allow posting to groups other than those in newsrc. to allow posting to groups other than those in newsrc.
o add config option for (external) viewer to show postings stored in o add config option for (external) viewer to show postings stored in
keep_posted_articles_file keep_posted_articles_file
[20021003 Michael Gerhards <HM-Gerhards@uni.de>] [20021003 Michael Gerhards <HM-Gerhards@uni.de>]
Filtering enhancements Filtering enhancements
---------------------- ----------------------
o add Xref + Path filter to the filter-menu o add Xref + Path filter to the filter-menu
o add spamassassin interface when ever adding body filters
o add used filter-type to filter file or filter rule or use different o add used filter-type to filter file or filter rule or use different
filter files for wildmat/regexp filter files for wildmat/regexp
o add command: mark all articles older/newer than <date> (or <days>) as o add command: mark all articles older/newer than <date> (or <days>) as
read (useful when subscribing to a new group with high-traffic...) 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 o fix kill/hot mechanism so that it is possible to match articles on
arbitrary headers arbitrary headers
[done for Path, Dennis] [done for Path, Dennis]
skipping to change at line 573 skipping to change at line 582
about that part) for different content-types about that part) for different content-types
o integrate multi-part tagging with regular tagging, eg. o integrate multi-part tagging with regular tagging, eg.
"This article appears to have multi-parts, try and find them (y/n)?" "This article appears to have multi-parts, try and find them (y/n)?"
o add Content-Language (RFC 3282) analysis o add Content-Language (RFC 3282) analysis
o suppress hide_uue=2 checking unless first line in an article or following o suppress hide_uue=2 checking unless first line in an article or following
a blank line a blank line
o add missing mailcap (RFC 1524) features (%n, %F, copiousoutput, print, ...) o add missing mailcap (RFC 1524) features: %n, %F, copiousoutput, print,
if no %s appears in the view-command (or edit fields) the body part needs
to be passed to the command as standard input, ...
[20111205 Urs Janssen <urs@tin.org>] [20111205 Urs Janssen <urs@tin.org>]
Internal Changes Internal Changes
---------------- ----------------
o merge refs.c:valid_msgid() and post.c:damaged_id()
[Urs Janssen <urs@tin.org>]
o in ENABLE_NLS case replace PLURAL() macro with proper use of o in ENABLE_NLS case replace PLURAL() macro with proper use of
ngettext(3) (if found by configure) to support languages with ngettext(3) (if found by configure) to support languages with
more than one plural form. more than one plural form.
[20150113 Urs Janssen <urs@tin.org>] [20150113 Urs Janssen <urs@tin.org>]
o rename disable_gnksa_domain_check to enable_gnksa_domain_check and o rename disable_gnksa_domain_check to enable_gnksa_domain_check and
invert logic now the default changed invert logic now the default changed
[20131119 Urs Janssen <urs@tin.org>] [20131119 Urs Janssen <urs@tin.org>]
o %s/%S in quote_char should replaced by %I in misc.c:copy_body() and
config.c:rc_update() to be consistent.
[20131003 Urs Janssen <urs@tin.org>]
o curses.c:input_pending() and curses.c:get_arrow_key() have o curses.c:input_pending() and curses.c:get_arrow_key() have
#ifdef HAVE_SELECT and a code path for the case when we don't have #ifdef HAVE_SELECT and a code path for the case when we don't have
select(2), but read.c:wait_for_input() has no code path for the select(2), but read.c:wait_for_input() has no code path for the
!HAVE_SELECT case. we should add a !HAVE_SELECT case there (or at !HAVE_SELECT case. we should add a !HAVE_SELECT case there (or at
least have adjusted messages in txt_reading_article and txt_group) least have adjusted messages in txt_reading_article and txt_group)
[20110506 Urs Janssen <urs@tin.org>] [20110506 Urs Janssen <urs@tin.org>]
o ditch MAX_MSG_HEADERS (post.c) o ditch MAX_MSG_HEADERS (post.c)
[20110212 Urs Janssen <urs@tin.org>] [20110212 Urs Janssen <urs@tin.org>]
skipping to change at line 621 skipping to change at line 631
[20100326 Urs Janssen <urs@tin.org>] [20100326 Urs Janssen <urs@tin.org>]
o rewrite auth.c o rewrite auth.c
- turn t_bool authinfo_user, authinfo_sasl, authinfo_state into - turn t_bool authinfo_user, authinfo_sasl, authinfo_state into
enum authinfo { NONE = 0, USER = 1, SASL = 2 } enum authinfo { NONE = 0, USER = 1, SASL = 2 }
o fix aclocal.m4:CF_FUNC_SYSTEM and/or misc.c:invoke_cmd() that o fix aclocal.m4:CF_FUNC_SYSTEM and/or misc.c:invoke_cmd() that
--enable-broken-system-fix/IGNORE_SYSTEM_STATUS isn't needed anymore. --enable-broken-system-fix/IGNORE_SYSTEM_STATUS isn't needed anymore.
[20090520 Urs Janssen <urs@tin.org>] [20090520 Urs Janssen <urs@tin.org>]
o tinrc.confirm_choice should be written/read as int, not string as users
who edit the tinrc manually can't know the exact strings required.
unfortunately rc_update() can't handle type changes (rc_update should
also get the split version number as arg so we can do specific
changes).
[20081112 Urs Janssen <urs@tin.org>]
o use read()/write() instead of fputs()/fgets() on socket o use read()/write() instead of fputs()/fgets() on socket
o move several (server related) files into the per-server dir e.g.: o move several (server related) files into the per-server dir e.g.:
${TIN_INDEX_NEWSDIR-"${TIN_HOMEDIR-"$HOME"}/.tin"}/.news${NNTPSERVER+"-$NN TPSERVER"}/ ${TIN_INDEX_NEWSDIR-"${TIN_HOMEDIR-"$HOME"}/.tin"}/.news${NNTPSERVER+"-$NN TPSERVER"}/
should be should be
${TIN_INDEX_NEWSDIR-"${TIN_HOMEDIR-"$HOME"}/.tin"}${NNTPSERVER+"/$NNTPSERV ER"}/.news/ ${TIN_INDEX_NEWSDIR-"${TIN_HOMEDIR-"$HOME"}/.tin"}${NNTPSERVER+"/$NNTPSERV ER"}/.news/
[20050807 Urs Janssen <urs@tin.org>] [20050807 Urs Janssen <urs@tin.org>]
o remove untranslatable constructs like txt_prefix_* o remove untranslatable constructs like txt_prefix_*
[20050413 Urs Janssen <urs@tin.org>] [20050413 Urs Janssen <urs@tin.org>]
skipping to change at line 674 skipping to change at line 677
[20040929 Urs Janssen <urs@tin.org>] [20040929 Urs Janssen <urs@tin.org>]
o get rid of CURR_GROUP, use t_group instead o get rid of CURR_GROUP, use t_group instead
create a global t_group *CURR_GROUP instead of the current macro create a global t_group *CURR_GROUP instead of the current macro
reduce dependencies on my_group[] & selmenu outside of select.c reduce dependencies on my_group[] & selmenu outside of select.c
[20030501 Urs Janssen <urs@tin.org>] [20030501 Urs Janssen <urs@tin.org>]
o clean up $AUTOSUBSCRIBE code (the NNTP code path is a mess) o clean up $AUTOSUBSCRIBE code (the NNTP code path is a mess)
[20030412 Urs Janssen <urs@tin.org>] [20030412 Urs Janssen <urs@tin.org>]
o check where joinpath() should be used (e.g. grep for TMPDIR in the source)
[Urs Janssen <urs@tin.org>]
o make configure look for strrstr() in libpub & publib.h o make configure look for strrstr() in libpub & publib.h
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o reorder several structs to avoid padding (see gcc -Wpadded) o reorder several structs to avoid padding (see gcc -Wpadded)
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o what type is base[]? (long, see memory.c:init_alloc()~102) o what type is base[]? (long, see memory.c:init_alloc()~102)
There is a lot of confusion internally over how it is used There is a lot of confusion internally over how it is used
compare setup_hard_base() with find_base() etc.. compare setup_hard_base() with find_base() etc..
[Jason Faultless <jason@altarstone.com>] [Jason Faultless <jason@altarstone.com>]
o check where PRODUCT should be used instead of tin_progname and/or "tin" o check where PRODUCT should be used instead of tin_progname and/or "tin"
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o check where NEWSRC_FILE should be used in lang.c instead of "newsrc" 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.) o check where iKeyAbort should be used instead of ESC (etc.pp.)
(AFAICS all fixed except prompt.c and read.c/'z') (AFAICS all fixed except prompt.c and read.c/'z')
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o close potential security holes: o close potential security holes:
- remove fixed length buffers (find_nov_file(), print_from(), - remove fixed length buffers (find_nov_file(), print_from(),
quote_space_to_dash(), escape_shell_meta(), backup_article(), quote_space_to_dash(), escape_shell_meta(), backup_article(),
build_messageid(), get_secret(), get_host_name(), get_domain_name(), build_messageid(), get_secret(), get_host_name(), get_domain_name(),
get_fqdn(), get_user_name(), get_full_name(), build_sender(), ...) get_fqdn(), get_user_name(), get_full_name(), build_sender(), ...)
- change all system()/popen() calls to fork() and exec() calls - change all system()/popen() calls to fork() and exec() calls
- check where we should use snprintf() instead of sprintf() - check where we should use snprintf() instead of sprintf()
- check where we should use strncat() instead of strcat() - check where we should use strncat() instead of strcat()
- check where we should use strncpy() instead of strcpy() - check where we should use strncpy() instead of strcpy()
- check possible races with access()/link()/rename()/stat()/ - check possible races with access()/link()/rename()/stat()/
unlink()/chdir()/fopen()/fstat()/open()/ unlink()/chdir()/fopen()/fstat()/open()/
opendir()/t_open()/tmpfile() opendir()/t_open()/tmpfile()
- check getenv() results before using it - check getenv() results before using it
- check where my_strncpy() or STRCPY() should be used - check where my_strncpy() or STRCPY() should be used
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
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 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, o check where int/long/... should be replaced by size_t, uid_t, mode_t,
off_t, ... off_t, ...
[Urs Janssen <urs@tin.org>] [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/>, o check code with Splint (LCLint) <http://www.splint.org/>,
valgrind (<http://valgrind.org/>), cppcheck valgrind (<http://valgrind.org/>), cppcheck
(<http://cppcheck.wiki.sourceforge.net/>), AdLint (<https://trac.cppcheck.net/>), AdLint
(<http://adlint.sourceforge.net/>), clang-analyzer (<http://adlint.sourceforge.net/>), clang-analyzer
(<http://clang-analyzer.llvm.org/>), Coverity (<http://clang-analyzer.llvm.org/>), Coverity
(<https://scan.coverity.com/projects/993>), infer (<https://scan.coverity.com/projects/993>), infer
(<http://fbinfer.com/>) and zzuf (<http://fbinfer.com/>) and zzuf
(<http://caca.zoy.org/wiki/zzuf>) (<http://caca.zoy.org/wiki/zzuf>)
o rewrite the tag code so that arts[].tagged becomes index in arts[] 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 of next tagged article. num_of_tagged_arts becomes index of first
tagged art. Traversing tagged arts becomes much easier & faster. tagged art. Traversing tagged arts becomes much easier & faster.
[Jason Faultless <jason@altarstone.com>] [Jason Faultless <jason@altarstone.com>]
o strip Xref:-header if saving news in batch mode (-S)? o strip Xref:-header if saving news in batch mode (-S)?
[Urs Janssen <urs@tin.org>] [Urs Janssen <urs@tin.org>]
o what is with NEW_HASH_METHOD in list.c?
o rewrite code to use INEWS_PATH instead of INEWSDIR o rewrite code to use INEWS_PATH instead of INEWSDIR
[20021007 Urs Janssen <urs@tin.org> [20021007 Urs Janssen <urs@tin.org>
o remove built in path of external commands (metamail, ispell, ...) o remove built in path of external commands (metamail, ispell, ...)
[for ispell $ISPELL can be used to override systempath and progname] [for ispell $ISPELL can be used to override systempath and progname]
o add configure-switch for DISABLE_PIPELINING o add configure-switch for DISABLE_PIPELINING
[20090612 Urs Janssen <urs@tin.org>] [20090612 Urs Janssen <urs@tin.org>]
o mask inline PGP SIGNATURE/KEY BLOCK like we do for uu-sections o mask inline PGP SIGNATURE/KEY BLOCK like we do for uu-sections
[20090722 Urs Janssen <urs@tin.org>] [20090722 Urs Janssen <urs@tin.org>]
o some non fixed width strings could be formatted nicer (warp on last space o some non fixed width strings could be formatted nicer (warp on last space
before cCOLS), e.g. txt_warn_downgrade before cCOLS), e.g. txt_warn_downgrade
[20110325 Urs Janssen <urs@tin.org>] [20110325 Urs Janssen <urs@tin.org>]
Unicode 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 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. undesired (UTF-1, UTF-7, UTF-16*, UTF-32*, UCS-2, UCS-4, ...) encodings.
add configure check for the hard coded charsets (try iconv_open(x, add configure check for the hard coded charsets (try iconv_open(x,
us-ascii) on each...) and disable those not available. us-ascii) on each...) and disable those not available.
(think about more network charsets (GB2312, GB18030, Shift_JIS, (think about more network charsets (GB2312, GB18030, Shift_JIS,
ISO-8859-6[-{I,E}], ISO-8859-8[-{I,E}], ISO-8859-11, VISCII, VIQR; ISO-8859-6[-{I,E}], ISO-8859-8[-{I,E}], ISO-8859-11, VISCII, VIQR;
check whether KOI8-RU is still used/valid)) check whether KOI8-RU is still used/valid))
[done except configure check 20010907 urs@tin.org] [done except configure check 20010907 urs@tin.org]
o make mm_network_charset a user configurable item list o make mm_network_charset a user configurable item list
("US-ASCII:ISO-8859-1:ISO-8859-9:ISO-8859-15:UTF-8", ("US-ASCII:ISO-8859-1:ISO-8859-9:ISO-8859-15:UTF-8",
"US-ASCII:ISO 8859-5:KOI8-R:UTF-8", "US-ASCII:ISO 8859-5:KOI8-R:UTF-8",
"EUC-CN:ISO-2022-CN:ISO-2022-CN-EXT:Big5:UTF-8", whatever) "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 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). best (i.e. can display most (all) of the chars in the article).
(see also RFC 2046 4.1.2)
[20050805 <urs@tin.org>] [20050805 <urs@tin.org>]
o add IDNA 2003 (RFC 3490ff.) and IDNA 2008 (RFC 5890ff.) support, o add IDNA 2003 (RFC 3490ff.) and IDNA 2008 (RFC 5890ff.) support,
(<http://www.gnu.org/software/libidn/> IDNA 2003, (<http://www.gnu.org/software/libidn/> IDNA 2003,
<http://jprs.co.jp/idn/index-e.html> IDNA 2008, <http://jprs.co.jp/idn/index-e.html> IDNA 2008,
<http://site.icu-project.org/> IDNA (uidna_IDNToUnicode() <http://site.icu-project.org/> IDNA (uidna_IDNToUnicode()
and/or with ICU >=4.6 uidna_nameToUnicode(uidna_openUTS46)), and/or with ICU >=4.6 uidna_nameToUnicode(uidna_openUTS46)),
<http://www.gnu.org/s/libidn/#libidn2> IDNA 2008) <http://www.gnu.org/s/libidn/#libidn2> IDNA 2008)
(added minimalistic IDNA decoding support if a recent libidn is found, urs) (added minimalistic IDNA decoding support if a recent libidn is found, urs)
[20030917 Urs Janssen <urs@tin.org>] [20030917 Urs Janssen <urs@tin.org>]
o add normalization o add normalization
(via <http://site.icu-project.org/> or (via <http://site.icu-project.org/> or
<http://www.gnu.org/software/libidn/> or <http://www.gnu.org/software/libidn/> or
<http://www.gnu.org/software/libunistring/>) <http://www.gnu.org/software/libunistring/>)
(done for search strings only, missing for "threading" by subject etc. pp.) (done for search strings and threading, missing for filtering etc. pp.)
[20031209 Michael Bienia <michael@vorlon.ping.de>] [20031209 Michael Bienia <michael@vorlon.ping.de>]
o rewrite ICU configure checks o rewrite ICU configure checks
[20180710 Urs Janssen <urs@tin.org>] [20180710 Urs Janssen <urs@tin.org>]
o check for wcsftime() and if found use it instead of strftime() (at o check for wcsftime() and if found use it instead of strftime() (at
least in page.c). least in page.c).
[20130129 Urs Janssen <urs@tin.org>] [20130129 Urs Janssen <urs@tin.org>]
Docs/online help Docs/online help
skipping to change at line 842 skipping to change at line 812
o the documentation of PageFollowupQuoteHeaders (^W) and o the documentation of PageFollowupQuoteHeaders (^W) and
PageReplyQuoteHeaders (^E) is wrong as not all headers but just those PageReplyQuoteHeaders (^E) is wrong as not all headers but just those
visible via news_headers_to_display (or all if raw mode is on visible via news_headers_to_display (or all if raw mode is on
(PageToggleHeaders (^H)) are included. (PageToggleHeaders (^H)) are included.
[20100911 Urs Janssen <urs@tin.org>] [20100911 Urs Janssen <urs@tin.org>]
o the online help of GroupMarkUnselArtRead 'X' is unclear as it doesn't o the online help of GroupMarkUnselArtRead 'X' is unclear as it doesn't
say that the article are marked read say that the article are marked read
[20090814 Urs Janssen <urs@tin.org>] [20090814 Urs Janssen <urs@tin.org>]
o document the different signals/actions (e.g. SIGUSR2 writes newsrc) o document the different signals/actions
[20080209 Urs Janssen <urs@tin.org>] [20080209 Urs Janssen <urs@tin.org>]
o exit status documentation in the man page isn't correct, we have more o exit status documentation in the man page isn't correct, we have more
exit codes than just 0/1 (and 2 in the -Z case). exit codes than just 0, 1, (2 in the -Z case) and 3.
[20080320 Urs Janssen <urs@tin.org>] [20080320 Urs Janssen <urs@tin.org>]
o review the spanish, swedish and russian translations o review the spanish, swedish and russian translations
(es.po, sv.po, ru.po); add/finish missing man-page translation(s). (es.po, sv.po, ru.po); add/finish missing man-page translation(s).
o add installation guide (in html?) o add installation guide (in html?)
o add cross-compilation hints o add cross-compilation hints
CC="crosscc" LD="crossld" AR="crossar" RANLIB=":" MAKE="crossmake" \ CC="crosscc" LD="crossld" AR="crossar" RANLIB=":" MAKE="crossmake" \
./configure --with-build-cc=gcc --with-build-cpp=cpp \ ./configure --with-build-cc=gcc --with-build-cpp=cpp \
skipping to change at line 871 skipping to change at line 841
o man page always needs work and proof reading o man page always needs work and proof reading
e.g. 'U', 'V' in pager need better documentation, random organization e.g. 'U', 'V' in pager need better documentation, random organization
feature isn't documented at all. feature isn't documented at all.
o tin.defaults could use more documentation in man page (tin.5) o tin.defaults could use more documentation in man page (tin.5)
o replace "\\" by "\e" in man pages (portable?) o replace "\\" by "\e" in man pages (portable?)
o integrate doc/auth.txt into tin.1 man page o integrate doc/auth.txt into tin.1 man page
o document %G of strfpath() in man page
Not yet classified Not yet classified
------------------ ------------------
o allow per group cancel_lock_algo setting via attributes? o allow per group cancel_lock_algo setting via attributes?
[20170810 Urs Janssen <urs@tin.org>] [20170810 Urs Janssen <urs@tin.org>]
o allow per group cache_overview_files setting via attributes? o allow per group cache_overview_files setting via attributes?
[20180215 Urs Janssen <urs@tin.org>] [20180215 Urs Janssen <urs@tin.org>]
o abort HEAD/NEXT loop on 5xx responses to HEAD? (see o abort HEAD/NEXT loop on 5xx responses to HEAD? (see
art.c:open_art_header()) art.c:open_art_header())
skipping to change at line 900 skipping to change at line 868
o sometimes we convert the supplied server name to lowercaes (for cached o sometimes we convert the supplied server name to lowercaes (for cached
overviews) and sometimes we don't (nrctbl.c code and -g arg). Thus overviews) and sometimes we don't (nrctbl.c code and -g arg). Thus
-g Foo.bAr.eXample may result in file not found -g Foo.bAr.eXample may result in file not found
for entries like '* ~/.tin/.newsrcs/${NNTPSERVER-localhost}' for entries like '* ~/.tin/.newsrcs/${NNTPSERVER-localhost}'
even there is a ~/.tin/.newsrcs/foo.bar.example file. even there is a ~/.tin/.newsrcs/foo.bar.example file.
Should we always lowercase $NNTPSERVER / -g? (but still allow Should we always lowercase $NNTPSERVER / -g? (but still allow
upper/camelcase for -f or a fixed filename in newsrctable). upper/camelcase for -f or a fixed filename in newsrctable).
[20160225 Urs Janssen <urs@tin.org>] [20160225 Urs Janssen <urs@tin.org>]
o add %M (Message-ID) and %X (article number) to strfpath()?
[20160225 Urs Janssen <urs@tin.org>]
o add "host:port" notation support for -g as shortcut for -p port -g host o add "host:port" notation support for -g as shortcut for -p port -g host
[20160222 Urs Janssen <urs@tin.org>] [20160222 Urs Janssen <urs@tin.org>]
o allow "begin-base64"/"====\n" as start/end marker for UUE-blocks besides o allow "begin-base64"/"====\n" as start/end marker for UUE-blocks besides
the traditional "begin"/"end\n"? the traditional "begin"/"end\n"?
[20151204 Urs Janssen <urs@tin.org>] [20151204 Urs Janssen <urs@tin.org>]
o cache_overview_files also affects $TIN_INDEX_MAILDIR and $TIN_INDEX_SAVEDIR o cache_overview_files also affects $TIN_INDEX_MAILDIR and $TIN_INDEX_SAVEDIR
overviews, is this desired? overviews, is this desired?
[20151112 Urs Janssen <urs@tin.org>] [20151112 Urs Janssen <urs@tin.org>]
skipping to change at line 1037 skipping to change at line 1002
o should 'tin -z foo.bar' only start up if there is any unread news in o should 'tin -z foo.bar' only start up if there is any unread news in
foo.bar? foo.bar?
[20040325 Urs Janssen <urs@tin.org>] [20040325 Urs Janssen <urs@tin.org>]
o trn and perls Net::NNTP::Auth use ~/.nntpauth (format is 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 "^server\s+user\s+password"), shall we also try ~/.nntpauth if we can't
find a matching entry in ~/.newsauth? and should we look for find a matching entry in ~/.newsauth? and should we look for
${TIN_HOMEDIR:-"$HOME"}/.tin/.newsauth if ~/.newsauth is not found? ${TIN_HOMEDIR:-"$HOME"}/.tin/.newsauth if ~/.newsauth is not found?
[20040128 Urs Janssen <urs@tin.org>] [20040128 Urs Janssen <urs@tin.org>]
o allow a different port on newsauth and or newsrctable (server:port [...])? o allow a different port in newsauth- and/or newsrctable-file
if we do, what's the precedence? -p, newsauth, newsrctable, $NNTPORT, 119? (server:port [...])? if we do, what's the precedence?
[high] -p, newsauth, newsrctable, $NNTPORT, 119 [low]?
[20140504 Urs Janssen <urs@tin.org>] [20140504 Urs Janssen <urs@tin.org>]
o what todo if in a CTE: x-uue the CD: filename differs from the one given 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 in the begin line? IMHO we should use the one from the begin line for
saving and in the overview in the pager. saving and in the overview in the pager.
[urs@tin.org] [urs@tin.org]
o inverse_okay's Menu description isn't accurate (inverse is also used for o inverse_okay's Menu description isn't accurate (inverse is also used for
URL highlighting). mono_mark* do allow "Reverse video" even if URL highlighting). mono_mark* do allow "Reverse video" even if
inverse_okay=FALSE. inverse_okay=FALSE.
skipping to change at line 1072 skipping to change at line 1038
is no longer with RFC 5536) leads to 'To: Last, First<user@example.com>' is no longer with RFC 5536) leads to 'To: Last, First<user@example.com>'
which is 'last@localhost,user@example.com' should we try to fix things and which is 'last@localhost,user@example.com' should we try to fix things and
quote the realname part? quote the realname part?
[20021007 Urs Janssen <urs@tin.org>] [20021007 Urs Janssen <urs@tin.org>]
o setting TIN_HOMEDIR to a non-existent dir gives a "Filesystem full" 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? error-message (but doesn't abort) instead of creating the dir. bug?
feature? if the later we should give a more exact error-message. feature? if the later we should give a more exact error-message.
[20011112 Urs Janssen <urs@tin.org>] [20011112 Urs Janssen <urs@tin.org>]
o check_article_to_be_posted() needs a cleanup! o update gettext stuff to > gettext-0.12.1 (or drop it?)
(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 and pcre2 support (new API) o and pcre2 support (new API)
<http://www.pcre.org/current/doc/html/> <http://www.pcre.org/current/doc/html/>
o clean up included pcre stuff and update to >= pcre-8.42 o clean up included pcre stuff and update to >= pcre-8.43
o shows up cross-postings multiple times even if read once before getting o shows up cross-postings multiple times even if read once before getting
a resync/reread active/newsrc-file a resync/reread active/newsrc-file
o think about group numbering in "only unread" display mode o think about group numbering in "only unread" display mode
(using different numbers in show all/show only unread leads to some (using different numbers in show all/show only unread leads to some
problems, f.e. group moving) problems, f.e. group moving)
o doesn't handle symlinks for .oldnewsrc o doesn't handle symlinks for .oldnewsrc
(see <20021003021508.GA28021@akk10.akk.uni-karlsruhe.de> for details, urs. (see <20021003021508.GA28021@akk10.akk.uni-karlsruhe.de> for details, urs.
skipping to change at line 1104 skipping to change at line 1065
attacks (<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-1999-1091>) attacks (<http://cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-1999-1091>)
[20020627 Jeff Sheinberg <jeffsh@erols.com>] [20020627 Jeff Sheinberg <jeffsh@erols.com>]
o missing newsrc file and connecting to a server without groups leads to the o missing newsrc file and connecting to a server without groups leads to the
question "Try and save newsrc file again? (Y/n)" but a newsrc file doesn't question "Try and save newsrc file again? (Y/n)" but a newsrc file doesn't
get written. Same may occur on quitting if newsrc file had been removed get written. Same may occur on quitting if newsrc file had been removed
while tin was running. Useful? Should write_newsrc() try to create a newsrc while tin was running. Useful? Should write_newsrc() try to create a newsrc
file if it is missing instead of just leaving? file if it is missing instead of just leaving?
[20061102 Dirk Nimmich <nimmich@muenster.de>] [20061102 Dirk Nimmich <nimmich@muenster.de>]
o cache mailbox_name in misc.c/mail_check()?
o configure checks for fdopen(3) and defines HAVE_FDOPEN if found, but we o configure checks for fdopen(3) and defines HAVE_FDOPEN if found, but we
don't have any code guarded with that macro nor any fallback code if not don't have any code guarded with that macro nor any fallback code if not
found. found.
o re add innlib support? (the old one was dropped as the lib has retired o re add innlib support? (the old one was dropped as the lib has retired
all (which were not that many) features we used and our code didn't all (which were not that many) features we used and our code didn't
use the innlibs code where ever it was possible (and useful). use the innlibs code where ever it was possible (and useful).
[20080211 Urs Janssen <urs@tin.org>] [20080211 Urs Janssen <urs@tin.org>]
o add check for libarchive <https://code.google.com/p/libarchive/> o add check for libarchive <http://www.libarchive.org/>
and use for post-processing? and use for post-processing?
[20111225 Urs Janssen <urs@tin.org>] [20111225 Urs Janssen <urs@tin.org>]
o add check for liblockfile and/or liblock and use if found? o add check for liblockfile and/or liblock and use if found?
o add check for heapsort(3) in libbsd? <http://libbsd.freedesktop.org/wiki/> o add check for heapsort(3) in libbsd? <http://libbsd.freedesktop.org/wiki/>
[20130305 Urs Janssen <urs@tin.org>] [20130305 Urs Janssen <urs@tin.org>]
o add jump to selected article from DisplayPostHist (’W’) o add jump to selected article from DisplayPostHist ('W')
[20120220 Urs Janssen <urs@tin.org>] [20120220 Urs Janssen <urs@tin.org>]
o add check for libtre and offer TRE as matching method for "wildcard"? o add check for libtre and offer TRE as matching method for "wildcard"?
<http://laurikari.net/tre/about/>, <https://github.com/laurikari/tre/> <http://laurikari.net/tre/about/>, <https://github.com/laurikari/tre/>
[20130706 Urs Janssen <urs@tin.org>] [20130706 Urs Janssen <urs@tin.org>]
o eval $NEWSHOST if $NNTPSERVER is unset (like Net::NNTP(3perl)) o eval $NEWSHOST if $NNTPSERVER is unset (like Net::NNTP(3perl))
[20141225 Urs Janssen <urs@tin.org>] [20141225 Urs Janssen <urs@tin.org>]
 End of changes. 36 change blocks. 
89 lines changed or deleted 48 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)