f5de6d4056b20c14e80d58b2c7c0dbde543f5958
[lcore.git] / unixstuff.inc
1 {$ifdef UNIX}\r
2   {$macro on}\r
3   {$ifdef VER1_0}\r
4     {$define tv_sec := sec}\r
5     {$define tv_usec := usec}\r
6     function dup(const original:integer):integer;inline;\r
7     begin\r
8       linux.dup(original,result);\r
9     end;\r
10     {$define gettimeofdaysec := gettimeofday}\r
11     const\r
12       IPPROTO_UDP=17;\r
13       IPPROTO_ICMP=1;\r
14     function ntohs(invalue:word):word;inline;\r
15     var\r
16       invaluebytes : array[0..1] of byte absolute invalue;\r
17       resultbytes : array[0..1] of byte absolute result;\r
18     begin\r
19       {$ifdef endian_little}\r
20         resultbytes[0] := invaluebytes[1];\r
21         resultbytes[1] := invaluebytes[0];\r
22       {$else}\r
23         result := invalue;\r
24       {$endif}\r
25     end;  \r
26   {$else}\r
27     \r
28     {$define sigprocmask := fpsigprocmask}\r
29     {$define sigaction   := fpsigaction}\r
30     {$define fdclose     := fpclose}\r
31     {$define fcntl       := fpfcntl}\r
32     {$define fdwrite     := fpwrite}\r
33     {$define fdread      := fpread}\r
34     {$define fdopen      := fpopen}\r
35     {$define select      := fpselect}\r
36     {$define linuxerror  := fpgeterrno}\r
37     {$define fork        := fpfork}\r
38     {$define getpid      := fpgetpid}\r
39     {$define getenv      := fpgetenv}\r
40     {$define chmod       := fpchmod}\r
41     {$define dup2        := fpdup2}\r
42     {$ifndef ver1_9_2}\r
43       {$define flock     := fpflock}\r
44       {$ifndef ver1_9_4}\r
45         procedure Execl(Todo:string);inline;\r
46         var\r
47           p : ppchar;\r
48         begin\r
49           p := unixutil.StringToPPChar(Todo,1);\r
50           if (p=nil) or (p^=nil) then exit;\r
51           fpexecv(p^,p);\r
52         end;\r
53         function SendTo(Sock: LongInt; const Buf;BufLen: LongInt;Flags: LongInt;var Addr;AddrLen: LongInt):LongInt;\r
54         begin\r
55           result := fpsendto(sock,@buf,buflen,flags,@addr,addrlen);\r
56         end;\r
57         function RecvFrom(Sock: LongInt;var Buf;Buflen: LongInt;Flags: LongInt;var Addr;var addrlen: Longint):LongInt;\r
58         begin\r
59           result := fprecvfrom(sock,@buf,buflen,flags,@addr,@addrlen);\r
60         end;\r
61         {$define socket := fpsocket}\r
62         function Bind(Sock: LongInt;const Addr;AddrLen: LongInt):Boolean;\r
63         begin\r
64           result := fpbind(sock,@addr,addrlen) = 0;\r
65         end;\r
66         function SetSocketOptions(Sock: LongInt;Level: LongInt;OptName: LongInt;const OptVal;optlen: LongInt):LongInt;\r
67         begin\r
68           result := fpsetsockopt(sock,level,optname,@optval,optlen);\r
69         end;\r
70         function Connect(Sock: LongInt;const Addr;Addrlen: LongInt):Boolean;\r
71         begin\r
72           result := fpconnect(sock,@addr,addrlen) >= 0;\r
73         end;\r
74         function listen(Sock: LongInt;MaxConnect: LongInt):Boolean;\r
75         begin\r
76           result := fplisten(sock,maxconnect) = 0;\r
77         end; \r
78         function GetPeerName(Sock: LongInt; var Addr;var Addrlen: LongInt):LongInt;\r
79         begin\r
80           result := fpgetpeername(sock,@addr,@addrlen);\r
81         end;\r
82         function GetSocketName(Sock: LongInt; var Addr;var Addrlen: LongInt):LongInt;\r
83         begin\r
84           result := fpgetpeername(sock,@addr,@addrlen);\r
85         end;\r
86         function Accept(Sock: LongInt; var Addr; var Addrlen: LongInt):LongInt;\r
87         begin\r
88           result := fpaccept(sock,@addr,@addrlen);\r
89         end;\r
90       {$endif}\r
91     {$endif}\r
92     {$ifdef ver2_0}\r
93       const\r
94         IPPROTO_UDP=17;\r
95         IPPROTO_ICMP=1;\r
96     {$endif}\r
97     {$ifdef ver1_9}\r
98       const\r
99         IPPROTO_UDP=17;\r
100         IPPROTO_ICMP=1;\r
101       function ntohs(invalue:word):word;inline;\r
102       var\r
103         invaluebytes : array[0..1] of byte absolute invalue;\r
104         resultbytes : array[0..1] of byte absolute result;\r
105       begin\r
106         {$ifdef endian_little}\r
107           resultbytes[0] := invaluebytes[1];\r
108           resultbytes[1] := invaluebytes[0];\r
109         {$else}\r
110           result := invalue;\r
111         {$endif}\r
112       end;\r
113     {$endif}\r
114     procedure gettimeofday(var tv:ttimeval);inline;\r
115     begin\r
116       fpgettimeofday(@tv,nil);    \r
117     end;\r
118     function gettimeofdaysec : longint;\r
119     var\r
120       tv:ttimeval;\r
121     begin\r
122       gettimeofday(tv);\r
123       result := tv.tv_sec;\r
124     end;\r
125 \r
126     //a function is used here rather than a define to prevent issues with tlasio.dup\r
127     function dup(const original:integer):integer;inline;\r
128     begin\r
129       result := fpdup(original);\r
130     end;\r
131     function octal(invalue:longint):longint;\r
132     var\r
133       a : integer;\r
134       i : integer;\r
135     begin\r
136       i := 0;\r
137       result := 0;\r
138       while invalue <> 0 do begin\r
139         a := invalue mod 10;\r
140         result := result + (a shl (i*3));\r
141 \r
142         invalue := invalue div 10;\r
143         inc(i);\r
144       end;\r
145     end;\r
146     const\r
147       sys_eintr=esyseintr;\r
148 \r
149   {$endif}\r
150 {$endif}\r