1.) Set minimum required GCC version to 4.1.3 because that is what has
been tested. Based on the bug-report it also seems that GCC 4.0.1
doesn't work.
2.) GCC 4.1.3 (as distributed with NetBSD 5.*) works fine under
NetBSD/macppc as reported by Matthias Kretschmer on IRCnet.
So don't insist on GCC 4.2.1 for this platform. This fixes seems
to fix the build as the GCC 4.4.6 package doesn't build for
this platform.
to version 0.8.9. Changes since version 0.12.6 respectively 0.8.6:
- Added multithreading support for XMLRPC calls. Sponsored by Xirvik.
- Discard dht cache if it is corrupt, instead of killing rtorrent.
- Better handling of resume after crash/reboot alliviating the need to
full hash checks. Sponsored by anonymous source.
- Added support for Linux's fallocate and Darwin's
fcntl(...,F_PREALLOCATE,...) to preallocate files by default. The
'system.file_allocate' setting will now only be used to indicate you
want posix_fallocate called, which may block while it zeros out the
file manually.
- Added 'event.download.hash_failed' and 'event.download.hash_final_failed'.
- Cleaning up command names. The deprecated commands will be redirected.
- Renamed 'system.method.*' to 'method.*'.
- Added 'system.files.{opened,closed,failed}_counter' commands.
- Added xmlrpc calls for peer snubbed, banned and disconnect.
- Added '-D' flag which turns of redirects for deprecated commands.
Use this to ensure your scripts/webui's will be compatible with future
releases.
- Added separate '-I' and '-K' switches for command redirects, the
former is for testing rtorrent code, the latter for webui's.
- Added a static_map implementation based on Josef's patches.
- Commited the DHT changes from dht-pex-static_map.diff with changes
so it works with the modified static_map implementation.
- Applied the magnet-uri patch.
- Don't install the out-of-date man page.
- Added 'execute.*.bg' commands for non-blocking calls. Always returns 0.
- Added support for prioritizing first/last chunk of files matching
specified patterns. Default:
file.prioritize_toc.set=0
file.prioritize_toc.first.set = {*.avi,*.mp4,*.mkv,*.gz}
file.prioritize_toc.last.set = {*.zip}
- Added 'method.rlookup' and 'method.rlookup.clear' commands for looking
up the event handlers holding a specified key, and set views to support
rlookup.
- Added 'd.timestamp.finished' that is set when a downloading torrent
completes. For torrents that only seed it remains '0'.
- Added 'elapsed.{less,greater}' for checking the time elapsed since a
time is less/greater, and it also returns false in all cases where
the time is '0'.
- Moved the default value for 'system.files.max_size' to rtorrent, and
set the default in libtorrent to ~0.
- Increased the default values for min/max_peers and max_uploads.
- Fixed a bug that would cause hash checking to block excessively in some
cases.
- Fixed a bug when setting the pex flags.
- Fixed an issue where DHT's hashing function for TR1 unordered_map was
casting unaligned size_t pointers.
- Fixed default session name.
- Added a missing inline that could cause linking errors.
Changes:
- Added a simple scheduler framework.
- Don't send numwant in STOPPED messages as some trackers are stupid about
it.
- Reintroduced clearing of epoll event list when a socket is closed as
it might cause race conditions.
- Added cppUnit test framework. Tests will be added on rather unregular
basis.
- Logging for SCGI calls.
- Fixed handling of errors when writing out session torrents, it should
no longer hit an infinite loop.
- Fixed a bug that would cause reading of a piece to hang rtorrent if
the incoming data contains only data up to a file boundary, but not
the next file's data.
- Fixes a file handle leak in the execute_capture functions.
- Fixed crash on empty bitfield in 'd.bitfield'.
- Fixed the Object::flag_unordered code to handle initial zero-length
keys. Ticket #1950.
- Made torrent::Rate::rate_type uint64_t and added sanity checks due to
reports of bad download/upload values being reported to some trackers.
OK tron@ wiz@
- Add support for any number of custom download values identified by
string keys.
d.set_custom=key,value
d.get_custom=key (returns "" if not set)
d.get_custom_throw=key (returns error if not set)
- With this patch, rtorrent will detect and complain about .torrent
files with broken bencode representation (e.g. where the order of
dictionary keys is not lexicographic).
- Choose a different poll type using the RTORRENT_POLL env. variable
(if it's implemented), probably only useful as RTORRENT_POLL=select.
- Add the commands execute_capture and execute_capture_nothrow that
work like their other counterparts but return the OUTPUT (stdout) of
the given command.
- Fixes the code that detects which peer was sending bad data. Peers
are then automatically banned after sending three bad chunks.
- Stops rtorrent from always creating and resizing ALL files, even
those set to "off". Files will still be created, but with a size of
zero, until a part of them is getting downloaded. This helps with
filesystems that don't support sparse files (such as FAT, HFS+, and
others).
- Fix inefficient piece distribution due to linear chunk request
strategy by randomizing position every few (on average 32) chunks, see
ticket #190.
- Enable custom throttles, both per-download or per-IP. See
http://libtorrent.rakshasa.no/ticket/20 for info and instructions.
- Fix crashes/errors due to rtorrent attempting to pass non-utf-8
strings to xmlrpc.
- Added support for using posix_fallocate on newly resized files.
- Include locally available chunks in the "chunks seen" statistics for
completed/distributed copies. Patch by Josef Drexler.
- Added 'd.get_bitfield' command for retrieving the bitfield in hex
format. Patch by Thomas Rosner.
- Fixed include headers for gcc-4.4.0. Patch by 'kloeri'.
to version 0.8.4. Changes since 0.12.2 respectively 0.8.2:
- Fixed EINTR handling in execute command.
- Fixed a couple of memory leaks in xmlrpc.cc.
- Initial seeding support added.
- Added a work-around for the stdin kqueue bug in MacOSX.
- Numerous bug-fixes and patches.
- Work-around for OpenBSD's broken sys/event.h, which fails to compile
if it's the first (or only) included header. (Ticket #1470)
- Fixes compilation with old libcurl versions. (Ticket #1471)
- Fix compile error on systems that lack mincore(2).
- Fixes a crash in epoll due to libcurl/c-ares bug:
PollEPoll::modify(...) epoll_ctl call failed.
- Enforce an http transfer timeout when libcurl fails to honor
it. Also set a 5-minute timeout for (previously unlimited) torrent
transfers and fixes the argument type for curl_easy_setopt values.
- Allows bandwidth throttles to work without floating point support.
- Added the 'd.add_peer=host[:port]' command to manually add a peer
(not for torrents marked "private"), port 6881 is the default.
- Allows banning the selected peer with "B". No unbanning is possible
yet.
- Added system.method.{insert,erase} commands that allows
user-specified commands. E.g "system.method.insert=foo,print=Bar".
- Differentiate between commands that have no target, and those that
take generic targets, when using XMLRPC.
- Added 'event.download.inserted_{new,session}' that are triggered
when a new or a session torrent is added. Ticket #1516.
- Added 'system.method.get', 'ui.current_view.set' and 'group.insert'
commands.
- Enabled different ratio settings for different groups of
downloads.
- Added 'view.persistance' command that makes downloads inserted into
that view persist across sessions. Only call on user-created views.
- Added 'ratio.*' commands that call the 'group.seeding.ratio.*'
equivalents.
- Changed torrent::DownloadList::close_directly() so doesn't save the
session if the underlying file/directory has been moved or
removed. This change, in addition to calling 'd.set_directory=' before
'execute=mv,...', as previously shown in the examples, will make
rtorrent behave correctly when 'check_hash=no' is set.
Changes since version 0.11.9 respectively 0.7.9:
- Support for DHT.
- Cleanup and refactoring of the API.
- Enable PEX by default.
- A lot of bug fixes and minor improvements
to version 0.7.9. Changes since 0.11.8 respectively 0.7.8:
- Improved detection of unnecessary handshakes to decrease the load when
using PEX.
- Limit the number of PEX connections to 8 per download.
- Fixed several bugs in PEX.
- Fixed several sigc++ 2.1 compile errors.
- Print to the log when close_on_diskspace gets triggered.
This is not a stable version. The update was however necessary after
the premature update of the "libsigc++" package which broke the build
of these packages.
to version 0.7.8. Changes since version 0.11.7/0.7.7:
- Several new commands for use with XMLRPC. See the SVN log for a
complete list.
- Fixed the wrong tracker requests being sent when finishing a torrent.
- Added Peer Exchange support, enable with the "peer_exchange=yes"
option.
- Don't skip the last line in rc files missing the final newline.
- The torrent is no longer closed on finished for on_finished commands
as it did last release. Instead d.set_directory causes the download to
call close_directly to allow moving of finished torrents.
- Added "close_on_ratio".
- Allow commands to be appended to "{stop,close}_on_ratio", so you can
e.g. erase a torrent that has finished.
- Set "encryption=allow_incoming,prefer_plaintext,enable_retry" by default.
to version 0.7.7. Changes since version 0.11.6/0.7.6:
- Renamed all commands to from e.g "get_d_*" to "d.get_*". Remember to
update your rc file.
- Removed support for appending multiple commands to 'schedule'.
Multiple commands must now be quoted, e.g "print=cmd1 ;print=cmd2".
- Enabled 'max_downloads_div' by default. This should give better
connection responsiveness if a reasonable download throttle rate is set.
- Added a default low_diskspace check for 500MB. It is scheduled with
the id "low_diskspace".
- Allow lists as arguments in commands by using '{' and '}'. The list
will be recursed and all '$' will be called, while '~' will only be
expanded when in the first element in the list. E.g "execute =
touch,{~/tmp/,$get_client_version=}".
- Added 'execute_log' for logging the result of calls to 'execute'.
- Dynamically sized SCGI read buffer, system.multicall should work
properly now.
- Added 'call_download' that takes a view as the first parameter and
then a list of commands. It will return a list of lists containing the
results from those commands.
- Allow loading torrents from https and ftp uri's.
A quick release to get new "d.get_*" naming into use before too many
people write XMLRPC clients using the old commands.
Change since versions 0.11.4 respectively 0.7.4:
- The old option handler has been rewritten.
- Added support for SCGI rpc calls.
- Added "http_ca{path/cert}" options. Patch by Johan Gunnarsson
- Added configure options that allow building universal binaries.
- Fixed a bug that caused piped requests to be lost.
- Improved XMLRPC support, including support for 64bit ints, removed
defective FastCGI support,
- Added a large number of commands for use with XMLRPC. See
system.listMethods for a complete list.
- Fixed a bug where the tracker re-announce interval for the previous
tracker was being used. Now the announce intervals for each tracker is
stored seperately.
- Commands that pass through rpc::parse_command_* now support inline
commands that start with a '$'. E.g 'print="$get_ip="'.
- Allow ';' as a separator for multi-command lines. Not recognized by
the string parser, so it must be preceded by whitespace.
- Allow escaping of newlines in the resource file.
- The "load_*" commands now allow a list of commands to be appended.
These commands will be called on the newly loaded download.
to version 0.7.4. Changes since versions 0.11.1 and 0.7.1 respectively:
- Added "max_open_http" option that limits the max number of simultaneous
http connections. By default set to 32.
- Directory structured view of the file list. The '/' key collapses
directories, while the right arrow or ^F enters the selected directory.
Changing the priority for a directory changes all contained files.
- Added "create_link" and "delete_link" options which apply to a download.
These must be used with the new "on_*" options, so as to allow you to
create symbolic links when starting, stopping, finishing, etc, a torrent.
- The "tos" option was parsing the hex value with unit == 0, which caused
it to always zero it.
- Forgot to check if there were any torrents hashing before starting new
non-fast-resume checks, which would cause multiple torrents to be hashed
at once.
- File progress is now updated when hash_check is called, and no longer
cleared on close. This fixes a bug with >100% file progress being reported
and optimizes file progress updating for completed torrents.
- Disabled IPv6 http requests so the trackers won't think we support it,
and enabled curl's support for gzip encodings.
- Added 'seeding' view on key 8.
- Added "max_{up,down}loads_{div,global}" options. See the man page for
more information.
- Added support for dvorak keyboard layout. Patch by matled at gmx.net.
- The STOPPED request was being canceled when a download was closed with
f.ex ^K, moved it so it only happens when the download is removed.
- Allow properly quoted and escaped arguments to options. F.ex "schedule
= wd,10,10,load_start=~/Foo\ Bar/*.torrent" and "schedule =
wd,10,10,load_start="~/Foo Bar/*.torrent"" now works.
- Added unlimited setting for max unchoked in ChokeManager and made it
the default. Set with 0 as a temporary hack.
- Don't resize empty files used for creating directories.
version 0.7.1. Major changes since 0.10.4/0.6.4:
- support for the CANCEL piece request message
- support for tunneling through HTTP 1.0 proxies
- Azureus-style encryption
version 0.6.4. Changes since version 0.10.3 and 0.6.4:
- Use the actual completed torrent data in the 'downloaded' field sent to
the tracker, rather than the download rate total. This should fix some
problems with too much downloaded data being reported to the tracker.
package to version 0.6.3. Change since version 0.10.2 respectively 0.6.2:
- Didn't properly clean up when a torrent with the same info hash was
rejected. This caused random crashes and memory leaks.
- Properly cancel pieces that are skipped when downloading.
version 0.6.2. Changes since 0.10.1 respectively 0.6.1:
- Rebound the old ^P for commands to ^X due to a collision with up key.
- The ^F and ^B keys can be used instead of left and right arrows.
- Support for qwertz keyboard layout.
- Fixed a bug that caused quick hash checking to mark chunks as
unfinished if it was unable to map them.
- Peer info with the corrupt upload counter is now saved in the session
torrent. Uninteresting peers are removed at regular intervals.
- Allow only one connection from a single host. A peer's listening port
is now kept track of separately from the connection port.
- An integer is used in the session torrent instead of a bitfield when
either none or all chunks are done.
- Added code for preloading chunks that get mapped, currently disabled.
- When checking how much free disk-space remains, any file or directory
that is a symlink is tested as they may be on a different mount point.
- Fixed most of the bugs reported.
to version 0.6.1. Changes since version 0.8.5 respectively 0.4.5 are:
- improved user interface (apparently also fixing redraw problems
under DragonFly BSD)
- better diskspace handling
- show client names and versions in the peer list
- improved tracker communication
- lots of bug fixes
Based on patches provided by Jan 'Rumko' Kosir in private e-mail.
since they always need a C compiler, even when the source code is
completely in C++.
For some other packages, stated in the comment that a C compiler is
really not needed.