Put in a conditional to use signed ioctl() for python versions 2.2 and earlier
diff --git a/pyparallel/parallel/parallelppdev.py b/pyparallel/parallel/parallelppdev.py
index 64c89f4..347a851 100644
--- a/pyparallel/parallel/parallelppdev.py
+++ b/pyparallel/parallel/parallelppdev.py
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
 # parallel port access using the ppdev driver
 
+import sys
 import struct
 import fcntl
 import os
@@ -8,6 +9,8 @@
 #----
 # Generated by h2py 0.1.1 from <linux/ppdev.h>,
 # then cleaned up a bit by Michael P. Ashton and then a gain by chris ;-)
+# Changes for Python2.2 support (c) September 2004 Alex.Perry@qm.com
+
 
 def sizeof(type): return struct.calcsize(type)
 def _IOC(dir, type, nr, size):  return (dir << _IOC_DIRSHIFT ) | (type << _IOC_TYPESHIFT ) |\
@@ -25,11 +28,20 @@
 _IOC_SIZESHIFT  = _IOC_TYPESHIFT + _IOC_TYPEBITS
 IOCSIZE_MASK    = _IOC_SIZEMASK << _IOC_SIZESHIFT
 IOCSIZE_SHIFT   = _IOC_SIZESHIFT
-_IOC_WRITE      = 1L
+
+# Python 2.2 uses a signed int for the ioctl() call, so ...
+if ( sys.version_info[0] < 3 ) or ( sys.version_info[1] < 3 ):
+ _IOC_WRITE      =  1L
+ _IOC_READ       = -2L
+ _IOC_INOUT      = -1L
+else:
+ _IOC_WRITE      =  1L
+ _IOC_READ       =  2L
+ _IOC_INOUT      =  3L
+
 _IOC_DIRSHIFT   = _IOC_SIZESHIFT + _IOC_SIZEBITS
+IOC_INOUT       = _IOC_INOUT << _IOC_DIRSHIFT
 IOC_IN          = _IOC_WRITE << _IOC_DIRSHIFT
-_IOC_READ       = 2L
-IOC_INOUT       = (_IOC_WRITE | _IOC_READ) << _IOC_DIRSHIFT
 IOC_OUT         = _IOC_READ << _IOC_DIRSHIFT
 
 _IOC_NONE       = 0