author | Tero Marttila <terom@fixme.fi> |
Sat, 26 Sep 2009 21:46:36 +0300 | |
changeset 51 | c6b4abfc21da |
parent 19 | e6b670dbfe3b |
permissions | -rw-r--r-- |
11
7ae92c2b433f
move libc+py back to qmsk.net.x
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
1 |
from qmsk.net.libc cimport * |
7ae92c2b433f
move libc+py back to qmsk.net.x
Tero Marttila <terom@fixme.fi>
parents:
10
diff
changeset
|
2 |
from qmsk.net.py cimport raise_errno |
7
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
3 |
|
19 | 4 |
cdef fcntl_set_flag (int fd, int flag, bint value) : |
5 |
""" |
|
6 |
Set the given FCNTL file status flag(s) to the given boolean value. |
|
7 |
||
8 |
This will first get the current flags, then compute the new flags, and then update them if they have changed. |
|
9 |
""" |
|
10 |
||
11 |
# get current flags |
|
12 |
cdef int old_flags = fcntl(fd, F_GETFL, 0) |
|
13 |
||
14 |
if old_flags < 0 : |
|
15 |
raise_errno('fcntl') |
|
16 |
||
17 |
# set bit |
|
18 |
cdef int new_flags = (old_flags & ~flag) | (flag if value else 0) |
|
19 |
||
20 |
if new_flags != old_flags : |
|
21 |
# set flags |
|
22 |
if fcntl(fd, F_SETFL, new_flags) : |
|
23 |
raise_errno('fcntl') |
|
24 |
||
25 |
||
7
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
26 |
#cdef class Errno (py.OSError) : |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
27 |
# def __init__ (self, func) : |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
28 |
# self.func = func |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
29 |
# self.err = errno |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
30 |
# self.strerror = strerror(errno) |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
31 |
# |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
32 |
# def __str__ (self) : |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
33 |
# return "%s: %s" % (self.func, self.strerror) |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
34 |
# |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
35 |
#cdef class GAIError (py.OSError) : |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
36 |
# def __init__ (self, func, err) : |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
37 |
# self.func = func |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
38 |
# self.err = err |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
39 |
# self.strerror = gai_strerror(err) |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
40 |
# |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
41 |
# def __str__ (self) : |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
42 |
# return "%s: %s" % (self.func, self.strerror) |
74fde84264b1
broke Cython with this package magic
Tero Marttila <terom@fixme.fi>
parents:
diff
changeset
|
43 |
# |