]> gitweb.factorcode.org Git - factor.git/blob - basis/unix/ffi/linux/linux.factor
unix.ffi,windows.winsock: add the rest of the AI_* flags
[factor.git] / basis / unix / ffi / linux / linux.factor
1 ! Copyright (C) 2010 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax classes.struct unix.time
4 unix.types ;
5 IN: unix.ffi
6
7 CONSTANT: MAXPATHLEN 1024
8
9 CONSTANT: O_RDONLY   0x0000
10 CONSTANT: O_WRONLY   0x0001
11 CONSTANT: O_RDWR     0x0002
12 CONSTANT: O_CREAT    0x0040
13 CONSTANT: O_EXCL     0x0080
14 CONSTANT: O_NOCTTY   0x0100
15 CONSTANT: O_TRUNC    0x0200
16 CONSTANT: O_APPEND   0x0400
17 CONSTANT: O_NONBLOCK 0x0800
18
19 ALIAS: O_NDELAY O_NONBLOCK
20
21 CONSTANT: SOL_SOCKET 1
22
23 CONSTANT: FD_SETSIZE 1024
24
25 CONSTANT: SO_REUSEADDR 2
26 CONSTANT: SO_DONTROUTE 5
27 CONSTANT: SO_BROADCAST 6
28 CONSTANT: SO_SNDBUF 7
29 CONSTANT: SO_RCVBUF 8
30 CONSTANT: SO_KEEPALINE 9
31 CONSTANT: SO_OOBINLINE 10
32 CONSTANT: SO_SNDTIMEO 0x15
33 CONSTANT: SO_RCVTIMEO 0x14
34
35 CONSTANT: F_SETFD 2
36 CONSTANT: FD_CLOEXEC 1
37
38 CONSTANT: F_SETFL 4
39
40 STRUCT: addrinfo
41     { flags int }
42     { family int }
43     { socktype int }
44     { protocol int }
45     { addrlen socklen_t }
46     { addr void* }
47     { canonname c-string }
48     { next addrinfo* } ;
49
50 STRUCT: sockaddr-in
51     { family ushort }
52     { port ushort }
53     { addr in_addr_t }
54     { unused longlong } ;
55
56 STRUCT: sockaddr-in6
57     { family ushort }
58     { port ushort }
59     { flowinfo uint }
60     { addr uchar[16] }
61     { scopeid uint } ;
62
63 CONSTANT: max-un-path 108
64
65 STRUCT: sockaddr-un
66     { family ushort }
67     { path { char max-un-path } } ;
68
69 CONSTANT: SOCK_STREAM 1
70 CONSTANT: SOCK_DGRAM 2
71 CONSTANT: SOCK_RAW 3
72
73 CONSTANT: AF_UNSPEC 0
74 CONSTANT: AF_UNIX 1
75 CONSTANT: AF_INET 2
76 CONSTANT: AF_INET6 10
77
78 ALIAS: PF_UNSPEC AF_UNSPEC
79 ALIAS: PF_UNIX AF_UNIX
80 ALIAS: PF_INET AF_INET
81 ALIAS: PF_INET6 AF_INET6
82
83 CONSTANT: IPPROTO_TCP 6
84 CONSTANT: IPPROTO_UDP 17
85
86 ! Flags only valid in gnu libcs' getaddrinfo
87 CONSTANT: AI_IDN                        0x0040
88 CONSTANT: AI_CANONIDN                   0x0080
89 CONSTANT: AI_IDN_ALLOW_UNASSIGNED       0x0100
90 CONSTANT: AI_IDN_USE_STD3_ASCII_RULES   0x0200
91 CONSTANT: AI_NUMERICSERV                0x0400
92
93
94 CONSTANT: SEEK_SET 0
95 CONSTANT: SEEK_CUR 1
96 CONSTANT: SEEK_END 2
97
98 STRUCT: passwd
99     { pw_name c-string }
100     { pw_passwd c-string }
101     { pw_uid uid_t }
102     { pw_gid gid_t }
103     { pw_gecos c-string }
104     { pw_dir c-string }
105     { pw_shell c-string } ;
106
107 ! dirent64
108 STRUCT: dirent
109     { d_ino ulonglong }
110     { d_off longlong }
111     { d_reclen ushort }
112     { d_type uchar }
113     { d_name char[256] } ;
114
115 FUNCTION: int open64 ( c-string path, int flags, int prot )
116 FUNCTION: dirent* readdir64 ( DIR* dirp )
117 FUNCTION: int readdir64_r ( void* dirp, dirent* entry, dirent** result )
118
119 FUNCTION: ssize_t sendfile ( int out_fd, int in_fd, off_t* offset, size_t count )
120
121
122 CONSTANT: __UT_LINESIZE 32
123 CONSTANT: __UT_NAMESIZE 32
124 CONSTANT: __UT_HOSTSIZE 256
125
126 STRUCT: exit_status
127     { e_termination short }
128     { e_exit short } ;
129
130 STRUCT: utmpx
131     { ut_type short }
132     { ut_pid pid_t }
133     { ut_line char[__UT_LINESIZE] }
134     { ut_id char[4] }
135     { ut_user char[__UT_NAMESIZE] }
136     { ut_host char[__UT_HOSTSIZE] }
137     { ut_exit exit_status }
138     { ut_session long }
139     { ut_tv timeval }
140     { ut_addr_v6 int[4] }
141     { __unused char[20] } ;