summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralexperry <alexperry@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2004-10-04 18:13:39 +0000
committeralexperry <alexperry@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2004-10-04 18:13:39 +0000
commit9c6d6f173699c8ebba83dcb9ca95f936d96d65e5 (patch)
tree22fc70ca1158fcf3d2f4d2462c89af66979db47b
parent7ffcfefb04d183fbf56879fbff42916bc64a9833 (diff)
downloadpyserial-git-9c6d6f173699c8ebba83dcb9ca95f936d96d65e5.tar.gz
Put in a conditional to use signed ioctl() for python versions 2.2 and earlier
-rw-r--r--pyparallel/parallel/parallelppdev.py18
1 files changed, 15 insertions, 3 deletions
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 @@ import os
#----
# 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_TYPEBITS = 8
_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