#!/usr/bin/env python import sys sys.path.insert(0,'.') import odirectcmodule import os print dir(odirectcmodule) def my_hex(ch): o = ord(ch) s = hex(o) s2 = s[2:] if len(s2) == 1: s2 = '0'+ s2 # if len(s) != 4: # sys.stderr.write('Eh? %s\n' % s) # sys.exit(1) return s2 def hex_dump(s): numch = 0 for ch in s: if ch in "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789`~!@#$%^&*()-_=+\\|'\"[]{}": sys.stdout.write("%s " % ch) else: sys.stdout.write(my_hex(ch)) numch += 1 if numch == 60: print numch = 0 buffer = odirectcmodule.create_odirect_buffer() odirectcmodule.odirect_aligned_malloc(1<<18, 1<<18, buffer) for filename in sys.argv[1:]: sys.stderr.write('Doing %s\n' % filename) file_descriptor = odirectcmodule.odirect_open(filename, 'rbd') print file_descriptor if file_descriptor < 0: sys.stderr.write('Opening %s failed\n' % filename) sys.exit(1) blockno = 0 while 1: s = odirectcmodule.odirect_pull(file_descriptor, buffer) if not s: break # hex_dump(s) blockno += 1 sys.stderr.write('pulled block %d of length %d\n' % (blockno, len(s))) retval = odirectcmodule.odirect_close(file_descriptor) odirectcmodule.odirect_aligned_free(buffer) retval = odirectcmodule.destroy_odirect_buffer(buffer)