* synchronized with SocketError change

git-svn-id: trunk@7331 -
This commit is contained in:
Tomas Hajny 2007-05-13 20:47:01 +00:00
parent f55a720b25
commit f8e5a62f61

View File

@ -71,70 +71,45 @@ Implementation
//function fpsocket (domain:cint; xtype:cint; protocol: cint):cint;
function SocketError: cint;
begin
SocketError := WSAGetLastError;
end;
function fpsocket (domain:cint; xtype:cint; protocol: cint):cint;
begin
fpSocket:=WinSock.Socket(Domain,xtype,ProtoCol);
if fpSocket<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
begin
fpSend:=WinSock.Send(S,msg,len,flags);
if fpSend<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
begin
// Dubious construct, this should be checked. (IPV6 fails ?)
fpSendTo:=WinSock.SendTo(S,msg,Len,Flags,Winsock.TSockAddr(tox^),toLen);
if fpSendTo<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fprecv (s:cint; buf: pointer; len: size_t; flags: cint):ssize_t;
begin
fpRecv:=WinSock.Recv(S,Buf,Len,Flags);
if fpRecv<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
begin
fpRecvFrom:=WinSock.RecvFrom(S,Buf,Len,Flags,Winsock.TSockAddr(from^),FromLen^);
if fpRecvFrom<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
fpRecvFrom:=WinSock.RecvFrom(S,Buf,Len,Flags,Winsock.TSockAddr(from^),FromLen^);
end;
function fpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint;
begin
fpConnect:=WinSock.Connect(S,WinSock.TSockAddr(name^),nameLen);
if fpConnect<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpshutdown (s:cint; how:cint):cint;
begin
fpShutDown:=WinSock.ShutDown(S,How);
if fpShutDown<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
Function socket(Domain,SocketType,Protocol:Longint):Longint;
@ -143,13 +118,11 @@ begin
end;
Function Send(Sock:Longint;Const Buf;BufLen,Flags:Longint):Longint;
begin
send:=fpsend(sock,@buf,buflen,flags);
end;
Function SendTo(Sock:Longint;Const Buf;BufLen,Flags:Longint;Var Addr; AddrLen : Longint):Longint;
begin
sendto:=fpsendto(sock,@buf,buflen,flags,@addr,addrlen);
end;
@ -165,70 +138,38 @@ begin
end;
function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
begin
fpbind:=WinSock.Bind(S,WinSock.PSockAddr(Addrx),AddrLen);
if fpbind<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fplisten (s:cint; backlog : cint):cint;
begin
fplisten:=WinSock.Listen(S,backlog);
if fplisten<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
begin
fpAccept:=WinSock.Accept(S,WinSock.PSockAddr(Addrx),plongint(AddrLen));
if fpAccept<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint;
begin
fpGetSockName:=WinSock.GetSockName(S,WinSock.TSockAddr(name^),nameLen^);
if fpGetSockName<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint;
begin
fpGetPeerName:=WinSock.GetPeerName(S,WinSock.TSockAddr(name^),NameLen^);
if fpGetPeerName<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
begin
fpGetSockOpt:=WinSock.GetSockOpt(S,Level,OptName,OptVal,OptLen^);
if fpGetSockOpt<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
begin
fpSetSockOpt:=WinSock.SetSockOpt(S,Level,OptName,OptVal,OptLen);
if fpSetSockOpt<0 then
SocketError:=WSAGetLastError
else
SocketError:=0;
end;
function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
@ -237,48 +178,33 @@ begin
end;
Function CloseSocket(Sock:Longint):Longint;
var i : longint;
begin
i := Winsock.CloseSocket (Sock);
if i <> 0 then
begin
SocketError:=WSAGetLastError;
CloseSocket := i;
end else
begin
CloseSocket := 0;
SocketError := 0;
end;
CloseSocket := Winsock.CloseSocket (Sock);
end;
Function Bind(Sock:Longint;Const Addr;AddrLen:Longint):Boolean;
begin
bind:=fpBind(Sock,@Addr,AddrLen)=0;
Bind:=fpBind(Sock,@Addr,AddrLen)=0;
end;
Function Listen(Sock,MaxConnect:Longint):Boolean;
begin
Listen:=fplisten(Sock,MaxConnect)=0;
end;
Function Accept(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
begin
Accept:=FPAccept(sock,@addr,@addrlen);
end;
Function Shutdown(Sock:Longint;How:Longint):Longint;
begin
shutdown:=fpshutdown(sock,how);
Shutdown:=fpshutdown(sock,how);
end;
Function Connect(Sock:Longint;Const Addr;Addrlen:Longint):Boolean;
begin
connect:=fpconnect(sock,@addr,addrlen)=0;
Connect:=fpconnect(sock,@addr,addrlen)=0;
end;
Function GetSocketName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
@ -297,7 +223,6 @@ begin
end;
Function SetSocketOptions(Sock,Level,OptName:Longint;Const OptVal;optlen:longint):Longint;
begin
SetSocketOptions:=fpsetsockopt(sock,level,optname,@optval,optlen);
end;
@ -315,80 +240,54 @@ function fpWrite(handle : longint;Const bufptr;size : dword) : dword;
begin
fpWrite := dword(WinSock.send(handle, bufptr, size, 0));
if fpWrite = dword(SOCKET_ERROR) then
begin
SocketError := WSAGetLastError;
fpWrite := 0;
end
else
SocketError := 0;
end;
function fpRead(handle : longint;var bufptr;size : dword) : dword;
var
d : dword;
begin
if ioctlsocket(handle,FIONREAD,@d) = SOCKET_ERROR then
begin
SocketError:=WSAGetLastError;
fpRead:=0;
exit;
end;
if d>0 then
begin
if size>d then
size:=d;
fpRead := dword(WinSock.recv(handle, bufptr, size, 0));
if fpRead = dword(SOCKET_ERROR) then
begin
SocketError:= WSAGetLastError;
fpRead := 0;
end else
SocketError:=0;
end
else
SocketError:=0;
end;
var
d : dword;
begin
if ioctlsocket(handle,FIONREAD,@d) = SOCKET_ERROR then
begin
fpRead:=0;
exit;
end;
if d>0 then
begin
if size>d then
size:=d;
fpRead := dword(WinSock.recv(handle, bufptr, size, 0));
if fpRead = dword(SOCKET_ERROR) then
fpRead := 0;
end;
end;
{$else}
{ mimic the linux fpWrite/fpRead calls for the file/text socket wrapper }
function fpWrite(handle : longint;Const bufptr;size : dword) : dword;
begin
fpWrite := dword(WinSock.send(handle, bufptr, size, 0));
if fpWrite = dword(SOCKET_ERROR) then
begin
SocketError := WSAGetLastError;
fpWrite := 0;
end
else
SocketError := 0;
end;
function fpRead(handle : longint;var bufptr;size : dword) : dword;
var
d : dword;
begin
if ioctlsocket(handle,FIONREAD,@d) = SOCKET_ERROR then
begin
SocketError:=WSAGetLastError;
fpRead:=0;
exit;
end;
if d>0 then
begin
if size>d then
size:=d;
fpRead := dword(WinSock.recv(handle, bufptr, size, 0));
if fpRead = dword(SOCKET_ERROR) then
begin
SocketError:= WSAGetLastError;
fpRead := 0;
end else
SocketError:=0;
end
else
SocketError:=0;
end;
var
d : dword;
begin
if ioctlsocket(handle,FIONREAD,@d) = SOCKET_ERROR then
begin
fpRead:=0;
exit;
end;
if d>0 then
begin
if size>d then
size:=d;
fpRead := dword(WinSock.recv(handle, bufptr, size, 0));
if fpRead = dword(SOCKET_ERROR) then
fpRead := 0;
end;
end;
{$endif}
{$i sockets.inc}