From: Mark Wooding Date: Thu, 2 Mar 2006 01:49:57 +0000 (+0000) Subject: cdb: Remove dependency on freecdb and libfile-cdb-perl. X-Git-Tag: 1.2.0~10 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/misc/commitdiff_plain/bba986ae8f13dd5e97952f38b2db9e7444df8772?ds=sidebyside cdb: Remove dependency on freecdb and libfile-cdb-perl. The C utilities are now built against tinycdb. The Perl utilities have been rewritten in Python and use python-cdb. --- diff --git a/Makefile b/Makefile index 30921f5..8d75d34 100644 --- a/Makefile +++ b/Makefile @@ -73,10 +73,10 @@ qmail-checkspam: qmail-checkspam.o $(LINK) -lspamc cdb-probe: cdb-probe.o - $(LINK) -lfreecdb + $(LINK) -lcdb cdb-check-domain: cdb-check-domain.o - $(LINK) -lfreecdb + $(LINK) -lcdb not: not.o $(LINK) diff --git a/cdb-assign b/cdb-assign index e3184c2..686d0f7 100755 --- a/cdb-assign +++ b/cdb-assign @@ -1,15 +1,40 @@ -#! /usr/bin/perl - -use CDB_File; - -@ARGV >= 1 or die "usage: $0 CDB [INPUT ...]\n"; -$f = shift; -$c = CDB_File->new($f, "$f.new") or die "CDB_File->new: $!\n"; -while (<>) { - chomp; - next if m'^\s*(\#|$)'; - m'^\s*([-\w]+)\s*=\s*(.*\S|)\s*$' or die "bad assignment `$_'\n"; - $c->insert($1, $2); -} -$c->finish() or die "CDB_File->finish: $!\n"; -exit 0; +#! /usr/bin/python + +from cdb import cdbmake +from sre import compile as r_compile, sub as r_sub +from sys import argv, stdin, stderr, exit + +ego = r_sub(r'^.*[/\\]', '', argv[0]) +def die(msg, prefix = True): + if prefix: msg ='%s: %s' % (ego, msg) + print >>stderr, msg + exit(1) + +def files(args): + if len(args) == 0: + yield stdin + else: + for a in args: + if a == '-': + yield stdin + else: + yield open(a, 'r') + +if len(argv) < 2: + die('usage: %s CDB [INPUT ...]' % ego, False) + +rx_comment = r_compile(r'^\s*(\#|$)') +rx_split = r_compile(r'^\s*([-\w]+)\s*=\s*(.*\S|)\s*$') + +cdb = cdbmake(argv[1], argv[1] + '.new') +for f in files(argv[2:]): + for line in f: + if len(line) and line[-1] == '\n': line = line[:-1] + if rx_comment.match(line): + continue + m = rx_split.match(line) + if not m: + die("bad assignment: `%s'" % line) + k, v = m.groups([1, 2]) + cdb.add(k, v) +cdb.finish() diff --git a/cdb-check-domain.c b/cdb-check-domain.c index bac6481..ac11000 100644 --- a/cdb-check-domain.c +++ b/cdb-check-domain.c @@ -3,14 +3,14 @@ #include #include -#include "freecdb.h" +#include const char *prog; static void check(const char *p) { int rc; - uint32_t l; + unsigned l; rc = cdb_seek(0, p, strlen(p), &l); if (rc < 0) { diff --git a/cdb-list b/cdb-list index 368da62..ee85a14 100755 --- a/cdb-list +++ b/cdb-list @@ -1,15 +1,37 @@ -#! /usr/bin/perl - -use CDB_File; - -@ARGV >= 1 or die "usage: $0 CDB [INPUT ...]\n"; -$f = shift; -$c = CDB_File->new($f, "$f.new") or die "CDB_File->new: $!\n"; -while (<>) { - chomp; - next if m'^\s*(\#|$)'; - m'^\s*(.*\S|)\s*$'; - $c->insert($1, ""); -} -$c->finish() or die "CDB_File->finish: $!\n"; -exit 0; +#! /usr/bin/python + +from cdb import cdbmake +from sre import compile as r_compile, sub as r_sub +from sys import argv, stdin, stderr, exit + +ego = r_sub(r'^.*[/\\]', '', argv[0]) +def die(msg, prefix = True): + if prefix: msg ='%s: %s' % (ego, msg) + print >>stderr, msg + exit(1) + +def files(args): + if len(args) == 0: + yield stdin + else: + for a in args: + if a == '-': + yield stdin + else: + yield open(a, 'r') + +if len(argv) < 2: + die('usage: %s CDB [INPUT ...]' % ego, False) + +rx_comment = r_compile(r'^\s*(\#|$)') +rx_shave = r_compile(r'\s*(.*\S|)\s*$') + +cdb = cdbmake(argv[1], argv[1] + '.new') +for f in files(argv[2:]): + for line in f: + if len(line) and line[-1] == '\n': line = line[:-1] + if rx_comment.match(line): + continue + line = rx_shave.sub(r'\1', line) + cdb.add(line, '') +cdb.finish() diff --git a/cdb-map b/cdb-map old mode 100644 new mode 100755 index 71cdde0..f230a42 --- a/cdb-map +++ b/cdb-map @@ -1,14 +1,32 @@ -#! /usr/bin/perl - -use CDB_File; - -@ARGV >= 1 or die "usage: $0 CDB [INPUT ...]\n"; -$f = shift; -$c = CDB_File->new($f, "$f.new") or die "CDB_File->new: $!\n"; -while (<>) { - chomp; - m'^([^:]*):(.*)$' or die "bad assignment `$_'\n"; - $c->insert($1, $2); -} -$c->finish() or die "CDB_File->finish: $!\n"; -exit 0; +#! /usr/bin/python + +from cdb import cdbmake +from sre import sub as r_sub +from sys import argv, stdin, stderr, exit + +ego = r_sub(r'^.*[/\\]', '', argv[0]) +def die(msg, prefix = True): + if prefix: msg ='%s: %s' % (ego, msg) + print >>stderr, msg + exit(1) + +def files(args): + if len(args) == 0: + yield stdin + else: + for a in args: + if a == '-': + yield stdin + else: + yield open(a, 'r') + +if len(argv) < 2: + die('usage: %s CDB [INPUT ...]' % ego, False) + +cdb = cdbmake(argv[1], argv[1] + '.new') +for f in files(argv[2:]): + for line in f: + if len(line) and line[-1] == '\n': line = line[:-1] + k, v = line.split(':', 1) + cdb.add(k, v) +cdb.finish() diff --git a/cdb-probe.c b/cdb-probe.c index cb19a29..ff2b7ea 100644 --- a/cdb-probe.c +++ b/cdb-probe.c @@ -3,14 +3,14 @@ #include #include -#include "freecdb.h" +#include const char *prog; static void check(const char *p) { int rc; - uint32_t l; + unsigned l; rc = cdb_seek(0, p, strlen(p), &l); if (rc < 0) { diff --git a/debian/control b/debian/control index 638d863..5fbde52 100644 --- a/debian/control +++ b/debian/control @@ -2,7 +2,7 @@ Source: nsict-utils Section: utils Priority: extra Maintainer: Mark Wooding -Build-Depends: freecdb, bash-builtins, debhelper (>= 4.0.2), +Build-Depends: tinycdb, bash-builtins, debhelper (>= 4.0.2), python, catacomb-dev (>= 2.0.0), mlib-dev (>= 2.0.0), libspamc-dev Standards-Version: 3.1.1 @@ -22,7 +22,7 @@ Description: Options parser library for perl. Package: nsict-cdb Architecture: any Section: utils -Depends: ${shlibs:Depends}, perl5, libcdb-file-perl +Depends: ${shlibs:Depends}, ${python:Depends}, python-cdb Description: Simple utilities for messing with CDB files. Package: locking diff --git a/debian/rules b/debian/rules index d987ec6..80aed10 100755 --- a/debian/rules +++ b/debian/rules @@ -24,8 +24,9 @@ binary-indep: dh_testroot -i dh_compress -i dh_installdocs -i - dh_gencontrol -i dh_perl -i + dh_python -i + dh_gencontrol -i dh_fixperms -i dh_installdeb -i dh_md5sums -i @@ -38,6 +39,7 @@ binary-arch: dh_installdocs -a dh_strip -a dh_shlibdeps -a + dh_python -a dh_gencontrol -a dh_fixperms -a dh_installdeb -a