~ubuntu-branches/debian/lenny/fpc/lenny

« back to all changes in this revision

Viewing changes to rtl/openbsd/unixsock.inc

  • Committer: Bazaar Package Importer
  • Author(s): Mazen Neifer, Torsten Werner, Mazen Neifer
  • Date: 2008-05-17 17:12:11 UTC
  • mfrom: (3.1.9 intrepid)
  • Revision ID: james.westby@ubuntu.com-20080517171211-9qi33xhd9evfa0kg
Tags: 2.2.0-dfsg1-9
[ Torsten Werner ]
* Add Mazen Neifer to Uploaders field.

[ Mazen Neifer ]
* Moved FPC sources into a version dependent directory from /usr/share/fpcsrc
  to /usr/share/fpcsrc/${FPCVERSION}. This allow installing more than on FPC
  release.
* Fixed far call issue in compiler preventing building huge binearies.
  (closes: #477743)
* Updated building dependencies, recomennded and suggested packages.
* Moved fppkg to fp-utils as it is just a helper tool and is not required by
  compiler.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
{  
2
 
   $Id: unixsock.inc,v 1.2 2004/01/22 13:55:02 marco Exp $
3
 
   This file is part of the Free Pascal run time library.
4
 
   (c) 2000-2003 by Marco van de Voort
5
 
   member of the Free Pascal development team.
6
 
 
7
 
   See the file COPYING.FPC, included in this distribution,
8
 
   for details about the copyright.
9
 
   
10
 
   socket call implementations for FreeBSD
11
 
 
12
 
   This program is distributed in the hope that it will be useful,
13
 
   but WITHOUT ANY WARRANTY;without even the implied warranty of
14
 
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15
 
}
16
 
 
17
 
 
18
 
{******************************************************************************
19
 
                          Basic Socket Functions
20
 
******************************************************************************}
21
 
 
22
 
Function socket(Domain,SocketType,Protocol:Longint):Longint;
23
 
begin
24
 
  Socket:=Do_Syscall(syscall_nr_socket,Domain,SocketType,Protocol);
25
 
end;
26
 
 
27
 
Function CloseSocket (Sock:Longint):Longint;
28
 
begin
29
 
  if fpclose(Sock)=0 then
30
 
    CloseSocket := 0 else
31
 
    CloseSocket := -1;
32
 
end;
33
 
 
34
 
Function Send(Sock:Longint;Const Buf;BufLen,Flags:Longint):Longint;
35
 
begin
36
 
  Send:=do_syscall(syscall_nr_sendto,Sock,Longint(@Buf),BufLen,Flags,0,0);
37
 
end;
38
 
 
39
 
Function SendTo(Sock:Longint;Const Buf;BufLen,Flags:Longint;Var Addr; AddrLen : Longint):Longint;
40
 
begin
41
 
  Sendto:=do_syscall(syscall_nr_Sendto,Sock,Longint(@Buf),BufLen,Flags,Longint(@Addr),AddrLen);
42
 
end;
43
 
 
44
 
Function Recv(Sock:Longint;Var Buf;BufLen,Flags:Longint):Longint;
45
 
begin
46
 
  Recv:=do_syscall(syscall_nr_Recvfrom,Sock,Longint(@Buf),BufLen,Flags,0,0);
47
 
end;
48
 
 
49
 
Function RecvFrom(Sock : Longint; Var Buf; Buflen,Flags : Longint; Var Addr ; AddrLen : Integer) : longint;
50
 
 
51
 
begin
52
 
  RecvFrom:=do_syscall(syscall_nr_Recvfrom,Sock,Longint(@buf),buflen,flags,Longint(@Addr),AddrLen);
53
 
end;
54
 
 
55
 
Function Bind(Sock:Longint;Const Addr;AddrLen:Longint):Boolean;
56
 
begin
57
 
  Bind:=(do_syscall(syscall_nr_Bind,Sock,Longint(@Addr),AddrLen)=0);
58
 
end;
59
 
 
60
 
Function Listen(Sock,MaxConnect:Longint):Boolean;
61
 
begin
62
 
  Listen:=(do_syscall(syscall_nr_Listen,Sock,MaxConnect,0)=0);
63
 
end;
64
 
 
65
 
Function Accept(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
66
 
begin
67
 
  Accept:=do_syscall(syscall_nr_accept,Sock,longint(@Addr),longint(@AddrLen));
68
 
  If Accept<0 Then
69
 
    Accept:=-1;
70
 
end;
71
 
 
72
 
Function Connect(Sock:Longint;Const Addr;Addrlen:Longint): boolean;
73
 
 
74
 
begin
75
 
  Connect:=do_syscall(syscall_nr_connect,Sock,longint(@Addr),AddrLen)=0;
76
 
end;
77
 
 
78
 
 
79
 
Function Shutdown(Sock:Longint;How:Longint):Longint;
80
 
begin
81
 
  ShutDown:=do_syscall(syscall_nr_shutdown,Sock,How);
82
 
end;
83
 
 
84
 
 
85
 
Function GetSocketName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
86
 
begin
87
 
  GetSocketName:=do_syscall(syscall_nr_GetSockName,Sock,longint(@Addr),longint(@AddrLen));
88
 
end;
89
 
 
90
 
 
91
 
 
92
 
Function GetPeerName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
93
 
begin
94
 
  GetPeerName:=do_syscall(syscall_nr_GetPeerName,Sock,longint(@Addr),longint(@AddrLen));
95
 
end;
96
 
 
97
 
 
98
 
 
99
 
Function SetSocketOptions(Sock,Level,OptName:Longint;Const OptVal;optlen:longint):Longint;
100
 
begin
101
 
  SetSocketOptions:=do_syscall(syscall_nr_SetSockOpt,Sock,Level,OptName,Longint(@OptVal),OptLen,0);
102
 
end;
103
 
 
104
 
 
105
 
 
106
 
Function GetSocketOptions(Sock,Level,OptName:Longint;Var OptVal;Var optlen:longint):Longint;
107
 
begin
108
 
  GetSocketOptions:=do_syscall(syscall_nr_GetSockOpt,Sock,Level,OptName,Longint(@OptVal),OptLen,0);
109
 
end;
110
 
 
111
 
 
112
 
 
113
 
Function SocketPair(Domain,SocketType,Protocol:Longint;var Pair:TSockArray):Longint;
114
 
begin
115
 
  SocketPair:=do_syscall(syscall_nr_SocketPair,Domain,SocketType,Protocol,longint(@Pair),0,0);
116
 
end;
117
 
 
118
 
{******************************************************************************
119
 
                               UnixSock
120
 
******************************************************************************}
121
 
 
122
 
Procedure Str2UnixSockAddr(const addr:string;var t:TUnixSockAddr;var len:longint);
123
 
begin
124
 
  Move(Addr[1],t.Path,length(Addr));
125
 
  t.Family:=AF_UNIX;
126
 
  t.Path[length(Addr)]:=#0;
127
 
  Len:=Length(Addr)+3;
128
 
end;
129
 
 
130
 
 
131
 
Function Bind(Sock:longint;const addr:string):boolean;
132
 
var
133
 
  UnixAddr : TUnixSockAddr;
134
 
  AddrLen  : longint;
135
 
begin
136
 
  Str2UnixSockAddr(addr,UnixAddr,AddrLen);
137
 
  Bind(Sock,UnixAddr,AddrLen);
138
 
  Bind:=(SocketError=0);
139
 
end;
140
 
 
141
 
 
142
 
 
143
 
Function DoAccept(Sock:longint;var addr:string):longint;
144
 
var
145
 
  UnixAddr : TUnixSockAddr;
146
 
  AddrLen  : longint;
147
 
begin
148
 
  AddrLen:=length(addr)+3;
149
 
  DoAccept:=Accept(Sock,UnixAddr,AddrLen);
150
 
  Move(UnixAddr.Path,Addr[1],AddrLen);
151
 
  SetLength(Addr,AddrLen);
152
 
end;
153
 
 
154
 
 
155
 
 
156
 
Function DoConnect(Sock:longint;const addr:string):Boolean;
157
 
var
158
 
  UnixAddr : TUnixSockAddr;
159
 
  AddrLen  : longint;
160
 
begin
161
 
  Str2UnixSockAddr(addr,UnixAddr,AddrLen);
162
 
  DoConnect:=Connect(Sock,UnixAddr,AddrLen);
163
 
end;
164
 
 
165
 
Function Accept(Sock:longint;var addr:string;var SockIn,SockOut:text):Boolean;
166
 
var
167
 
  s : longint;
168
 
begin
169
 
  S:=DoAccept(Sock,addr);
170
 
  if S>0 then
171
 
   begin
172
 
     Sock2Text(S,SockIn,SockOut);
173
 
     Accept:=true;
174
 
   end
175
 
  else
176
 
   Accept:=false;
177
 
end;
178
 
 
179
 
 
180
 
 
181
 
Function Accept(Sock:longint;var addr:string;var SockIn,SockOut:File):Boolean;
182
 
var
183
 
  s : longint;
184
 
begin
185
 
  S:=DoAccept(Sock,addr);
186
 
  if S>0 then
187
 
   begin
188
 
     Sock2File(S,SockIn,SockOut);
189
 
     Accept:=true;
190
 
   end
191
 
  else
192
 
   Accept:=false;
193
 
end;
194
 
 
195
 
 
196
 
 
197
 
Function Connect(Sock:longint;const addr:string;var SockIn,SockOut:text):Boolean;
198
 
begin
199
 
  Connect:=DoConnect(Sock,addr);
200
 
  If Connect then
201
 
     Sock2Text(Sock,SockIn,SockOut);
202
 
end;
203
 
 
204
 
 
205
 
 
206
 
Function Connect(Sock:longint;const addr:string;var SockIn,SockOut:file):Boolean;
207
 
begin
208
 
  Connect:=DoConnect(Sock,addr);
209
 
  if Connect then
210
 
     Sock2File(Sock,SockIn,SockOut);
211
 
end;
212
 
 
213
 
{
214
 
 $Log: unixsock.inc,v $
215
 
 Revision 1.2  2004/01/22 13:55:02  marco
216
 
  * first port that shows some life based on FPC_USE_LIBC
217
 
 
218
 
 Revision 1.4  2004/01/04 01:11:28  marco
219
 
  * a new qod port of the freebsd rtl. To be refined in the coming days.
220
 
 
221
 
 Revision 1.9  2004/01/03 12:18:29  marco
222
 
  * a lot of copyright notices and CVS logs added and fixed
223
 
 
224
 
 Revision 1.8  2003/09/15 07:09:58  marco
225
 
  * small fixes, round 1
226
 
 
227
 
 Revision 1.7  2003/03/23 17:47:15  armin
228
 
 * CloseSocket added
229
 
 
230
 
 Revision 1.6  2002/09/07 16:01:18  peter
231
 
   * old logs removed and tabs fixed
232
 
 
233
 
 Revision 1.5  2002/02/05 07:54:34  marco
234
 
  * Fixed typo
235
 
 
236
 
}