mirror of
https://github.com/python/cpython.git
synced 2024-12-25 01:34:48 +08:00
2e2a70abe4
Let's hope this is correct (I'm not sure why the sys.platform would be 'Darwin1.2' rather than 'darwin1', which seems to be the convention). Someone with Darwin please test this!
37 lines
1.0 KiB
Python
Executable File
37 lines
1.0 KiB
Python
Executable File
#! /usr/bin/env python
|
|
"""Test program for the fcntl C module.
|
|
Roger E. Masse
|
|
"""
|
|
import struct
|
|
import fcntl
|
|
import FCNTL
|
|
import os, sys
|
|
from test_support import verbose
|
|
|
|
filename = '/tmp/delete-me'
|
|
|
|
# the example from the library docs
|
|
f = open(filename,'w')
|
|
rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETFL, os.O_NONBLOCK)
|
|
if verbose:
|
|
print 'Status from fnctl with O_NONBLOCK: ', rv
|
|
|
|
if sys.platform in ('netbsd1', 'Darwin1.2',
|
|
'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5',
|
|
'bsdos2', 'bsdos3', 'bsdos4',
|
|
'openbsd', 'openbsd2'):
|
|
lockdata = struct.pack('lxxxxlxxxxlhh', 0, 0, 0, FCNTL.F_WRLCK, 0)
|
|
elif sys.platform in ['aix3', 'aix4', 'hp-uxB']:
|
|
lockdata = struct.pack('hhlllii', FCNTL.F_WRLCK, 0, 0, 0, 0, 0, 0)
|
|
else:
|
|
lockdata = struct.pack('hhllhh', FCNTL.F_WRLCK, 0, 0, 0, 0, 0)
|
|
if verbose:
|
|
print 'struct.pack: ', `lockdata`
|
|
|
|
rv = fcntl.fcntl(f.fileno(), FCNTL.F_SETLKW, lockdata)
|
|
if verbose:
|
|
print 'String from fcntl with F_SETLKW: ', `rv`
|
|
|
|
f.close()
|
|
os.unlink(filename)
|