#!/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)