diff -Nru skktools-1.3.4+0.20210126/ChangeLog skktools-1.3.4+0.20210220/ChangeLog --- skktools-1.3.4+0.20210126/ChangeLog 2021-01-26 15:32:35.000000000 +0000 +++ skktools-1.3.4+0.20210220/ChangeLog 2021-02-20 04:14:13.000000000 +0000 @@ -1,3 +1,15 @@ +2021-02-19 Tatsuya Kinoshita + + * skk2cdb.py: Fix broken skk2cdb.py. + +2021-02-17 Shohei Kusakata + + * skk2cdb.py: Fix encoding error. + + * skk2cdb.py: Fix error when running. + + * skk2cdb.py: Migrate to Python 3. + 2021-01-26 Tatsuya Kinoshita * skkdic-expr2.c (splitCandidates): Prevent buffer overflow read diff -Nru skktools-1.3.4+0.20210126/debian/changelog skktools-1.3.4+0.20210220/debian/changelog --- skktools-1.3.4+0.20210126/debian/changelog 2021-02-25 12:18:07.000000000 +0000 +++ skktools-1.3.4+0.20210220/debian/changelog 2021-08-21 07:28:40.000000000 +0000 @@ -1,3 +1,11 @@ +skktools (1.3.4+0.20210220-1) unstable; urgency=medium + + * New upstream version 1.3.4+0.20210220 + * Drop debian/patches + * Use command -v instead of which in debian/* scripts + + -- Tatsuya Kinoshita Sat, 21 Aug 2021 16:28:40 +0900 + skktools (1.3.4+0.20210126-3) unstable; urgency=medium * Add set -e to update-skkdic diff -Nru skktools-1.3.4+0.20210126/debian/patches/010_skk2cdb.patch skktools-1.3.4+0.20210220/debian/patches/010_skk2cdb.patch --- skktools-1.3.4+0.20210126/debian/patches/010_skk2cdb.patch 2021-02-19 20:54:31.000000000 +0000 +++ skktools-1.3.4+0.20210220/debian/patches/010_skk2cdb.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,185 +0,0 @@ -Subject: Make skk2cdb.py compatible to Python 3 -Origin: upstream, https://github.com/skk-dev/skktools/commit/00cbb8d205db84b73470a62209caa1cf645e7a47 -Bug: https://github.com/skk-dev/skktools/pull/22 - ---- a/skk2cdb.py -+++ b/skk2cdb.py -@@ -1,4 +1,4 @@ --#!/usr/bin/env python -+#!/usr/bin/env python3 - ## - ## skk2cdb.py - convertion tool for SKK dictionary. - ## by Yusuke Shinyama -@@ -16,11 +16,12 @@ - import sys, os - from struct import pack, unpack - from array import array -+from functools import reduce - - - # calc hash value with a given key --def cdbhash(s, n=0L): -- return reduce(lambda h,c: ((h*33) ^ ord(c)) & 0xffffffffL, s, n+5381L) -+def cdbhash(s, n=0): -+ return reduce(lambda h,c: ((h*33) ^ ord(c)) & 0xffffffff, s, n+5381) - - if pack('=i',1) == pack('>i',1): - # big endian -@@ -30,14 +31,14 @@ if pack('=i',1) == pack('>i',1): - return a - def encode(a): - a.byteswap() -- return a.tostring() -+ return a - else: - # little endian - def decode(x): - a = array('I', x) - return a - def encode(a): -- return a.tostring() -+ return a - - - ## CDB -@@ -62,9 +63,9 @@ class CDBReader: - - def __init__(self, cdbname, docache=1): - self.name = cdbname -- self._fp = file(cdbname, 'rb') -+ self._fp = open(cdbname, 'rb') - hash0 = decode(self._fp.read(2048)) -- self._hash0 = [ (hash0[i], hash0[i+1]) for i in xrange(0, 512, 2) ] -+ self._hash0 = [ (hash0[i], hash0[i+1]) for i in range(0, 512, 2) ] - self._hash1 = [ None ] * 256 - (self._eod,_) = self._hash0[0] - self._docache = docache -@@ -93,7 +94,7 @@ class CDBReader: - self._hash1[h1] = hs - i = ((h >> 8) % ncells) * 2 - n = ncells*2 -- for _ in xrange(ncells): -+ for _ in range(ncells): - p1 = hs[i+1] - if p1 == 0: raise KeyError(k) - if hs[i] == h: -@@ -122,7 +123,7 @@ class CDBReader: - return False - - def __contains__(self, k): -- return self.has_key(k) -+ return k in self - - def firstkey(self): - self._keyiter = None -@@ -132,7 +133,7 @@ class CDBReader: - if not self._keyiter: - self._keyiter = ( k for (k,v) in cdbiter(self._fp, self._eod) ) - try: -- return self._keyiter.next() -+ return next(self._keyiter) - except StopIteration: - return None - -@@ -140,7 +141,7 @@ class CDBReader: - if not self._eachiter: - self._eachiter = cdbiter(self._fp, self._eod) - try: -- return self._eachiter.next() -+ return next(self._eachiter) - except StopIteration: - return None - -@@ -159,9 +160,9 @@ class CDBMaker: - self.fn = cdbname - self.fntmp = tmpname - self.numentries = 0 -- self._fp = file(tmpname, 'wb') -+ self._fp = open(tmpname, 'wb') - self._pos = 2048 # sizeof((h,p))*256 -- self._bucket = [ array('I') for _ in xrange(256) ] -+ self._bucket = [ array('I') for _ in range(256) ] - return - - def __len__(self): -@@ -174,12 +175,12 @@ class CDBMaker: - raise TypeError - - def add(self, k, v): -- (k, v) = (str(k), str(v)) -+ (k, v) = (k.decode('iso-8859-1'), v.decode('iso-8859-1')) - (klen, vlen) = (len(k), len(v)) - self._fp.seek(self._pos) - self._fp.write(pack('> 8) % blen)*2 - while a[i+1]: # is cell[i] already occupied? -@@ -238,7 +239,7 @@ class CDBMaker: - - # cdbdump - def cdbdump(cdbname): -- fp = file(cdbname, 'rb') -+ fp = open(cdbname, 'rb') - (eor,) = unpack('>sys.stderr, 'file exists: %r' % outfile -+ print('file exists: %r' % outfile, file=sys.stderr) - return 1 - # - maker = CDBMaker(outfile, outfile+'.tmp') -- for line in fileinput.input(args): -+ for line in fileinput.input(args, mode='rb'): - line = line.strip() -- if line.startswith(';'): continue -+ if line.startswith(b';'): continue - try: -- i = line.index(' ') -+ i = line.index(b' ') - except ValueError: - continue - (k,v) = (line[:i], line[i+1:]) diff -Nru skktools-1.3.4+0.20210126/debian/patches/series skktools-1.3.4+0.20210220/debian/patches/series --- skktools-1.3.4+0.20210126/debian/patches/series 2021-02-18 02:21:00.000000000 +0000 +++ skktools-1.3.4+0.20210220/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -010_skk2cdb.patch diff -Nru skktools-1.3.4+0.20210126/debian/skk2cdb skktools-1.3.4+0.20210220/debian/skk2cdb --- skktools-1.3.4+0.20210126/debian/skk2cdb 2021-02-18 06:41:45.000000000 +0000 +++ skktools-1.3.4+0.20210220/debian/skk2cdb 2021-08-21 07:17:54.000000000 +0000 @@ -10,7 +10,7 @@ exit 1 fi -CDB="`which cdb`" || CDB="" +CDB="`command -v cdb`" || CDB="" if [ -z "$CDB" ]; then echo "${0##*/}: tinycdb's cdb command not found" >&2 exit 1 diff -Nru skktools-1.3.4+0.20210126/debian/update-skkdic skktools-1.3.4+0.20210220/debian/update-skkdic --- skktools-1.3.4+0.20210126/debian/update-skkdic 2021-02-25 11:42:07.000000000 +0000 +++ skktools-1.3.4+0.20210220/debian/update-skkdic 2021-08-21 07:18:13.000000000 +0000 @@ -20,7 +20,7 @@ #### read a dictionary from stdin, write a cdb-style dictionary to $1. cdb () { - CDB="`which cdb`" || CDB="" + CDB="`command -v cdb`" || CDB="" if [[ -z "$CDB" ]]; then echo "${0##*/}: tinycdb's cdb command not found" >&2 exit 1 diff -Nru skktools-1.3.4+0.20210126/skk2cdb.py skktools-1.3.4+0.20210220/skk2cdb.py --- skktools-1.3.4+0.20210126/skk2cdb.py 2021-01-26 15:32:35.000000000 +0000 +++ skktools-1.3.4+0.20210220/skk2cdb.py 2021-02-20 04:14:13.000000000 +0000 @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 ## ## skk2cdb.py - convertion tool for SKK dictionary. ## by Yusuke Shinyama @@ -16,11 +16,12 @@ import sys, os from struct import pack, unpack from array import array +from functools import reduce # calc hash value with a given key -def cdbhash(s, n=0L): - return reduce(lambda h,c: ((h*33) ^ ord(c)) & 0xffffffffL, s, n+5381L) +def cdbhash(s, n=0): + return reduce(lambda h,c: ((h*33) ^ ord(c)) & 0xffffffff, s, n+5381) if pack('=i',1) == pack('>i',1): # big endian @@ -30,14 +31,14 @@ return a def encode(a): a.byteswap() - return a.tostring() + return a else: # little endian def decode(x): a = array('I', x) return a def encode(a): - return a.tostring() + return a ## CDB @@ -62,9 +63,9 @@ def __init__(self, cdbname, docache=1): self.name = cdbname - self._fp = file(cdbname, 'rb') + self._fp = open(cdbname, 'rb') hash0 = decode(self._fp.read(2048)) - self._hash0 = [ (hash0[i], hash0[i+1]) for i in xrange(0, 512, 2) ] + self._hash0 = [ (hash0[i], hash0[i+1]) for i in range(0, 512, 2) ] self._hash1 = [ None ] * 256 (self._eod,_) = self._hash0[0] self._docache = docache @@ -93,7 +94,7 @@ self._hash1[h1] = hs i = ((h >> 8) % ncells) * 2 n = ncells*2 - for _ in xrange(ncells): + for _ in range(ncells): p1 = hs[i+1] if p1 == 0: raise KeyError(k) if hs[i] == h: @@ -122,7 +123,7 @@ return False def __contains__(self, k): - return self.has_key(k) + return k in self def firstkey(self): self._keyiter = None @@ -132,7 +133,7 @@ if not self._keyiter: self._keyiter = ( k for (k,v) in cdbiter(self._fp, self._eod) ) try: - return self._keyiter.next() + return next(self._keyiter) except StopIteration: return None @@ -140,7 +141,7 @@ if not self._eachiter: self._eachiter = cdbiter(self._fp, self._eod) try: - return self._eachiter.next() + return next(self._eachiter) except StopIteration: return None @@ -159,9 +160,9 @@ self.fn = cdbname self.fntmp = tmpname self.numentries = 0 - self._fp = file(tmpname, 'wb') + self._fp = open(tmpname, 'wb') self._pos = 2048 # sizeof((h,p))*256 - self._bucket = [ array('I') for _ in xrange(256) ] + self._bucket = [ array('I') for _ in range(256) ] return def __len__(self): @@ -174,12 +175,12 @@ raise TypeError def add(self, k, v): - (k, v) = (str(k), str(v)) + (k, v) = (k.decode('iso-8859-1'), v.decode('iso-8859-1')) (klen, vlen) = (len(k), len(v)) self._fp.seek(self._pos) self._fp.write(pack('> 8) % blen)*2 while a[i+1]: # is cell[i] already occupied? @@ -238,7 +239,7 @@ # cdbdump def cdbdump(cdbname): - fp = file(cdbname, 'rb') + fp = open(cdbname, 'rb') (eor,) = unpack('>sys.stderr, 'file exists: %r' % outfile + print('file exists: %r' % outfile, file=sys.stderr) return 1 # maker = CDBMaker(outfile, outfile+'.tmp') - for line in fileinput.input(args): + for line in fileinput.input(args, mode='rb'): line = line.strip() - if line.startswith(';'): continue + if line.startswith(b';'): continue try: - i = line.index(' ') + i = line.index(b' ') except ValueError: continue (k,v) = (line[:i], line[i+1:])