summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlastair Tse <liquidx@gentoo.org>2006-02-06 22:25:05 +0000
committerAlastair Tse <liquidx@gentoo.org>2006-02-06 22:25:05 +0000
commit4031ab4667ec0404018baaa78e248abe0d72ade4 (patch)
tree31ea1e8d99ade3ffd8624ca7c65dfaa9b05d43b5 /dev-python/pyzor/files
parentAdd patches from debian (diff)
downloadgentoo-2-4031ab4667ec0404018baaa78e248abe0d72ade4.tar.gz
gentoo-2-4031ab4667ec0404018baaa78e248abe0d72ade4.tar.bz2
gentoo-2-4031ab4667ec0404018baaa78e248abe0d72ade4.zip
including patches that are apparently essential for this to even work. (#120370)
(Portage version: 2.1_pre3-r1)
Diffstat (limited to 'dev-python/pyzor/files')
-rw-r--r--dev-python/pyzor/files/debian_mbox.patch373
-rw-r--r--dev-python/pyzor/files/digest-pyzor-0.4.0-r21
-rw-r--r--dev-python/pyzor/files/handle_unknown_encodings.patch96
-rw-r--r--dev-python/pyzor/files/unknown_type.patch12
4 files changed, 482 insertions, 0 deletions
diff --git a/dev-python/pyzor/files/debian_mbox.patch b/dev-python/pyzor/files/debian_mbox.patch
new file mode 100644
index 000000000000..fdfb939489df
--- /dev/null
+++ b/dev-python/pyzor/files/debian_mbox.patch
@@ -0,0 +1,373 @@
+--- lib/pyzor/client.py Sun Sep 8 22:37:15 2002
++++ lib/pyzor/client.py Wed Apr 13 17:08:42 2005
+@@ -8,6 +8,7 @@
+ import getopt
+ import tempfile
+ import mimetools
++import multifile
+ import sha
+
+ import pyzor
+@@ -58,11 +57,6 @@
+ self.send(msg, address)
+ return self.read_response(msg.get_thread())
+
+- def shutdown(self, address):
+- msg = ShutdownRequest()
+- self.send(msg, address)
+- return self.read_response(msg.get_thread())
+-
+ def build_socket(self):
+ self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+
+@@ -132,39 +126,50 @@
+
+ def run(self):
+ debug = 0
+- (options, args) = getopt.getopt(sys.argv[1:], 'dh:', ['homedir='])
+- if len(args) < 1:
+- self.usage()
+-
+ specified_homedir = None
++ options = None
++ log = None
++
++ try:
++ (options, args) = getopt.getopt(sys.argv[1:], 'd', ['homedir=', 'log'])
++ except getopt.GetoptError:
++ self.usage()
++
++ if len(args) < 1:
++ self.usage()
+
+ for (o, v) in options:
+ if o == '-d':
+ debug = 1
+- elif o == '-h':
+- self.usage()
+ elif o == '--homedir':
+ specified_homedir = v
++ elif o == '--log':
++ log = 1
+
+ self.output = Output(debug=debug)
+-
+ homedir = pyzor.get_homedir(specified_homedir)
+-
++
++ if log:
++ sys.stderr = open(homedir + "/pyzor.log", 'a')
++ sys.stderr.write("\npyzor[" + repr (os.getpid()) + "]:\n")
++
+ config = pyzor.Config(homedir)
+ config.add_section('client')
+
+- defaults = {'ServersFile': 'servers',
++ defaults = {'ServersFile': 'servers',
+ 'DiscoverServersURL': ServerList.inform_url,
+- 'AccountsFile' : 'accounts',
++ 'AccountsFile': 'accounts',
++ 'Timeout': str(Client.timeout),
+ }
+
+ for k, v in defaults.items():
+ config.set('client', k, v)
+-
++
+ config.read(os.path.join(homedir, 'config'))
+
+ servers_fn = config.get_filename('client', 'ServersFile')
+-
++ Client.timeout = config.getint('client', 'Timeout')
++
+ if not os.path.exists(homedir):
+ os.mkdir(homedir)
+
+@@ -197,10 +202,13 @@
+ def usage(self, s=None):
+ if s is not None:
+ sys.stderr.write("%s\n" % s)
+- sys.stderr.write("""usage: %s [-d] [--homedir dir] command [cmd_opts]
++ sys.stderr.write("""
++usage: %s [-d] [--homedir dir] command [cmd_opts]
+ command is one of: check, report, discover, ping, digest, predigest,
+- genkey, shutdown
++ genkey
++
+ Data is read on standard input (stdin).
++
+ """
+ % sys.argv[0])
+ sys.exit(2)
+@@ -208,9 +216,9 @@
+
+
+ def ping(self, args):
+- getopt.getopt(args[1:], '')
+-
+- if len(args) > 1:
++ try:
++ getopt.getopt(args[1:], '')
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
+ runner = ClientRunner(self.client.ping)
+@@ -221,30 +229,23 @@
+ return runner.all_ok
+
+
+- def shutdown(self, args):
+- (opts, args2) = getopt.getopt(args[1:], '')
+-
+- if len(args2) > 1:
++ def info(self, args):
++ try:
++ (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
+- runner = ClientRunner(self.client.shutdown)
++ do_mbox = 'msg'
+
+- for arg in args2:
+- server = Address.from_str(arg)
+- runner.run(server, (server,))
+-
+- return runner.all_ok
+-
+-
+- def info(self, args):
+- getopt.getopt(args[1:], '')
+-
+- if len(args) > 1:
+- self.usage("%s does not take any non-option arguments" % args[0])
++ for (o, v) in options:
++ if o == '--mbox':
++ do_mbox = 'mbox'
+
+ runner = InfoClientRunner(self.client.info)
+
+- for digest in FileDigester(sys.stdin, self.digest_spec):
++ for digest in get_input_handler(sys.stdin, self.digest_spec, do_mbox):
++ if digest is None:
++ continue
+ for server in self.servers:
+ response = runner.run(server, (digest, server))
+
+@@ -252,34 +253,45 @@
+
+
+ def check(self, args):
+- getopt.getopt(args[1:], '')
+-
+- if len(args) > 1:
++ try:
++ (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
++ do_mbox = 'msg'
++
++ for (o, v) in options:
++ if o == '--mbox':
++ do_mbox = 'mbox'
++
+ runner = CheckClientRunner(self.client.check)
+
+- for digest in FileDigester(sys.stdin, self.digest_spec):
++ for digest in get_input_handler(sys.stdin, self.digest_spec, do_mbox):
++ if digest is None:
++ continue
+ for server in self.servers:
+- response = runner.run(server, (digest, server))
++ runner.run(server, (digest, server))
+
+ return (runner.found_hit and not runner.whitelisted)
+
+
+ def report(self, args):
+- (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
+- do_mbox = False
+-
+- if len(args2) > 1:
++ try:
++ (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
++ do_mbox = 'msg'
++
+ for (o, v) in options:
+ if o == '--mbox':
+- do_mbox = True
++ do_mbox = 'mbox'
+
+ all_ok = True
+
+- for digest in FileDigester(sys.stdin, self.digest_spec, do_mbox):
++ for digest in get_input_handler(sys.stdin, self.digest_spec, do_mbox):
++ if digest is None:
++ continue
+ if not self.send_digest(digest, self.digest_spec,
+ self.client.report):
+ all_ok = False
+@@ -302,20 +314,22 @@
+
+
+ def whitelist(self, args):
+- (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
+-
+- if len(args2) > 1:
++ try:
++ (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
+- do_mbox = False
++ do_mbox = 'msg'
+
+ for (o, v) in options:
+ if o == '--mbox':
+- do_mbox = True
++ do_mbox = 'mbox'
+
+ all_ok = True
+
+- for digest in FileDigester(sys.stdin, self.digest_spec, do_mbox):
++ for digest in get_input_handler(sys.stdin, self.digest_spec, do_mbox):
++ if digest is None:
++ continue
+ if not self.send_digest(digest, self.digest_spec,
+ self.client.whitelist):
+ all_ok = False
+@@ -324,28 +338,29 @@
+
+
+ def digest(self, args):
+- (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
+-
+- if len(args2) > 1:
++ try:
++ (options, args2) = getopt.getopt(args[1:], '', ['mbox'])
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
+-
+- do_mbox = False
++ do_mbox = 'msg'
+
+ for (o, v) in options:
+ if o == '--mbox':
+- do_mbox = True
++ do_mbox = 'mbox'
+
+- for digest in FileDigester(sys.stdin, self.digest_spec, do_mbox):
++ for digest in get_input_handler(sys.stdin, self.digest_spec, do_mbox):
++ if digest is None:
++ continue
+ sys.stdout.write("%s\n" % digest)
+
+ return True
+
+
+ def print_digested(self, args):
+- getopt.getopt(args[1:], '')
+-
+- if len(args) > 1:
++ try:
++ getopt.getopt(args[1:], '')
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
+ def loop():
+@@ -358,9 +373,9 @@
+ return True
+
+ def genkey(self, args):
+- getopt.getopt(args[1:], '')
+-
+- if len(args) > 1:
++ try:
++ getopt.getopt(args[1:], '')
++ except getopt.GetoptError:
+ self.usage("%s does not take any non-option arguments" % args[0])
+
+ import getpass
+@@ -414,7 +429,6 @@
+ 'report': report,
+ 'ping' : ping,
+ 'genkey': genkey,
+- 'shutdown': shutdown,
+ 'info': info,
+ 'whitelist': whitelist,
+ 'digest': digest,
+@@ -608,31 +622,37 @@
+
+
+
+-class FileDigester(BasicIterator):
+- __slots__ = ['digester']
+-
+- def __init__(self, fp, spec, mbox=False):
+- self.digester = iter(get_file_digester(fp, spec, mbox))
+- self.output = pyzor.Output()
+-
+- def next(self):
+- digest = self.digester.next()
+- self.output.debug("calculated digest: %s" % digest)
+- return digest
+-
+-
+-
+-def get_file_digester(fp, spec, mbox, seekable=False):
++def get_input_handler(fp, spec, style='msg', seekable=False):
+ """Return an object that can be iterated over
+ to get all the digests from fp according to spec.
+ mbox is a boolean"""
+- if mbox:
++ if style == 'msg':
++ return filter(lambda x: x is not None,
++ (DataDigester(rfc822BodyCleaner(fp),
++ spec, seekable).get_digest(),)
++ )
++
++ elif style =='mbox':
+ return MailboxDigester(fp, spec)
+
+- return (DataDigester(rfc822BodyCleaner(fp),
+- spec, seekable).get_digest(),)
++ elif style == 'digests':
++ return JustDigestsIterator(fp)
++
++ raise ValueError, "unknown input style"
+
+
++class JustDigestsIterator(BasicIterator):
++ __slots__ = ['fp']
++
++ def __init__(self, fp):
++ self.fp = fp
++
++ def next(self):
++ l = fp.readline()
++ if not l:
++ raise StopIteration
++ return l.rstrip()
++
+
+ class MailboxDigester(BasicIterator):
+ __slots__ = ['mbox', 'digest_spec', 'seekable']
+@@ -645,7 +665,12 @@
+ self.seekable = seekable
+
+ def next(self):
+- next_msg = self.mbox.next()
++ try:
++ next_msg = self.mbox.next()
++ except IOError:
++ print "Error: Please feed mailbox files in on stdin, i.e."
++ print " pyzor digest --mbox < my_mbox_file"
++ next_msg = None
+ if next_msg is None:
+ raise StopIteration
+ return DataDigester(next_msg, self.digest_spec,
diff --git a/dev-python/pyzor/files/digest-pyzor-0.4.0-r2 b/dev-python/pyzor/files/digest-pyzor-0.4.0-r2
new file mode 100644
index 000000000000..37fbd8982f69
--- /dev/null
+++ b/dev-python/pyzor/files/digest-pyzor-0.4.0-r2
@@ -0,0 +1 @@
+MD5 ee7afe4cc9d419bce5f29250a01c4374 pyzor-0.4.0.tar.bz2 41764
diff --git a/dev-python/pyzor/files/handle_unknown_encodings.patch b/dev-python/pyzor/files/handle_unknown_encodings.patch
new file mode 100644
index 000000000000..fa0b5c9fcca2
--- /dev/null
+++ b/dev-python/pyzor/files/handle_unknown_encodings.patch
@@ -0,0 +1,96 @@
+--- lib/pyzor/client.py Sun Sep 8 22:37:15 2002
++++ lib/pyzor/client.py Wed Aug 3 10:58:03 2005
+@@ -466,7 +470,7 @@
+
+ (fp, offsets) = self.get_line_offsets(fp)
+
+- # did we get an empty file?
++ # did we get an empty (parsed output)file?
+ if len(offsets) == 0:
+ return
+
+@@ -662,39 +666,66 @@
+ self.multifile = None
+ self.curfile = None
+
++ # Check if we got a mail or not. Set type to binary if there is no 'From:' header and
++ # type text/plain with encoding 7bit. 7bit is passed trough anyway so nobody cares.
++ if (not msg.has_key("From") and self.type == 'text' and msg.subtype == 'plain' and msg.getencoding() == '7bit'):
++ self.type = 'binary';
++
+ if self.type == 'text':
+ encoding = msg.getencoding()
+- if encoding == '7bit':
+- self.curfile = msg.fp
+- else:
+- self.curfile = tempfile.TemporaryFile()
+- mimetools.decode(msg.fp, self.curfile, encoding)
+- self.curfile.seek(0)
+-
++ self.curfile = msg.fp
++ if encoding != '7bit':
++ # fix bad encoding name
++ if encoding == '8bits':
++ encoding = '8bit'
++ try:
++ newcurfile = tempfile.TemporaryFile()
++ mimetools.decode(msg.fp, newcurfile, encoding)
++ newcurfile.seek(0)
++ self.curfile = newcurfile
++ except:
++ # ignore encoding on errors, pass msg as is
++ pass
++
+ elif self.type == 'multipart':
+ import multifile
+ self.multifile = multifile.MultiFile(msg.fp, seekable=False)
+ self.multifile.push(msg.getparam('boundary'))
+- self.multifile.next()
+- self.curfile = self.__class__(self.multifile)
+-
++ try:
++ self.multifile.next()
++ self.curfile = self.__class__(self.multifile)
++ except:
++ #
++ # Catch multipart decoding errors
++ #
++ fp.seek(0)
++ self.curfile = fp
++ self.type = 'binary'
+
+ if self.type == 'text' or self.type == 'multipart':
+ assert self.curfile is not None
++ elif self.type == 'binary':
++ try:
++ fp.seek(0)
++ except:
++ pass
++ self.curfile = fp
+ else:
+ assert self.curfile is None
+
+
+ def readline(self):
+ l = ''
+- if self.type in ('text', 'multipart'):
+- l = self.curfile.readline()
+-
+- if self.type == 'multipart' and not l and self.multifile.next():
+- self.curfile = self.__class__(self.multifile)
+- # recursion. Could get messy if
+- # we get a bunch of empty multifile parts
+- l = self.readline()
++ try:
++ if self.type in ('text', 'multipart', 'binary'):
++ l = self.curfile.readline()
++ if self.type == 'multipart' and not l and self.multifile.next():
++ self.curfile = self.__class__(self.multifile)
++ # recursion. Could get messy if
++ # we get a bunch of empty multifile parts
++ l = self.readline()
++ except (TypeError, multifile.Error):
++ pass
+ return l
+
+
diff --git a/dev-python/pyzor/files/unknown_type.patch b/dev-python/pyzor/files/unknown_type.patch
new file mode 100644
index 000000000000..8591be0d7066
--- /dev/null
+++ b/dev-python/pyzor/files/unknown_type.patch
@@ -0,0 +1,12 @@
+--- lib/pyzor/client.py Tue Aug 23 14:53:09 2005
++++ lib/pyzor/client.py Tue Aug 23 14:51:36 2005
+@@ -693,6 +692,9 @@
+ # type text/plain with encoding 7bit. 7bit is passed trough anyway so nobody cares.
+ if (not msg.has_key("From") and self.type == 'text' and msg.subtype == 'plain' and msg.getencoding() == '7bit'):
+ self.type = 'binary';
++
++ if self.type is '':
++ self.type = 'text';
+
+ if self.type == 'text':
+ encoding = msg.getencoding()