--- /dev/null
+#! @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()