* make lmessages scream and die on fpc older than 2.2.0 due to fpc bug
[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       {$endif}\r
54     {$endif}\r
55     {$ifdef ver2_0}\r
56       const\r
57         IPPROTO_UDP=17;\r
58         IPPROTO_ICMP=1;\r
59     {$endif}\r
60     {$ifdef ver1_9}\r
61       const\r
62         IPPROTO_UDP=17;\r
63         IPPROTO_ICMP=1;\r
64       function ntohs(invalue:word):word;inline;\r
65       var\r
66         invaluebytes : array[0..1] of byte absolute invalue;\r
67         resultbytes : array[0..1] of byte absolute result;\r
68       begin\r
69         {$ifdef endian_little}\r
70           resultbytes[0] := invaluebytes[1];\r
71           resultbytes[1] := invaluebytes[0];\r
72         {$else}\r
73           result := invalue;\r
74         {$endif}\r
75       end;\r
76     {$endif}\r
77     procedure gettimeofday(var tv:ttimeval);inline;\r
78     begin\r
79       fpgettimeofday(@tv,nil);    \r
80     end;\r
81     function gettimeofdaysec : longint;\r
82     var\r
83       tv:ttimeval;\r
84     begin\r
85       gettimeofday(tv);\r
86       result := tv.tv_sec;\r
87     end;\r
88 \r
89     //a function is used here rather than a define to prevent issues with tlasio.dup\r
90     function dup(const original:integer):integer;inline;\r
91     begin\r
92       result := fpdup(original);\r
93     end;\r
94     function octal(invalue:longint):longint;\r
95     var\r
96       a : integer;\r
97       i : integer;\r
98     begin\r
99       i := 0;\r
100       result := 0;\r
101       while invalue <> 0 do begin\r
102         a := invalue mod 10;\r
103         result := result + (a shl (i*3));\r
104 \r
105         invalue := invalue div 10;\r
106         inc(i);\r
107       end;\r
108     end;\r
109     const\r
110       sys_eintr=esyseintr;\r
111 \r
112   {$endif}\r
113 {$endif}\r