According to Jeffrey Honig, bsd/os 2.0 - 4.0 should be added to the
list (of bsd variants that have a different lock structure).
diff --git a/Lib/posixfile.py b/Lib/posixfile.py
index d3aeac0..2cd4168 100644
--- a/Lib/posixfile.py
+++ b/Lib/posixfile.py
@@ -177,7 +177,9 @@
         # Hack by davem@magnet.com to get locking to go on freebsd;
         # additions for AIX by Vladimir.Marangozov@imag.fr
         import sys, os
-        if sys.platform in ('netbsd1', 'freebsd2', 'freebsd3'):
+        if sys.platform in ('netbsd1',
+                            'freebsd2', 'freebsd3',
+                            'bsdos2', 'bsdos3', 'bsdos4'):
             flock = struct.pack('lxxxxlxxxxlhh', \
                   l_start, l_len, os.getpid(), l_type, l_whence) 
         elif sys.platform in ['aix3', 'aix4']:
@@ -190,7 +192,9 @@
         flock = fcntl.fcntl(self._file_.fileno(), cmd, flock)
 
         if '?' in how:
-            if sys.platform in ('netbsd1', 'freebsd2', 'freebsd3'):
+            if sys.platform in ('netbsd1',
+                                'freebsd2', 'freebsd3',
+                                'bsdos2', 'bsdos3', 'bsdos4'):
                 l_start, l_len, l_pid, l_type, l_whence = \
                     struct.unpack('lxxxxlxxxxlhh', flock)
             elif sys.platform in ['aix3', 'aix4']: