$(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)
-#! /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()
#include <stdlib.h>
#include <string.h>
-#include "freecdb.h"
+#include <cdb.h>
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) {
-#! /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()
-#! /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()
#include <stdlib.h>
#include <string.h>
-#include "freecdb.h"
+#include <cdb.h>
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) {
Section: utils
Priority: extra
Maintainer: Mark Wooding <mdw@distorted.org.uk>
-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
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
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
dh_installdocs -a
dh_strip -a
dh_shlibdeps -a
+ dh_python -a
dh_gencontrol -a
dh_fixperms -a
dh_installdeb -a