Mercurial > hg > cc > cirrus_work
changeset 265:40e843b97836 default tip
Test for having multiple cdbs open at once: compiles
author | Henry S. Thompson <ht@inf.ed.ac.uk> |
---|---|
date | Mon, 03 Feb 2025 19:16:20 +0000 |
parents | 7886d7de5eed |
children | |
files | lib/python/cc/lmh/get2.pyx |
diffstat | 1 files changed, 32 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib/python/cc/lmh/get2.pyx Mon Feb 03 19:16:20 2025 +0000 @@ -0,0 +1,32 @@ +# distutils: extra_objects = cdb/libcdb.a +# distutils: include_dirs = cdb + +cimport db +from Typedefs import List + +# Usage: get2 xxx.cdb yyy.cdb keys... + +# E.g. python3 -c 'import get2' rts-tmp/sv.cdb rts-tmp/12.cdb 'discard' 'Goodbye' + +import sys + + +CCs: List(db.CCdb) = [db.CCdb(), db.CCdb()] +DBff: List(file) = [sys.stdin, sys.stdin] +res: int = -1 +probes: List(str) = [sys.argv[i] for i in range(3,len(sys.argv))] +with open(sys.argv[1],'rb') as DBff[0], open(sys.argv[2],'rb') as DBff[1]: + mvs = [CCs[i].init(DBff[i].fileno()) for i in range(2)] + for i in range(2): + CCs[i].findstart() + for probe in probes: + res = CCs[i].find(probe) + o=CCs[i].pos() + l=CCs[i].len() + print(probe, sys.argv[i+1], end=' ') + if res == 1: + sys.stdout.buffer.write(mvs[i][o:o+l]) + sys.stdout.buffer.write(b'\n') + else: + print('missing') +