1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-26 09:46:09 +00:00

- Non-devel port have much newer version, and since there is no visible

development branch, remove

PR:		ports/114223
Submitted by:	Wesley Shields <wxs@atarininja.org>
This commit is contained in:
Pav Lucistnik 2007-07-10 21:37:24 +00:00
parent eadd1cb03a
commit 2c686b352e
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=195388
33 changed files with 2 additions and 1618 deletions

2
MOVED
View File

@ -3097,3 +3097,5 @@ net/php5-rrdtool|databases/php5-rrdtool|2007-07-08|Chase move of databases/rrdto
textproc/ruby-spreadsheet-excel|textproc/rubygem-spreadsheet-excel|2007-07-09|Port updated in rubygem version
net/gnet-glib2|net/gnet2|2007-07-09|Functionality merged into gnet2
www/lynx-ssl|www/lynx|2007-07-10|SSL enabled by default in www/lynx
net-p2p/py-bittorrent-devel|net-p2p/py-bittorent|2007-07-10|Non-devel port have newer version
net-p2p/py-bittorrent-core-devel|net-p2p/py-bittorent-core|2007-07-10|Non-devel port have newer version

View File

@ -96,8 +96,6 @@
SUBDIR += py-bittornado-core
SUBDIR += py-bittorrent
SUBDIR += py-bittorrent-core
SUBDIR += py-bittorrent-core-devel
SUBDIR += py-bittorrent-devel
SUBDIR += py-fngrab
SUBDIR += py-kenosis
SUBDIR += py-kenosis-bittorrent

View File

@ -1,17 +0,0 @@
# New ports collection makefile for: py-bittorrent-core
# Date created: 21 October 2003
# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org> and Mezz <mezz7@cox.net>
#
# $FreeBSD$
#
PKGNAMESUFFIX= -core-devel
COMMENT= Client 'core' for the BitTorrent peer-to-peer network
# build only the CORE
WITHOUT_GUI= yes
MASTERDIR= ${.CURDIR}/../py-bittorrent-devel
.include "${MASTERDIR}/Makefile"

View File

@ -1,239 +0,0 @@
# New ports collection makefile for: BitTorrent
# Date created: Sun Mar 16 06:34:12 UTC 2003
# Whom: Mario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>
#
# $FreeBSD$
#
PORTNAME= BitTorrent
PORTVERSION= 4.20.4
PORTREVISION= 4
PORTEPOCH= 1
CATEGORIES?= net-p2p python
MASTER_SITES= http://download.bittorrent.com/dl/
MASTER_SITE_SUBDIR= ${PORTNAME:L}
PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
PKGNAMESUFFIX?= -devel
MAINTAINER= ports@FreeBSD.org
COMMENT?= A peer-to-peer tool for distributing files written in Python
RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/dns/__init__.py:${PORTSDIR}/dns/py-dnspython \
${PYTHON_SITELIBDIR}/Crypto/__init__.py:${PORTSDIR}/security/py-pycrypto
USE_GETTEXT= yes
USE_PYTHON= yes
USE_PYDISTUTILS= yes
USE_TWISTED_RUN= yes
CONFLICTS= py??-*[Bb]it[Tt]orrent* py??-*[Bb]it[Tt]ornado* btqueue*
NO_LATEST_LINK= yes
.ifndef(NOPORTDOCS)
PORTDOCS= \
INSTALL.unix.txt \
LICENSE.txt \
README.txt \
TRACKERLESS.txt \
credits.txt \
credits-l10n.txt
.else
EXTRA_PATCHES+= ${FILESDIR}/extra-noportdocs-setup.py
.endif
.include <bsd.port.pre.mk>
.if ${ARCH} != "i386"
WITHOUT_PSYCO= yes
.endif
# required for GUI
.ifndef(WITHOUT_GUI)
RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/wx-2.6-gtk2-unicode/wxPython/__init__.py:${PORTSDIR}/x11-toolkits/py-wxPython26-unicode
PLIST_FILES+= \
bin/bittorrent \
bin/maketorrent \
share/pixmaps/BitTorrent/bittorrent.ico \
share/pixmaps/BitTorrent/flags/AE.png \
share/pixmaps/BitTorrent/flags/AR.png \
share/pixmaps/BitTorrent/flags/AT.png \
share/pixmaps/BitTorrent/flags/AU.png \
share/pixmaps/BitTorrent/flags/BE.png \
share/pixmaps/BitTorrent/flags/BG.png \
share/pixmaps/BitTorrent/flags/BR.png \
share/pixmaps/BitTorrent/flags/CA.png \
share/pixmaps/BitTorrent/flags/CH.png \
share/pixmaps/BitTorrent/flags/CL.png \
share/pixmaps/BitTorrent/flags/CN.png \
share/pixmaps/BitTorrent/flags/CO.png \
share/pixmaps/BitTorrent/flags/CY.png \
share/pixmaps/BitTorrent/flags/CZ.png \
share/pixmaps/BitTorrent/flags/DE.png \
share/pixmaps/BitTorrent/flags/DK.png \
share/pixmaps/BitTorrent/flags/ES.png \
share/pixmaps/BitTorrent/flags/EU.png \
share/pixmaps/BitTorrent/flags/FI.png \
share/pixmaps/BitTorrent/flags/FR.png \
share/pixmaps/BitTorrent/flags/GB.png \
share/pixmaps/BitTorrent/flags/GR.png \
share/pixmaps/BitTorrent/flags/GT.png \
share/pixmaps/BitTorrent/flags/HK.png \
share/pixmaps/BitTorrent/flags/HU.png \
share/pixmaps/BitTorrent/flags/IT.png \
share/pixmaps/BitTorrent/flags/JP.png \
share/pixmaps/BitTorrent/flags/KR.png \
share/pixmaps/BitTorrent/flags/KW.png \
share/pixmaps/BitTorrent/flags/LT.png \
share/pixmaps/BitTorrent/flags/LV.png \
share/pixmaps/BitTorrent/flags/MX.png \
share/pixmaps/BitTorrent/flags/NA.png \
share/pixmaps/BitTorrent/flags/NL.png \
share/pixmaps/BitTorrent/flags/NO.png \
share/pixmaps/BitTorrent/flags/PR.png \
share/pixmaps/BitTorrent/flags/PT.png \
share/pixmaps/BitTorrent/flags/RU.png \
share/pixmaps/BitTorrent/flags/SE.png \
share/pixmaps/BitTorrent/flags/SG.png \
share/pixmaps/BitTorrent/flags/SI.png \
share/pixmaps/BitTorrent/flags/TW.png \
share/pixmaps/BitTorrent/flags/US.png \
share/pixmaps/BitTorrent/flags/YU.png \
share/pixmaps/BitTorrent/flags/ZA.png \
share/pixmaps/BitTorrent/flags/noimage.png \
share/pixmaps/BitTorrent/flags/unknown.png \
share/pixmaps/BitTorrent/logo/banner.png \
share/pixmaps/BitTorrent/logo/bittorrent_icon.png \
share/pixmaps/BitTorrent/logo/bittorrent_icon_16.png \
share/pixmaps/BitTorrent/logo/bittorrent_icon_24.png \
share/pixmaps/BitTorrent/logo/bittorrent_icon_32.png \
share/pixmaps/BitTorrent/logo/bittorrent_icon_48.png \
share/pixmaps/BitTorrent/themes/default/add_16.png \
share/pixmaps/BitTorrent/themes/default/add_24.png \
share/pixmaps/BitTorrent/themes/default/add_32.png \
share/pixmaps/BitTorrent/themes/default/fileops/first_16.png \
share/pixmaps/BitTorrent/themes/default/fileops/first_24.png \
share/pixmaps/BitTorrent/themes/default/fileops/first_32.png \
share/pixmaps/BitTorrent/themes/default/fileops/never_16.png \
share/pixmaps/BitTorrent/themes/default/fileops/never_24.png \
share/pixmaps/BitTorrent/themes/default/fileops/never_32.png \
share/pixmaps/BitTorrent/themes/default/fileops/normal_16.png \
share/pixmaps/BitTorrent/themes/default/fileops/normal_24.png \
share/pixmaps/BitTorrent/themes/default/fileops/normal_32.png \
share/pixmaps/BitTorrent/themes/default/progressbar.png \
share/pixmaps/BitTorrent/themes/default/search_16.png \
share/pixmaps/BitTorrent/themes/default/search_24.png \
share/pixmaps/BitTorrent/themes/default/search_32.png \
share/pixmaps/BitTorrent/themes/default/settings_16.png \
share/pixmaps/BitTorrent/themes/default/settings_24.png \
share/pixmaps/BitTorrent/themes/default/settings_32.png \
share/pixmaps/BitTorrent/themes/default/statuslight/broken.png \
share/pixmaps/BitTorrent/themes/default/statuslight/natted.png \
share/pixmaps/BitTorrent/themes/default/statuslight/pre-natted.png \
share/pixmaps/BitTorrent/themes/default/statuslight/running.png \
share/pixmaps/BitTorrent/themes/default/statuslight/starting.png \
share/pixmaps/BitTorrent/themes/default/statuslight/stopped.png \
share/pixmaps/BitTorrent/themes/default/torrentops/info_16.png \
share/pixmaps/BitTorrent/themes/default/torrentops/info_24.png \
share/pixmaps/BitTorrent/themes/default/torrentops/info_32.png \
share/pixmaps/BitTorrent/themes/default/torrentops/launch_16.png \
share/pixmaps/BitTorrent/themes/default/torrentops/launch_24.png \
share/pixmaps/BitTorrent/themes/default/torrentops/launch_32.png \
share/pixmaps/BitTorrent/themes/default/torrentops/remove_16.png \
share/pixmaps/BitTorrent/themes/default/torrentops/remove_24.png \
share/pixmaps/BitTorrent/themes/default/torrentops/remove_32.png \
share/pixmaps/BitTorrent/themes/default/torrentops/resume_16.png \
share/pixmaps/BitTorrent/themes/default/torrentops/resume_24.png \
share/pixmaps/BitTorrent/themes/default/torrentops/resume_32.png \
share/pixmaps/BitTorrent/themes/default/torrentops/stop_16.png \
share/pixmaps/BitTorrent/themes/default/torrentops/stop_24.png \
share/pixmaps/BitTorrent/themes/default/torrentops/stop_32.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/complete.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/created.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/downloading.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/error.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/finishing.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/force-seed.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/paused.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/seeding.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/starting.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/stopped.png \
share/pixmaps/BitTorrent/themes/default/torrentstate/unknown.png
PLIST_SUB+= \
GUI=""
.else
EXTRA_PATCHES+= ${FILESDIR}/extra-nogui-patch-setup.py
PLIST_SUB+= \
GUI="@comment "
.endif
# required for PSYCO
.ifndef(WITHOUT_PSYCO)
RUN_DEPENDS+= ${PYTHON_SITELIBDIR}/psyco/_psyco.so:${PORTSDIR}/devel/py-psyco
EXTRA_PATCHES+= \
${FILESDIR}/extra-psyco-patch-bittorrent-console.py \
${FILESDIR}/extra-psyco-patch-bittorrent-curses.py \
${FILESDIR}/extra-psyco-patch-bittorrent-tracker.py \
${FILESDIR}/extra-psyco-patch-bittorrent.py \
${FILESDIR}/extra-psyco-patch-changetracker-console.py \
${FILESDIR}/extra-psyco-patch-launchmany-console.py \
${FILESDIR}/extra-psyco-patch-launchmany-curses.py \
${FILESDIR}/extra-psyco-patch-maketorrent-console.py \
${FILESDIR}/extra-psyco-patch-maketorrent.py \
${FILESDIR}/extra-psyco-patch-torrentinfo-console.py
.endif
# public.key
PLIST_DIRS+= \
%%DATADIR%%
PLIST_FILES+= \
%%DATADIR%%/public.key
pre-everything::
.ifndef(WITHOUT_GUI)
@${ECHO_MSG} '===> Define WITHOUT_GUI to disable GUI installation'
.endif
.ifndef(WITHOUT_PSYCO)
@${ECHO_MSG} '===> Define WITHOUT_PSYCO to disable devel/py-psyco optimization'
.endif
pre-patch:
# do not install public.key, we will do it ourselves
@${REINPLACE_CMD} -E \
-e "s|^.*'public.key'.*$$||" \
${WRKSRC}/setup.py
post-patch:
# public.key will be located under ${DATADIR} not ${DOCSDIR}
@${REINPLACE_CMD} -E \
-e "s|%%DATADIR%%|'${DATADIR}/'|" \
${WRKSRC}/BitTorrent/NewVersion.py
post-install:
# set proper permissions
@${CHMOD} -R ${SHAREMODE} \
${PYTHONPREFIX_SITELIBDIR}/BitTorrent
@${CHMOD} ${SHAREMODE} ${PYTHONPREFIX_SITELIBDIR}/BitTorrent
@${CHMOD} -R a+X ${PYTHONPREFIX_SITELIBDIR}/BitTorrent
.ifndef(WITHOUT_GUI)
# pixmaps
@${CHMOD} -R ${SHAREMODE} \
${PREFIX}/share/pixmaps/${PORTNAME}/*
@${CHMOD} -R a+X \
${PREFIX}/share/pixmaps/${PORTNAME}
.endif
.ifndef(NOPORTDOCS)
# docs
@${CHMOD} -R ${SHAREMODE} \
${DOCSDIR}/*
# install missing doc
@${INSTALL_DATA} ${WRKSRC}/TRACKERLESS.txt ${DOCSDIR}
.endif
# public.key
@${MKDIR} ${DATADIR}
@${INSTALL_DATA} ${WRKSRC}/public.key ${DATADIR}
.include <bsd.port.post.mk>

View File

@ -1,3 +0,0 @@
MD5 (BitTorrent-4.20.4.tar.gz) = 6616f6ae8a8460804ce43b3cf4b6f73b
SHA256 (BitTorrent-4.20.4.tar.gz) = 54a231c6f95175fab6e493fef1e726f7f198d84396f0d6e5d6541db77b545d69
SIZE (BitTorrent-4.20.4.tar.gz) = 2395512

View File

@ -1,17 +0,0 @@
--- setup.py.orig Sat Jun 24 16:54:04 2006
+++ setup.py Sat Jun 24 16:54:55 2006
@@ -42,2 +42,2 @@
-symlinks = ["bittorrent" , "bittorrent-curses", "bittorrent-console",
- "maketorrent", "maketorrent-console",
+symlinks = ["bittorrent-curses", "bittorrent-console",
+ "maketorrent-console",
@@ -68,1 +68,0 @@
- (img_root, ['images/bittorrent.ico',]),
@@ -74,7 +74,0 @@
-for d in ('flags', 'logo', 'themes/default',
- 'themes/default/statuslight', 'themes/default/torrentstate',
- 'themes/default/torrentops' , 'themes/default/fileops' ,):
- data_files.append(
- (os.path.join(img_root, d),
- glob.glob(os.path.join('images', d, '*.png')))
- )

View File

@ -1,6 +0,0 @@
--- setup.py.orig Sat Jun 24 16:55:50 2006
+++ setup.py Sat Jun 24 16:57:02 2006
@@ -69,3 +69,0 @@
- (doc_root, ['credits.txt', 'credits-l10n.txt', 'LICENSE.txt', 'README.txt',
-
- 'INSTALL.unix.txt'] + extra_docs),

View File

@ -1,16 +0,0 @@
--- bittorrent-console.py.orig Tue Jun 6 20:43:25 2006
+++ bittorrent-console.py Thu Jun 15 14:44:32 2006
@@ -14,6 +14,13 @@
from __future__ import division
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
from BitTorrent.translation import _
import pdb

View File

@ -1,16 +0,0 @@
--- bittorrent-curses.py.orig Tue Jun 6 20:43:25 2006
+++ bittorrent-curses.py Thu Jun 15 14:45:05 2006
@@ -15,6 +15,13 @@
from __future__ import division
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
from BitTorrent.translation import _
SPEW_SCROLL_RATE = 1

View File

@ -1,16 +0,0 @@
--- bittorrent-tracker.py Wed Oct 12 01:08:15 2005
+++ bittorrent-tracker.py Wed Oct 12 07:57:55 2005
@@ -12,6 +12,13 @@
# Written by Bram Cohen
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
if __name__ == '__main__':
from BitTorrent.platform import install_translation
install_translation()

View File

@ -1,16 +0,0 @@
--- bittorrent.py.orig Tue May 16 20:59:49 2006
+++ bittorrent.py Thu May 18 23:04:01 2006
@@ -14,6 +14,13 @@
from __future__ import division
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
import os
import sys
try:

View File

@ -1,16 +0,0 @@
--- changetracker-console.py.orig Tue Jun 6 20:43:34 2006
+++ changetracker-console.py Thu Jun 15 14:45:47 2006
@@ -12,6 +12,13 @@
# Written by Henry 'Pi' James and Bram Cohen
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
from BitTorrent.translation import _
from os.path import basename

View File

@ -1,16 +0,0 @@
--- launchmany-console.py Wed Oct 12 01:08:27 2005
+++ launchmany-console.py Wed Oct 12 07:58:23 2005
@@ -12,6 +12,13 @@
# Written by John Hoffman
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
if __name__ == '__main__':
from BitTorrent.platform import install_translation
install_translation()

View File

@ -1,16 +0,0 @@
--- launchmany-curses.py.orig Tue Jun 6 20:43:42 2006
+++ launchmany-curses.py Thu Jun 15 14:46:16 2006
@@ -14,6 +14,13 @@
from __future__ import division
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
from BitTorrent.translation import _
DOWNLOAD_SCROLL_RATE = 1

View File

@ -1,16 +0,0 @@
--- maketorrent-console.py Wed Oct 12 01:08:27 2005
+++ maketorrent-console.py Wed Oct 12 07:58:31 2005
@@ -12,6 +12,13 @@
# Written by Bram Cohen
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
if __name__ == '__main__':
from BitTorrent.platform import install_translation
install_translation()

View File

@ -1,16 +0,0 @@
--- maketorrent.py.orig Tue Jun 6 20:43:43 2006
+++ maketorrent.py Thu Jun 15 14:46:45 2006
@@ -14,6 +14,13 @@
from __future__ import division
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
from BitTorrent.translation import _
import os

View File

@ -1,16 +0,0 @@
--- torrentinfo-console.py.orig Tue Jun 6 20:44:39 2006
+++ torrentinfo-console.py Thu Jun 15 14:47:13 2006
@@ -12,6 +12,13 @@
# Written by Henry 'Pi' James, Loring Holden and Matt Chisholm
+try:
+ import psyco
+ assert psyco.__version__ >= 0x010300f0
+ psyco.full()
+except:
+ pass
+
from BitTorrent.translation import _
from sys import *

View File

@ -1,11 +0,0 @@
--- ./BitTorrent/AutoUpdateButler.py.orig Fri Jul 28 23:30:10 2006
+++ ./BitTorrent/AutoUpdateButler.py Fri Jul 28 23:29:47 2006
@@ -375,7 +375,7 @@
self.multitorrent.remove_auto_updates_except(infohash)
try:
- df = self.multitorrent.create_torrent(metainfo, installer_path, installer_path, hidden=True, is_auto_update=True)
+ df = self.multitorrent.create_torrent(metainfo, installer_path, installer_path, installer_path, installer_path, hidden=True, is_auto_update=True)
yield df
df.getResult()
except TorrentAlreadyRunning:

View File

@ -1,11 +0,0 @@
--- ./BitTorrent/HTTPHandler.py.orig Wed Jul 12 02:18:18 2006
+++ ./BitTorrent/HTTPHandler.py Sat Jul 22 17:42:24 2006
@@ -19,7 +19,7 @@
-DEBUG = True
+DEBUG = False
weekdays = [_("Mon"), _("Tue"), _("Wed"), _("Thu"), _("Fri"), _("Sat"), _("Sun")]

View File

@ -1,35 +0,0 @@
--- ./BitTorrent/MultiTorrent.py.orig Mon Jul 24 00:58:59 2006
+++ ./BitTorrent/MultiTorrent.py Sat Jul 29 00:02:03 2006
@@ -270,6 +270,8 @@
self.logger.log(severity, message, exc_info=exc_info)
def create_torrent(self, metainfo, save_incomplete_as, save_as,
+ saveas_style_save_incomplete_as=None,
+ saveas_style_save_as=None,
hidden=False, is_auto_update=False):
if self.is_single_torrent and len(self.torrents) > 0:
print "create_torrent: len(self.torrents)=", len(self.torrents)
@@ -295,9 +297,11 @@
infohash,
lambda s : self.global_error(logging.ERROR, s))
- t = Torrent(metainfo, save_incomplete_as, save_as, self.config,
- self.data_dir, self.rawserver, self.choker,
- self.singleport_listener, self.ratelimiter,
+ t = Torrent(metainfo, save_incomplete_as, save_as,
+ saveas_style_save_incomplete_as,
+ saveas_style_save_as,
+ self.config, self.data_dir, self.rawserver,
+ self.choker, self.singleport_listener, self.ratelimiter,
self.total_downmeasure, self.filepool, self.dht, self,
self.log_root, hidden=hidden, is_auto_update=is_auto_update)
retdf = Deferred()
@@ -686,7 +690,7 @@
'('+unicode(e.args[0])+')')
return None
- t = Torrent(metainfo, "", "", self.config, self.data_dir,
+ t = Torrent(metainfo, "", "", "", "", self.config, self.data_dir,
self.rawserver, self.choker,
self.singleport_listener, self.ratelimiter,
self.total_downmeasure, self.filepool, self.dht, self,

View File

@ -1,11 +0,0 @@
--- ./BitTorrent/NewVersion.py.orig Mon Jun 12 22:45:49 2006
+++ ./BitTorrent/NewVersion.py Wed Jun 21 23:57:08 2006
@@ -170,7 +170,7 @@
self.threadwrap(self.errorfunc, logging.WARNING, '\n'.join(terrors))
if torrentfile and signature:
- public_key_file = open(os.path.join(doc_root, 'public.key'), 'rb')
+ public_key_file = open(os.path.join(%%DATADIR%%, 'public.key'), 'rb')
public_key = pickle.load(public_key_file)
h = sha(torrentfile).digest()
if public_key.verify(h, signature):

View File

@ -1,11 +0,0 @@
--- ./BitTorrent/OldTorrentQueue.py.orig Wed Jul 12 02:18:22 2006
+++ ./BitTorrent/OldTorrentQueue.py Sat Jul 22 17:42:24 2006
@@ -20,7 +20,7 @@
from BitTorrent.platform import bttime
-from BitTorrent.download import Feedback, Multitorrent
+from BitTorrent.MultiTorrent import Feeback, MultiTorrent
from BitTorrent.bencode import bdecode
from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
from BitTorrent.prefs import Preferences

View File

@ -1,12 +0,0 @@
--- ./BitTorrent/Rerequester.py.orig Wed Jul 12 02:18:25 2006
+++ ./BitTorrent/Rerequester.py Sat Jul 22 17:42:24 2006
@@ -369,7 +369,8 @@
def _postrequest(self, data=None, errormsg=None, exc=None, peerid=None):
assert thread.get_ident() == self.rawserver.ident
self.current_started = None
- self.errorfunc(logging.INFO, 'postrequest: ' + str(self.current_started))
+ if self.current_started is not None:
+ self.errorfunc(logging.INFO, 'postrequest: ' + str(self.current_started))
self.last_time = bttime()
if self.dead:
return

View File

@ -1,61 +0,0 @@
--- ./BitTorrent/Torrent.py.orig Wed Jul 12 02:18:28 2006
+++ ./BitTorrent/Torrent.py Sat Jul 29 00:08:59 2006
@@ -58,7 +58,6 @@
from khashmir import const
-
class Feedback(object):
"""Inidivual torrents (Torrent) perform callbacks regarding
changes of state to the rest of the program via a Feedback
@@ -90,8 +89,9 @@
POLICIES = ["stop", "start", "auto"]
PRIORITIES = ["low", "normal", "high"]
- def __init__(self, metainfo, working_path, destination_path, config,
- data_dir, rawserver, choker,
+ def __init__(self, metainfo, working_path, destination_path,
+ saveas_style_working_path, saveas_style_destination_path,
+ config, data_dir, rawserver, choker,
singleport_listener, ratelimiter, total_downmeasure,
filepool, dht, feedback, log_root,
hidden=False, is_auto_update=False):
@@ -152,8 +152,11 @@
self.config = Preferences(config)#, persist_callback=self._dump_torrent_config)
self.working_path = working_path #sets in config. See _set_working_path
-
self.destination_path = destination_path # sets in config.
+
+ self.saveas_style_working_path = saveas_style_working_path
+ self.saveas_style_destination_path = saveas_style_destination_path
+
self.priority = "normal"
self.policy = "auto"
@@ -258,6 +261,9 @@
def is_running(self):
return self.state == "running"
+ def is_seeding(self):
+ return self._activity == (_("seeding"), 1)
+
def is_context_valid(self):
return self.context_valid
@@ -819,8 +825,13 @@
self.logger.debug("successfully paused torrent, moving file")
self.state = "finishing"
- df = ThreadedDeferred(_wrap_task(self._rawserver.external_add_task),
- move, self.working_path, self.destination_path)
+ if self.saveas_style_working_path is not None and self.saveas_style_destination_path is not None:
+ df = ThreadedDeferred(_wrap_task(self._rawserver.external_add_task),
+ move, self.saveas_style_working_path,
+ self.saveas_style_destination_path)
+ else:
+ df = ThreadedDeferred(_wrap_task(self._rawserver.external_add_task),
+ move, self.working_path, self.destination_path)
yield df
df.getResult()

View File

@ -1,15 +0,0 @@
--- ./BitTorrent/XMultiTorrent.py.orig Fri Jul 28 23:25:45 2006
+++ ./BitTorrent/XMultiTorrent.py Fri Jul 28 23:27:31 2006
@@ -50,10 +50,10 @@
return Binary(infohash)
- def _create_torrent(self, torrent, dlpath):
+ def _create_torrent(self, torrent, save_incomplete_as, save_as):
d = bdecode(torrent)
metainfo = ConvertedMetainfo(d)
- self.multitorrent.create_torrent(metainfo, dlpath)
+ self.multitorrent.create_torrent(metainfo, save_incomplete_as, save_as)
return metainfo.infohash
def xmlrpc_start_torrent(self, infohash):

View File

@ -1,15 +0,0 @@
--- ./BitTorrent/XTorrentQueue.py.orig Fri Jul 28 23:27:55 2006
+++ ./BitTorrent/XTorrentQueue.py Fri Jul 28 23:28:20 2006
@@ -32,10 +32,10 @@
return Binary(infohash)
- def _create_torrent(self, torrent, dlpath):
+ def _create_torrent(self, torrent, save_incomplete_as, save_as):
d = bdecode(torrent)
metainfo = ConvertedMetainfo(d)
- self.tq.create_torrent(metainfo, dlpath)
+ self.tq.create_torrent(metainfo, save_incomplete_as, save_as)
return metainfo.infohash
def xmlrpc_start_torrent(self, infohash):

View File

@ -1,22 +0,0 @@
--- ./BitTorrent/defaultargs.py.orig Wed Jul 12 02:18:33 2006
+++ ./BitTorrent/defaultargs.py Sat Jul 22 17:42:24 2006
@@ -20,6 +20,8 @@
if os.name == 'posix':
if os.uname()[0] in ['Darwin']:
BAD_LIBC_WORKAROUND_DEFAULT = True
+ if os.uname()[0] in ['FreeBSD']:
+ BAD_LIBC_WORKAROUND_DEFAULT = True
MAX_INCOMPLETE = 100
MAX_FILES_OPEN = 50
@@ -376,6 +378,10 @@
"name determined by --saveas_style. If this is left empty "
"each torrent will be saved under the directory of the "
"corresponding .torrent file")),
+ ('save_incomplete_in', u'',
+ _("local directory where the incomplete torrent downloads will be "
+ "stored until completion. Upon completion, downloads will be "
+ "moved to the directory specified by --save_in.")),
('parse_dir_interval', 60,
_("how often to rescan the torrent directory, in seconds") ),
('launch_delay', 0,

View File

@ -1,475 +0,0 @@
--- ./BitTorrent/launchmanycore.py.orig Wed Jul 12 02:18:34 2006
+++ ./BitTorrent/launchmanycore.py Fri Jul 28 23:45:22 2006
@@ -22,14 +22,17 @@
from traceback import print_exc
import logging
from BitTorrent import configfile
+from BitTorrent import platform
from BitTorrent.parsedir import parsedir
-from BitTorrent.MultiTorrent import MultiTorrent, Feedback
+from BitTorrent.MultiTorrent import MultiTorrent, Feedback, TorrentAlreadyRunning, TorrentAlreadyInQueue, TorrentNotInitialized
from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
from BitTorrent import BTFailure, UserFailure
from BitTorrent.RawServer_twisted import RawServer
from BitTorrent.yielddefer import launch_coroutine, _wrap_task
from BitTorrent.ConvertedMetainfo import ConvertedMetainfo
from BitTorrent.defer import DeferredEvent
+from BitTorrent.platform import encode_for_filesystem
+from BitTorrent.prefs import Preferences
from time import time
@@ -51,13 +54,13 @@
# logger Formatter, which is specific to exceptions, warnings, and
# info messages.
try:
+ self.display = display.display
self.logger = logging.getLogger(configfile_key)
self.multitorrent = None
self.rawserver = None
- self.config = config
+ self.config = Preferences().initWithDict(config)
self.configfile_key = configfile_key
- self.display = display
self.torrent_dir = config['torrent_dir']
@@ -78,30 +81,31 @@
self.hashcheck_queue = []
self.hashcheck_store = {}
- self.hashcheck_current = None
self.core_doneflag = DeferredEvent()
- rawserver_doneflag = DeferredEvent()
+ self.rawserver_doneflag = DeferredEvent()
self.rawserver = RawServer(self.config)
try:
# set up shut-down procedure before we begin doing things that
# can throw exceptions.
def shutdown():
- print "SHUTDOWNSHUTDOWNSHUTDOWN"
+ #print "SHUTDOWNSHUTDOWNSHUTDOWN"
self.logger.critical(_("shutting down"))
- for infohash in self.multitorrent.get_torrents():
- self.logger.info(_('dropped "%s"') %
- self.torrent_cache[infohash]['path'])
- # torrent = self.downloads[infohash]
- # if torrent is not None:
- # torrent.shutdown()
+ for torrent in self.multitorrent.get_torrents():
+ try:
+ removed = self.torrent_cache[torrent.infohash]['path']
+ self.logger.info(_('dropped "%s"') % removed)
+ except KeyError:
+ pass
+ if torrent is not None:
+ torrent.shutdown()
if self.multitorrent:
df = self.multitorrent.shutdown()
- set_flag = lambda *a : rawserver_doneflag.set()
+ set_flag = lambda *a : self.rawserver_doneflag.set()
df.addCallbacks(set_flag, set_flag)
else:
- rawserver_doneflag.set()
+ self.rawserver_doneflag.set()
# It is safe to addCallback here, because there is only one thread,
# but even if the code were multi-threaded, core_doneflag has not
@@ -112,9 +116,9 @@
self.rawserver.install_sigint_handler(self.core_doneflag)
- data_dir = config['data_dir']
- print "Creating MultiTorrent"
- self.multitorrent = MultiTorrent(config, self.rawserver, data_dir)
+ data_dir = self.config['data_dir']
+ #print "Creating MultiTorrent"
+ self.multitorrent = MultiTorrent(self.config, self.rawserver, data_dir)
self.rawserver.add_task(0, self.scan)
self.rawserver.add_task(0, self.stats)
@@ -131,162 +135,221 @@
self.rawserver.add_task(0,self.core_doneflag.set())
except UserFailure, e:
- output.exception(unicode(e.args[0]))
+ display.exception(unicode(e.args[0]))
self.rawserver.add_task(0,self.core_doneflag.set())
except:
data = StringIO()
print_exc(file = data)
- output.exception(data.getvalue())
+ display.exception(data.getvalue())
self.rawserver.add_task(0,self.core_doneflag.set())
# always make sure events get processed even if only for
# shutting down.
- print "listening forever"
- self.rawserver.listen_forever(rawserver_doneflag)
+ #print "listening forever"
+ try:
+ self.rawserver.listen_forever(self.rawserver_doneflag)
+ except AttributeError, e:
+ output.message(str(e))
+ raise
+ except KeyboardInterrupt:
+ raise
except:
data = StringIO()
print_exc(file = data)
- output.exception(data.getvalue())
+ display.exception(data.getvalue())
+ self.core_doneflag.set()
+ self.rawserver_doneflag.set()
def scan(self):
- print "LaunchMany.scan top."
+ #print "LaunchMany.scan top."
self.rawserver.add_task(self.config['parse_dir_interval'], self.scan)
r = parsedir(self.torrent_dir, self.torrent_cache,
self.file_cache, self.blocked_files,
self.logger.error)
- print "After parsedir"
+ #print "After parsedir"
( self.torrent_cache, self.file_cache, self.blocked_files,
added, removed ) = r
for infohash, data in removed.items():
self.logger.info(_('dropped "%s"') % data['path'])
self.remove(infohash)
for infohash, data in added.items():
- print "adding item:", data['path']
+ #print "adding item:", data['path']
self.logger.info(_('added "%s"' ) % data['path'])
- print "after self.logger.info"
+ #print "after self.logger.info"
if self.config['launch_delay'] > 0:
self.rawserver.add_task(self.config['launch_delay'], self.add, infohash, data)
# torrent may have been known from resume state.
elif not self.multitorrent.torrent_known(infohash):
self.add(infohash, data)
- print "LaunchMany.scan bottom"
+ #print "LaunchMany.scan bottom"
def stats(self):
self.rawserver.add_task(self.config['display_interval'], self.stats)
data = []
- for d in self.get_torrents():
- infohash = d.infohash
- cache = self.torrent_cache[infohash]
- if self.config['display_path']:
- name = cache['path']
- else:
- name = cache['name']
- size = cache['length']
- #d = self.downloads[infohash]
- progress = '0.0%'
- peers = 0
- seeds = 0
- seedsmsg = "S"
- dist = 0.0
- uprate = 0.0
- dnrate = 0.0
- upamt = 0
- dnamt = 0
- t = 0
- msg = ''
- #if d.state in ["created", "initializing"]:
- # status = _("waiting for hash check")
- #else:
- stats = d.get_status()
- status = stats['activity']
- progress = '%.1f%%' % (int(stats['fractionDone']*1000)/10.0)
- if d.is_running():
- s = stats
- dist = s['numCopies']
- if d.is_seed:
- seeds = 0 # s['numOldSeeds']
- seedsmsg = "s"
+ for d in self.multitorrent.get_torrents():
+ if d is not None:
+ infohash = d.infohash
+ try:
+ cache = self.torrent_cache[infohash]
+ except KeyError:
+ self.remove(infohash)
+ continue
+ if self.config['display_path']:
+ name = cache['path']
else:
- if s['numSeeds'] + s['numPeers']:
- t = stats['timeEst']
- if t is None:
- t = -1
- if t == 0: # unlikely
- t = 0.01
- status = _("downloading")
+ name = cache['name']
+ size = cache['length']
+ progress = '0.0%'
+ peers = 0
+ seeds = 0
+ seedsmsg = "S"
+ dist = 0.0
+ uprate = 0.0
+ dnrate = 0.0
+ upamt = 0
+ dnamt = 0
+ t = 0
+ msg = ''
+ #if d.state in ["created", "initializing"]:
+ # status = _("waiting for hash check")
+ #else:
+ stats = d.get_status()
+ status = stats['activity']
+ progress = '%.1f%%' % (int(stats['fractionDone']*1000)/10.0)
+ if d.is_running():
+ s = stats
+ dist = int(s['distributed_copies'])
+ if d.is_seeding():
+ seeds = 0 # s['numOldSeeds']
+ seedsmsg = "s"
else:
- t = -1
- status = _("connecting to peers")
- seeds = s['numSeeds']
- dnrate = stats['downRate']
- peers = s['numPeers']
- uprate = stats['upRate']
- upamt = s['upTotal']
- dnamt = s['downTotal']
+ if s['numSeeds'] + s['numPeers']:
+ t = stats['timeEst']
+ if t is None:
+ t = -1
+ if t == 0: # unlikely
+ t = 0.01
+ status = _("downloading")
+ else:
+ t = -1
+ status = _("connecting to peers")
+ seeds = s['numSeeds']
+ dnrate = stats['downRate']
+ peers = s['numPeers']
+ uprate = stats['upRate']
+ upamt = s['upTotal']
+ dnamt = s['downTotal']
- data.append(( name, status, progress, peers, seeds, seedsmsg, dist,
+ data.append(( name, status, progress, peers, seeds, seedsmsg, dist,
uprate, dnrate, upamt, dnamt, size, t, msg ))
stop = self.display(data)
if stop:
self.core_doneflag.set()
def remove(self, infohash):
- self.torrent_list.remove(infohash)
- if self.downloads[infohash] is not None:
- self.downloads[infohash].shutdown()
+ torrent = self.multitorrent.get_torrent(infohash)
+ if torrent is not None:
+ torrent.shutdown()
self.was_stopped(infohash)
- del self.downloads[infohash]
def add(self, infohash, data):
-
# data is a dict like
# { path:'/a/b/c.torrent', file:'c.torrent', length:90911, name:'Sea',
# metainfo: <metainfo>} Metainfo has bdecoded but not passed
# to ConvertedMetainfo.
- self.torrent_list.append(infohash)
- self.downloads[infohash] = None
self.hashcheck_queue.append(infohash)
self.hashcheck_store[infohash] = ConvertedMetainfo(data['metainfo'])
self.check_hashcheck_queue()
def check_hashcheck_queue(self):
- if self.hashcheck_current is not None or not self.hashcheck_queue:
+ if not self.hashcheck_queue:
return
- infohash = self.hashcheck_current = self.hashcheck_queue.pop(0)
+ infohash = self.hashcheck_queue.pop(0)
metainfo = self.hashcheck_store[infohash]
del self.hashcheck_store[infohash]
- filename = self.determine_filename(infohash)
+ save_incomplete_as, save_as = self.determine_filename(infohash)
+ saveas_style_save_incomplete_as, saveas_style_save_as = self._determine_filename(infohash)
torrent_path = self.torrent_cache[infohash]['path']
- self.start_torrent(torrent_path, metainfo, filename, filename)
+ self.start_torrent(torrent_path, metainfo, save_incomplete_as,save_as,
+ saveas_style_save_incomplete_as, saveas_style_save_as)
- def start_torrent(self,torrent_path,metainfo,save_incomplete_as,save_as):
+ def start_torrent(self,torrent_path,metainfo,save_incomplete_as,save_as,
+ saveas_style_save_incomplete_as=None,saveas_style_save_as=None):
assert isinstance(metainfo, ConvertedMetainfo)
df = launch_coroutine(_wrap_task(self.rawserver.add_task),
self._start_torrent, metainfo,
- save_incomplete_as, save_as)
+ save_incomplete_as, save_as,
+ saveas_style_save_incomplete_as=saveas_style_save_incomplete_as,
+ saveas_style_save_as=saveas_style_save_as)
df.addErrback(lambda e : self.logger.error(_("DIED: "),exc_info=e))
return df
- def _start_torrent(self, metainfo, save_incomplete_as,save_as):
+ def _start_torrent(self, metainfo, save_incomplete_as,save_as,
+ saveas_style_save_incomplete_as,saveas_style_save_as):
assert isinstance(metainfo, ConvertedMetainfo)
- df = self.multitorrent.create_torrent(metainfo,
- save_incomplete_as, save_as)
- yield df
- torrent = self.multitorrent.get_torrent(metainfo.infohash)
- if torrent.is_initialized():
- multitorrent.start_torrent(metainfo.infohash)
- #else: ???? # this would be an error condition already reported
- # to logger.
- check_hashcheck_queue()
+ save_incomplete_as, junk = platform.encode_for_filesystem(save_incomplete_as)
+ save_as, junk = platform.encode_for_filesystem(save_as)
+ if saveas_style_save_incomplete_as is not None:
+ saveas_style_save_incomplete_as, junk = platform.encode_for_filesystem(saveas_style_save_incomplete_as)
+ if saveas_style_save_as is not None:
+ saveas_style_save_as, junk = platform.encode_for_filesystem(saveas_style_save_as)
+ try:
+ df = self.multitorrent.create_torrent(metainfo,
+ save_incomplete_as, save_as,
+ saveas_style_save_incomplete_as,
+ saveas_style_save_as)
+ yield df
+ df.getResult()
+ except (TorrentAlreadyRunning, TorrentAlreadyInQueue):
+ pass
+ except:
+ raise
- def determine_filename(self, infohash):
+ infohash = metainfo.infohash
+
+ # find out if torrent has been recorded
+ try:
+ torrent = self.multitorrent.get_torrent(infohash)
+ if not torrent or torrent is None:
+ raise UnknownInfohash(infohash.encode("hex"))
+ except:
+ raise
+
+ # function to requeue torrent if has not been initialized just yet
+ def hashcheck_requeue(infohash):
+ df = self.remove(infohash)
+ data = self.torrent_cache[infohash]
+ if self.config['launch_delay'] > 0:
+ self.rawserver.add_task(self.config['launch_delay'], self.add, infohash, data)
+ else:
+ # wait at least 1
+ self.rawserver.add_task(1, self.add, infohash, data)
+
+ # Is it running?
+ running = self.multitorrent.torrent_running(infohash)
+ if not running:
+ try:
+ if torrent.is_initialized():
+ df = self.multitorrent.start_torrent(infohash)
+ yield df
+ df.getResult()
+ else:
+ raise TorrentNotInitialized
+ except TorrentAlreadyRunning:
+ pass
+ except TorrentNotInitialized:
+ hashcheck_requeue(infohash)
+ except:
+ raise
+
+ self.check_hashcheck_queue()
+
+ def determine_saveas_style(self, infohash):
x = self.torrent_cache[infohash]
name = x['name']
- savein = self.config['save_in']
- isdir = not x['metainfo']['info'].has_key('length')
style = self.config['saveas_style']
if style == 4:
torrentname = os.path.split(x['path'][:-8])[1]
@@ -295,20 +358,54 @@
style = 1
else:
style = 3
+ return style
+
+ # Specially handle the style 3 case.
+ # Style 3 breaks Torrent.move so we have an intermediate
+ # _determine_filename for Torrent.move benefit
+ # but determine_filename for general use
+ def determine_filename(self, infohash):
+ x = self.torrent_cache[infohash]
+ name = x['name']
+ isdir = not x['metainfo']['info'].has_key('length')
+ style = self.determine_saveas_style(infohash)
+ saveincompleteas, saveas = self._determine_filename(infohash)
+
+ # add filename
+ if style == 3 and not isdir:
+ saveas = os.path.join(saveas, name)
+ saveincompleteas = os.path.join(saveincompleteas, name)
+
+ return saveincompleteas, saveas
+
+ # generate paths appropriate for Torrent.move method
+ def _determine_filename(self, infohash):
+ x = self.torrent_cache[infohash]
+ name = x['name']
+ savein = self.config['save_in']
+ saveincompletein = self.config['save_incomplete_in']
+ style = self.determine_saveas_style(infohash)
if style == 1 or style == 3:
if savein:
saveas = os.path.join(savein,x['file'][:-8]) # strip '.torrent'
else:
saveas = x['path'][:-8] # strip '.torrent'
- if style == 3 and not isdir:
- saveas = os.path.join(saveas, name)
+ if saveincompletein:
+ saveincompleteas = os.path.join(saveincompletein, x['file'][:-8]) # strip '.torrent'
+ else:
+ saveincompleteas = x['path'][:-8] # strip '.torrent'
else:
if savein:
saveas = os.path.join(savein, name)
else:
saveas = os.path.join(os.path.split(x['path'])[0], name)
- return saveas
+ if saveincompletein:
+ saveincompleteas = os.path.join(saveincompletein, name)
+ else:
+ saveincompleteas = os.path.join(os.path.split(x['path'])[0], name)
+
+ return saveincompleteas, saveas
def was_stopped(self, infohash):
try:
@@ -317,8 +414,6 @@
pass
else:
del self.hashcheck_store[infohash]
- if self.hashcheck_current == infohash:
- self.hashcheck_current = None
self.check_hashcheck_queue()
# Exceptions are now reported via loggers.<
@@ -343,7 +438,7 @@
# the self.failed() callback can run during this loop.
for option, value in newvalues.iteritems():
self.multitorrent.set_option(option, value)
- for torrent in self.downloads.values():
+ for torrent in self.multitorrent.get_torrents():
if torrent is not None:
for option, value in newvalues.iteritems():
torrent.set_option(option, value)

View File

@ -1,11 +0,0 @@
--- ./BitTorrent/platform.py.orig Wed Jul 12 02:18:37 2006
+++ ./BitTorrent/platform.py Sat Jul 22 17:42:24 2006
@@ -334,7 +334,7 @@
def calc_unix_dirs():
- appdir = '%s-%s'%(app_name, version)
+ appdir = '%s'%(app_name)
ip = os.path.join(efs(u'share')[0], efs(u'pixmaps')[0], appdir)
dp = os.path.join(efs(u'share')[0], efs(u'doc')[0], appdir)
lp = os.path.join(efs(u'share')[0], efs(u'locale')[0])

View File

@ -1,32 +0,0 @@
--- ./launchmany-console.py.orig Wed Jul 12 02:18:54 2006
+++ ./launchmany-console.py Fri Jul 28 23:56:07 2006
@@ -49,6 +49,10 @@
uprate/1000, dnrate/1000, upamt/1024, dnamt/1024, msg))
return False
+ def exception(self, s):
+ exceptions.append(s)
+ #logging.getLogger('').info(_("SYSTEM ERROR - EXCEPTION GENERATED"))
+
if __name__ == '__main__':
uiname = 'launchmany-console'
@@ -76,7 +80,7 @@
platform.decode_from_filesystem(torrent_dir)
else:
torrent_dir = config['torrent_dir']
- torrent_dir,bad = platform.encode_from_filesystem(torrent_dir)
+ torrent_dir,bad = platform.encode_for_filesystem(torrent_dir)
if bad:
raise BTFailure(_("Warning: ")+config['torrent_dir']+
_(" is not a directory"))
@@ -139,4 +143,8 @@
#logging.getLogger().setLevel(INFO)
logging.getLogger('').setLevel(0)
- LaunchMany(config, d.display, 'launchmany-console')
+ LaunchMany(config, d, 'launchmany-console')
+
+ if exceptions:
+ print _("\nEXCEPTION:")
+ print exceptions[0]

View File

@ -1,65 +0,0 @@
--- ./launchmany-curses.py.orig Wed Jul 12 02:18:54 2006
+++ ./launchmany-curses.py Fri Jul 28 23:42:45 2006
@@ -18,6 +18,7 @@
DOWNLOAD_SCROLL_RATE = 1
+import logging
import sys, os
from threading import Event
from time import time, localtime, strftime
@@ -101,7 +102,7 @@
def winch_handler(self, signum, stackframe):
self.changeflag.set()
curses.endwin()
- self.scrwin.refresh()
+ self.scrwin.noutrefresh()
self.scrwin = curses.newwin(0, 0, 0, 0)
self._remake_window()
self._display_messages()
@@ -120,22 +121,26 @@
self.mainpan = curses.panel.new_panel(self.mainwin)
self.mainwin.scrollok(0)
self.mainwin.nodelay(1)
+ self.mainwin.clearok(1)
self.headerwin = curses.newwin(1, self.mainwinw+1,
1, self.mainwinx)
self.headerpan = curses.panel.new_panel(self.headerwin)
self.headerwin.scrollok(0)
+ self.headerwin.clearok(0)
self.totalwin = curses.newwin(1, self.mainwinw+1,
self.mainwinh+1, self.mainwinx)
self.totalpan = curses.panel.new_panel(self.totalwin)
self.totalwin.scrollok(0)
+ self.totalwin.clearok(0)
self.statuswinh = self.scrh-4-self.mainwinh
self.statuswin = curses.newwin(self.statuswinh, self.mainwinw+1,
self.mainwinh+3, self.mainwinx)
self.statuspan = curses.panel.new_panel(self.statuswin)
self.statuswin.scrollok(0)
+ self.statuswin.clearok(1)
try:
self.scrwin.border(ord('|'),ord('|'),ord('-'),ord('-'),ord(' '),ord(' '),ord(' '),ord(' '))
@@ -277,7 +282,8 @@
def LaunchManyWrapper(scrwin, config):
- LaunchMany(config, CursesDisplayer(scrwin), 'launchmany-curses')
+ d = CursesDisplayer(scrwin)
+ LaunchMany(config, d, 'launchmany-curses')
if __name__ == '__main__':
@@ -306,7 +312,7 @@
platform.decode_from_filesystem(torrent_dir)
else:
torrent_dir = config['torrent_dir']
- torrent_dir,bad = platform.encode_from_filesystem(torrent_dir)
+ torrent_dir,bad = platform.encode_for_filesystem(torrent_dir)
if bad:
raise BTFailure(_("Warning: ")+config['torrent_dir']+
_(" is not a directory"))

View File

@ -1,11 +0,0 @@
[ excerpt from distribution's README.txt ]
BitTorrent is a tool for distributing files. It's extremely easy
to use - downloads are started by clicking on hyperlinks. Whenever
more than one person is downloading at once they send pieces of the
file(s) to each other, thus relieving the central server's bandwidth
burden. Even with many simultaneous downloads, the upload burden
on the central server remains quite small, since each new downloader
introduces new upload capacity.
WWW: http://www.bittorrent.com/

View File

@ -1,376 +0,0 @@
bin/bittorrent-console
bin/bittorrent-curses
bin/bittorrent-tracker
bin/changetracker-console
bin/launchmany-console
bin/launchmany-curses
bin/maketorrent-console
bin/torrentinfo-console
%%PYTHON_SITELIBDIR%%/BitTorrent/AutoUpdateButler.py
%%PYTHON_SITELIBDIR%%/BitTorrent/AutoUpdateButler.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/AutoUpdateButler.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/BandwidthManager.py
%%PYTHON_SITELIBDIR%%/BitTorrent/BandwidthManager.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/BandwidthManager.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/BeautifulSupe.py
%%PYTHON_SITELIBDIR%%/BitTorrent/BeautifulSupe.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/BeautifulSupe.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Choker.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/ClientIdentifier.py
%%PYTHON_SITELIBDIR%%/BitTorrent/ClientIdentifier.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/ClientIdentifier.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/ConnectionManager.py
%%PYTHON_SITELIBDIR%%/BitTorrent/ConnectionManager.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/ConnectionManager.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/ConnectionRateLimitReactor.py
%%PYTHON_SITELIBDIR%%/BitTorrent/ConnectionRateLimitReactor.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/ConnectionRateLimitReactor.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Connector.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Connector.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Connector.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/ConvertedMetainfo.py
%%PYTHON_SITELIBDIR%%/BitTorrent/ConvertedMetainfo.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/ConvertedMetainfo.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.py
%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/CurrentRateMeasure.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/DictWithLists.py
%%PYTHON_SITELIBDIR%%/BitTorrent/DictWithLists.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/DictWithLists.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Download.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Download.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Download.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/FeedManager.py
%%PYTHON_SITELIBDIR%%/BitTorrent/FeedManager.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/FeedManager.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/Bling.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/Bling.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/Bling.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/CustomWidgets.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/CustomWidgets.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/CustomWidgets.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/DownloadManager.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/DownloadManager.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/DownloadManager.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/LanguageSettings.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/LanguageSettings.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/LanguageSettings.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/ListCtrl.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/ListCtrl.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/ListCtrl.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/OpenDialog.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/OpenDialog.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/OpenDialog.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/SettingsWindow.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/SettingsWindow.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/SettingsWindow.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/StatusLight.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/StatusLight.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/StatusLight.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/ToolTip.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/ToolTip.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/ToolTip.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/__init__.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/__init__.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx/__init__.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/GetTorrent.py
%%PYTHON_SITELIBDIR%%/BitTorrent/GetTorrent.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/GetTorrent.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPConnector.py
%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPConnector.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPConnector.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.py
%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/HTTPHandler.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/HostIP.py
%%PYTHON_SITELIBDIR%%/BitTorrent/HostIP.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/HostIP.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/IPC.py
%%PYTHON_SITELIBDIR%%/BitTorrent/IPC.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/IPC.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/InternetWatcher.py
%%PYTHON_SITELIBDIR%%/BitTorrent/InternetWatcher.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/InternetWatcher.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/LaunchPath.py
%%PYTHON_SITELIBDIR%%/BitTorrent/LaunchPath.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/LaunchPath.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Lists.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Lists.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Lists.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/LocalDiscovery.py
%%PYTHON_SITELIBDIR%%/BitTorrent/LocalDiscovery.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/LocalDiscovery.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/MultiDownload.py
%%PYTHON_SITELIBDIR%%/BitTorrent/MultiDownload.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/MultiDownload.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/MultiTorrent.py
%%PYTHON_SITELIBDIR%%/BitTorrent/MultiTorrent.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/MultiTorrent.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/NamedMutex.py
%%PYTHON_SITELIBDIR%%/BitTorrent/NamedMutex.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/NamedMutex.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.py
%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/NatCheck.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/NatTraversal.py
%%PYTHON_SITELIBDIR%%/BitTorrent/NatTraversal.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/NatTraversal.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/NewRateLimiter.py
%%PYTHON_SITELIBDIR%%/BitTorrent/NewRateLimiter.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/NewRateLimiter.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/NewVersion.py
%%PYTHON_SITELIBDIR%%/BitTorrent/NewVersion.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/NewVersion.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/OldTorrentQueue.py
%%PYTHON_SITELIBDIR%%/BitTorrent/OldTorrentQueue.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/OldTorrentQueue.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/PeerID.py
%%PYTHON_SITELIBDIR%%/BitTorrent/PeerID.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/PeerID.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.py
%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/PiecePicker.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/PieceSetBuckets.py
%%PYTHON_SITELIBDIR%%/BitTorrent/PieceSetBuckets.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/PieceSetBuckets.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/PluginSupport.py
%%PYTHON_SITELIBDIR%%/BitTorrent/PluginSupport.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/PluginSupport.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/RTTMonitor.py
%%PYTHON_SITELIBDIR%%/BitTorrent/RTTMonitor.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/RTTMonitor.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/RateLimiter.py
%%PYTHON_SITELIBDIR%%/BitTorrent/RateLimiter.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/RateLimiter.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.py
%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/RateMeasure.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer_twisted.py
%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer_twisted.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/RawServer_twisted.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Rerequester.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/StatusLight.py
%%PYTHON_SITELIBDIR%%/BitTorrent/StatusLight.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/StatusLight.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.py
%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/StorageWrapper.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_IOCP.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_IOCP.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_IOCP.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_base.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_base.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_base.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_threadpool.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_threadpool.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Storage_threadpool.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/ThreadProxy.py
%%PYTHON_SITELIBDIR%%/BitTorrent/ThreadProxy.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/ThreadProxy.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Torrent.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Torrent.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Torrent.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentButler.py
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentButler.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentButler.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentPolicy.py
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentPolicy.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentPolicy.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentStats.py
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentStats.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/TorrentStats.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/UI.py
%%PYTHON_SITELIBDIR%%/BitTorrent/UI.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/UI.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/Upload.py
%%PYTHON_SITELIBDIR%%/BitTorrent/Upload.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/Upload.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/XMultiTorrent.py
%%PYTHON_SITELIBDIR%%/BitTorrent/XMultiTorrent.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/XMultiTorrent.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/XTorrentQueue.py
%%PYTHON_SITELIBDIR%%/BitTorrent/XTorrentQueue.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/XTorrentQueue.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.py
%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/__init__.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/atexit_threads.py
%%PYTHON_SITELIBDIR%%/BitTorrent/atexit_threads.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/atexit_threads.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.py
%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/bencode.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.py
%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/bitfield.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.py
%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/btformats.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/configfile.py
%%PYTHON_SITELIBDIR%%/BitTorrent/configfile.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/configfile.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/defaultargs.py
%%PYTHON_SITELIBDIR%%/BitTorrent/defaultargs.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/defaultargs.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/defer.py
%%PYTHON_SITELIBDIR%%/BitTorrent/defer.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/defer.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/hash.py
%%PYTHON_SITELIBDIR%%/BitTorrent/hash.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/hash.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/ipfree.py
%%PYTHON_SITELIBDIR%%/BitTorrent/ipfree.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/ipfree.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/language.py
%%PYTHON_SITELIBDIR%%/BitTorrent/language.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/language.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/launchmanycore.py
%%PYTHON_SITELIBDIR%%/BitTorrent/launchmanycore.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/launchmanycore.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/makemetafile.py
%%PYTHON_SITELIBDIR%%/BitTorrent/makemetafile.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/makemetafile.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/obsoletepythonsupport.py
%%PYTHON_SITELIBDIR%%/BitTorrent/obsoletepythonsupport.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/obsoletepythonsupport.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.py
%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/parseargs.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/parsedir.py
%%PYTHON_SITELIBDIR%%/BitTorrent/parsedir.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/parsedir.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/platform.py
%%PYTHON_SITELIBDIR%%/BitTorrent/platform.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/platform.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/prefs.py
%%PYTHON_SITELIBDIR%%/BitTorrent/prefs.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/prefs.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/pykill.py
%%PYTHON_SITELIBDIR%%/BitTorrent/pykill.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/pykill.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/shortargs.py
%%PYTHON_SITELIBDIR%%/BitTorrent/shortargs.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/shortargs.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/sparse_set.py
%%PYTHON_SITELIBDIR%%/BitTorrent/sparse_set.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/sparse_set.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/stackthreading.py
%%PYTHON_SITELIBDIR%%/BitTorrent/stackthreading.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/stackthreading.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/track.py
%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/track.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/translation.py
%%PYTHON_SITELIBDIR%%/BitTorrent/translation.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/translation.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/yielddefer.py
%%PYTHON_SITELIBDIR%%/BitTorrent/yielddefer.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/yielddefer.pyo
%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.py
%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyc
%%PYTHON_SITELIBDIR%%/BitTorrent/zurllib.pyo
%%PYTHON_SITELIBDIR%%/Zeroconf.py
%%PYTHON_SITELIBDIR%%/Zeroconf.pyc
%%PYTHON_SITELIBDIR%%/Zeroconf.pyo
%%PYTHON_SITELIBDIR%%/khashmir/KRateLimiter.py
%%PYTHON_SITELIBDIR%%/khashmir/KRateLimiter.pyc
%%PYTHON_SITELIBDIR%%/khashmir/KRateLimiter.pyo
%%PYTHON_SITELIBDIR%%/khashmir/__init__.py
%%PYTHON_SITELIBDIR%%/khashmir/__init__.pyc
%%PYTHON_SITELIBDIR%%/khashmir/__init__.pyo
%%PYTHON_SITELIBDIR%%/khashmir/actions.py
%%PYTHON_SITELIBDIR%%/khashmir/actions.pyc
%%PYTHON_SITELIBDIR%%/khashmir/actions.pyo
%%PYTHON_SITELIBDIR%%/khashmir/cache.py
%%PYTHON_SITELIBDIR%%/khashmir/cache.pyc
%%PYTHON_SITELIBDIR%%/khashmir/cache.pyo
%%PYTHON_SITELIBDIR%%/khashmir/const.py
%%PYTHON_SITELIBDIR%%/khashmir/const.pyc
%%PYTHON_SITELIBDIR%%/khashmir/const.pyo
%%PYTHON_SITELIBDIR%%/khashmir/hammerlock.py
%%PYTHON_SITELIBDIR%%/khashmir/hammerlock.pyc
%%PYTHON_SITELIBDIR%%/khashmir/hammerlock.pyo
%%PYTHON_SITELIBDIR%%/khashmir/inserter.py
%%PYTHON_SITELIBDIR%%/khashmir/inserter.pyc
%%PYTHON_SITELIBDIR%%/khashmir/inserter.pyo
%%PYTHON_SITELIBDIR%%/khashmir/khash.py
%%PYTHON_SITELIBDIR%%/khashmir/khash.pyc
%%PYTHON_SITELIBDIR%%/khashmir/khash.pyo
%%PYTHON_SITELIBDIR%%/khashmir/khashmir.py
%%PYTHON_SITELIBDIR%%/khashmir/khashmir.pyc
%%PYTHON_SITELIBDIR%%/khashmir/khashmir.pyo
%%PYTHON_SITELIBDIR%%/khashmir/knet.py
%%PYTHON_SITELIBDIR%%/khashmir/knet.pyc
%%PYTHON_SITELIBDIR%%/khashmir/knet.pyo
%%PYTHON_SITELIBDIR%%/khashmir/knode.py
%%PYTHON_SITELIBDIR%%/khashmir/knode.pyc
%%PYTHON_SITELIBDIR%%/khashmir/knode.pyo
%%PYTHON_SITELIBDIR%%/khashmir/krpc.py
%%PYTHON_SITELIBDIR%%/khashmir/krpc.pyc
%%PYTHON_SITELIBDIR%%/khashmir/krpc.pyo
%%PYTHON_SITELIBDIR%%/khashmir/kstore.py
%%PYTHON_SITELIBDIR%%/khashmir/kstore.pyc
%%PYTHON_SITELIBDIR%%/khashmir/kstore.pyo
%%PYTHON_SITELIBDIR%%/khashmir/ktable.py
%%PYTHON_SITELIBDIR%%/khashmir/ktable.pyc
%%PYTHON_SITELIBDIR%%/khashmir/ktable.pyo
%%PYTHON_SITELIBDIR%%/khashmir/node.py
%%PYTHON_SITELIBDIR%%/khashmir/node.pyc
%%PYTHON_SITELIBDIR%%/khashmir/node.pyo
%%PYTHON_SITELIBDIR%%/khashmir/setup.py
%%PYTHON_SITELIBDIR%%/khashmir/setup.pyc
%%PYTHON_SITELIBDIR%%/khashmir/setup.pyo
%%PYTHON_SITELIBDIR%%/khashmir/test.py
%%PYTHON_SITELIBDIR%%/khashmir/test.pyc
%%PYTHON_SITELIBDIR%%/khashmir/test.pyo
%%PYTHON_SITELIBDIR%%/khashmir/test_khashmir.py
%%PYTHON_SITELIBDIR%%/khashmir/test_khashmir.pyc
%%PYTHON_SITELIBDIR%%/khashmir/test_khashmir.pyo
%%PYTHON_SITELIBDIR%%/khashmir/test_krpc.py
%%PYTHON_SITELIBDIR%%/khashmir/test_krpc.pyc
%%PYTHON_SITELIBDIR%%/khashmir/test_krpc.pyo
%%PYTHON_SITELIBDIR%%/khashmir/test_kstore.py
%%PYTHON_SITELIBDIR%%/khashmir/test_kstore.pyc
%%PYTHON_SITELIBDIR%%/khashmir/test_kstore.pyo
%%PYTHON_SITELIBDIR%%/khashmir/unet.py
%%PYTHON_SITELIBDIR%%/khashmir/unet.pyc
%%PYTHON_SITELIBDIR%%/khashmir/unet.pyo
%%PYTHON_SITELIBDIR%%/khashmir/util.py
%%PYTHON_SITELIBDIR%%/khashmir/util.pyc
%%PYTHON_SITELIBDIR%%/khashmir/util.pyo
%%PYTHON_SITELIBDIR%%/khashmir/utkhashmir.py
%%PYTHON_SITELIBDIR%%/khashmir/utkhashmir.pyc
%%PYTHON_SITELIBDIR%%/khashmir/utkhashmir.pyo
share/locale/de/LC_MESSAGES/bittorrent.mo
share/locale/en/LC_MESSAGES/bittorrent.mo
share/locale/es/LC_MESSAGES/bittorrent.mo
share/locale/es_MX/LC_MESSAGES/bittorrent.mo
share/locale/fr/LC_MESSAGES/bittorrent.mo
share/locale/it/LC_MESSAGES/bittorrent.mo
share/locale/ja/LC_MESSAGES/bittorrent.mo
share/locale/ko/LC_MESSAGES/bittorrent.mo
share/locale/pt/LC_MESSAGES/bittorrent.mo
share/locale/pt_BR/LC_MESSAGES/bittorrent.mo
share/locale/zh_CN/LC_MESSAGES/bittorrent.mo
share/locale/zh_TW/LC_MESSAGES/bittorrent.mo
%%GUI%%@dirrm share/pixmaps/BitTorrent/themes/default/torrentstate
%%GUI%%@dirrm share/pixmaps/BitTorrent/themes/default/torrentops
%%GUI%%@dirrm share/pixmaps/BitTorrent/themes/default/statuslight
%%GUI%%@dirrm share/pixmaps/BitTorrent/themes/default/fileops
%%GUI%%@dirrm share/pixmaps/BitTorrent/themes/default
%%GUI%%@dirrm share/pixmaps/BitTorrent/themes
%%GUI%%@dirrm share/pixmaps/BitTorrent/logo
%%GUI%%@dirrm share/pixmaps/BitTorrent/flags
%%GUI%%@dirrm share/pixmaps/BitTorrent
@dirrm %%PYTHON_SITELIBDIR%%/khashmir
@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent/GUI_wx
@dirrm %%PYTHON_SITELIBDIR%%/BitTorrent
@dirrmtry %%PYTHON_SITELIBDIR%%
@dirrmtry %%PYTHON_LIBDIR%%