Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / lib / python / lib / python2.4 / test / test_fcntl.py
CommitLineData
86530b38
AT
1#! /usr/bin/env python
2"""Test program for the fcntl C module.
3 OS/2+EMX doesn't support the file locking operations.
4 Roger E. Masse
5"""
6import struct
7import fcntl
8import os, sys
9from test.test_support import verbose, TESTFN
10
11filename = TESTFN
12
13try:
14 os.O_LARGEFILE
15except AttributeError:
16 start_len = "ll"
17else:
18 start_len = "qq"
19
20if sys.platform.startswith('atheos'):
21 start_len = "qq"
22
23if sys.platform in ('netbsd1', 'Darwin1.2', 'darwin',
24 'freebsd2', 'freebsd3', 'freebsd4', 'freebsd5', 'freebsd6',
25 'bsdos2', 'bsdos3', 'bsdos4',
26 'openbsd', 'openbsd2', 'openbsd3'):
27 if struct.calcsize('l') == 8:
28 off_t = 'l'
29 pid_t = 'i'
30 else:
31 off_t = 'lxxxx'
32 pid_t = 'l'
33 lockdata = struct.pack(off_t+off_t+pid_t+'hh', 0, 0, 0, fcntl.F_WRLCK, 0)
34elif sys.platform in ['aix3', 'aix4', 'hp-uxB', 'unixware7']:
35 lockdata = struct.pack('hhlllii', fcntl.F_WRLCK, 0, 0, 0, 0, 0, 0)
36elif sys.platform in ['os2emx']:
37 lockdata = None
38else:
39 lockdata = struct.pack('hh'+start_len+'hh', fcntl.F_WRLCK, 0, 0, 0, 0, 0)
40if lockdata:
41 if verbose:
42 print 'struct.pack: ', repr(lockdata)
43
44# the example from the library docs
45f = open(filename, 'w')
46rv = fcntl.fcntl(f.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
47if verbose:
48 print 'Status from fcntl with O_NONBLOCK: ', rv
49
50if sys.platform not in ['os2emx']:
51 rv = fcntl.fcntl(f.fileno(), fcntl.F_SETLKW, lockdata)
52 if verbose:
53 print 'String from fcntl with F_SETLKW: ', repr(rv)
54
55f.close()
56os.unlink(filename)
57
58
59# Again, but pass the file rather than numeric descriptor:
60f = open(filename, 'w')
61rv = fcntl.fcntl(f, fcntl.F_SETFL, os.O_NONBLOCK)
62
63if sys.platform not in ['os2emx']:
64 rv = fcntl.fcntl(f, fcntl.F_SETLKW, lockdata)
65
66f.close()
67os.unlink(filename)