X-Git-Url: https://git.distorted.org.uk/~mdw/newsgate/blobdiff_plain/a682e5d7bf69519110ced2e9502ad1d01f70314f..f56d7124bf13edd6a8d143ddd489c0568a9c2521:/bin/mkcdb diff --git a/bin/mkcdb b/bin/mkcdb index 7cea767..dc876ac 100755 --- a/bin/mkcdb +++ b/bin/mkcdb @@ -1,20 +1,29 @@ -#! /usr/bin/perl +#! /usr/bin/python -use CDB_File; +from cdb import cdbmake +from sre import sub as r_sub, compile as r_compile +from sys import argv, stderr, exit -@ARGV == 1 or die "usage: $0 GROUPFILE\n"; -$g = shift; -open GROUPS, $g or die "$0: open($g): $!\n"; -$c = CDB_File->new("$g.cdb", "$g.new") or die "$0: cdbmake($g.cdb): $!\n"; -while () { - next if m'^\s*(\#|$)'; - my @f = split; - @f == 3 or die "$0: bad info line $.\n"; - my $l = join(" ", @f); - my ($tag, $group, $addr) = @f; - $group =~ tr/./-/; - $c->insert("t:$tag" => $l); - $c->insert("g:$group" => $l); -} -$c->finish() or die "$0: cdbfinish($g.cdb): $!\n"; -exit 0; +ego = r_sub(r'^.*[/\\]', '', argv[0]) +def die(msg, tag = True): + if tag: msg = '%s: %s' % (ego, msg) + print >>stderr, msg + exit(1) +if len(argv) != 2: + die('usage: %s GROUPFILE' % ego) + +rx_comment = r_compile(r'^\s*(\#|$)') +group = argv[1] +cdb = cdbmake(group + '.cdb', group + '.cdb.new') +i = 0 +for line in open(group, 'r'): + i += 1 + if rx_comment.match(line): continue + f = line.split() + if len(f) != 3: die('bad info line %d.' % i) + l = ' '.join(f) + tag, group, addr = f + group = group.replace('.', '-') + cdb.add('t:%s' % tag, l) + cdb.add('g:%s' % group, l) +cdb.finish()