Browse Source

* OS/2 implementation synchronized with SocketError change

git-svn-id: trunk@7330 -
Tomas Hajny 18 năm trước cách đây
mục cha
commit
f55a720b25
1 tập tin đã thay đổi với 15 bổ sung128 xóa
  1. 15 128
      rtl/os2/sockets.pas

+ 15 - 128
rtl/os2/sockets.pas

@@ -138,13 +138,14 @@ Implementation
                           Basic Socket Functions
 ******************************************************************************}
 
+function SocketError: cint;
+begin
+  SocketError := so32dll.Sock_ErrNo;
+end;
+
 Function socket(Domain,SocketType,Protocol:Longint):Longint;
 begin
   Socket:=so32dll.Socket(Domain,SocketType,ProtoCol);
-  if Socket<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 Function Send(Sock:Longint;Const Buf;BufLen,Flags:Longint):Longint;
@@ -160,19 +161,11 @@ end;
 Function Recv(Sock:Longint;Var Buf;BufLen,Flags:Longint):Longint;
 begin
   Recv:=so32dll.Recv(Sock,Buf,BufLen,Flags);
-  if Recv<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 Function RecvFrom(Sock : Longint; Var Buf; Buflen,Flags : Longint; Var Addr; var AddrLen : longInt) : longint;
 begin
   RecvFrom:=so32dll.RecvFrom(Sock,Buf,BufLen,Flags,so32dll.SockAddr(Addr),AddrLen);
-  if RecvFrom<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 Function Bind(Sock:Longint;Const Addr;AddrLen:Longint):Boolean;
@@ -181,28 +174,13 @@ begin
 end;
 
 Function Listen(Sock,MaxConnect:Longint):Boolean;
-var
-  l : longint;
 begin
-  l:=so32dll.Listen(Sock,MaxConnect);
-  if l<0 then
-  begin
-    SocketError:=so32dll.sock_errno;
-    Listen:=false;
-  end else
-  begin
-    SocketError:=0;
-    Listen:=true;
-  end;
+  Listen := so32dll.Listen(Sock,MaxConnect) = 0;
 end;
 
 Function Accept(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
 begin
   Accept:=so32dll.Accept(Sock,so32dll.SockAddr(Addr), AddrLen);
-  if Accept<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 Function Connect(Sock:Longint;const Addr; Addrlen:Longint):Boolean;
@@ -212,29 +190,17 @@ end;
 
 Function Shutdown(Sock:Longint;How:Longint):Longint;
 begin
-  ShutDown:=so32dll.ShutDown(Sock,How);
-  if ShutDown<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
+  ShutDown:=so32dll.ShutDown(Sock,How) = 0;
 end;
 
 Function GetSocketName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
 begin
-  GetSocketName:=so32dll.GetSockName(Sock, so32dll.SockAddr(Addr),AddrLen);
-  if GetSocketName<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
+  GetSocketName:=so32dll.GetSockName(Sock, so32dll.SockAddr(Addr),AddrLen) = 0;
 end;
 
 Function GetPeerName(Sock:Longint;Var Addr;Var Addrlen:Longint):Longint;
 begin
-  GetPeerName:=so32dll.GetPeerName(Sock,so32dll.SockAddr(Addr),AddrLen);
-  if GetPeerName<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
+  GetPeerName:=so32dll.GetPeerName(Sock,so32dll.SockAddr(Addr),AddrLen) = 0;
 end;
 
 Function SetSocketOptions(Sock,Level,OptName:Longint;Const OptVal;optlen:longint):Longint;
@@ -244,11 +210,7 @@ end;
 
 Function GetSocketOptions(Sock,Level,OptName:Longint;Var OptVal;Var optlen:longint):Longint;
 begin
-  GetSocketOptions:=so32dll.GetSockOpt(Sock,Level,OptName,OptVal,OptLen);
-  if GetSocketOptions<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
+  GetSocketOptions:=so32dll.GetSockOpt(Sock,Level,OptName,OptVal,OptLen) = 0;
 end;
 
 Function SocketPair(Domain,SocketType,Protocol:Longint;var Pair:TSockArray):Longint;
@@ -264,12 +226,7 @@ function fpWrite(handle : longint;Const bufptr;size : dword) : dword;
 begin
   fpWrite := dword(fpsend(handle, @bufptr, size, 0));
   if fpWrite = dword(-1) then
-  begin
-    SocketError := so32dll.sock_errno;
     fpWrite := 0;
-  end
-  else
-    SocketError := 0;
 end;
 
 function fpRead(handle : longint;var bufptr;size : dword) : dword;
@@ -278,21 +235,15 @@ var
 begin
   d:=dword(so32dll.os2_ioctl(handle,FIONREAD,d,SizeOf(d)));
   if d=dword(-1) then
-  begin
-    SocketError:=so32dll.sock_errno;
-    fpRead:=0;
-  end else
-  begin
+   fpRead:=0
+  else
+   begin
     if size>d then
       size:=d;
     fpRead := dword(so32dll.recv(handle, bufptr, size, 0));
     if fpRead = dword(-1) then
-    begin
-      SocketError:= so32dll.sock_errno;
-      fpRead := 0;
-    end else
-      SocketError:=0;
-  end;
+     fpRead := 0
+   end;
 end;
 
 {$i sockets.inc}
@@ -300,128 +251,72 @@ end;
 function fpsocket       (domain:cint; xtype:cint; protocol: cint):cint;
 begin
   fpSocket:=so32dll.Socket(Domain,xtype,ProtoCol);
-  if fpSocket<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
 begin
   fpSend:=so32dll.Send(S,msg^,len,flags);
-  if fpSend<0 then
-    SocketError:=so32dll.sock_errno
-  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:=so32dll.SendTo(S,msg^,Len,Flags,so32dll.SockAddr(tox^),toLen);
-  if fpSendTo<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fprecv         (s:cint; buf: pointer; len: size_t; flags: cint):ssize_t;
 begin
   fpRecv:=so32dll.Recv(S,Buf,Len,Flags);
-  if fpRecv<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fprecvfrom    (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
 begin
   fpRecvFrom:=so32dll.RecvFrom(S,Buf,Len,Flags,so32dll.SockAddr(from^),FromLen^);
-  if fpRecvFrom<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpconnect     (s:cint; name  : psockaddr; namelen : tsocklen):cint;
 begin
   fpConnect:=so32dll.Connect(S,so32dll.SockAddr(name^),nameLen);
-  if fpConnect<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpshutdown     (s:cint; how:cint):cint;
 begin
   fpShutDown:=so32dll.ShutDown(S,How);
-  if fpShutDown<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
 begin
   fpbind:=so32dll.Bind(S,so32dll.SockAddr(Addrx^),AddrLen);
-  if fpbind<0 then
-       SocketError:=so32dll.sock_errno
-  else
-       SocketError:=0;
 end;
 
 function fplisten      (s:cint; backlog : cint):cint;
 begin
   fplisten:=so32dll.Listen(S,backlog);
-  if fplisten<0 then
-       SocketError:=so32dll.sock_errno
-  else
-       SocketError:=0;
 end;
 
 function fpaccept      (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
 begin
   fpAccept:=so32dll.Accept(S,so32dll.SockAddr(Addrx^),longint(@AddrLen));
-  if fpAccept<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpgetsockname (s:cint; name  : psockaddr; namelen : psocklen):cint;
 begin
   fpGetSockName:=so32dll.GetSockName(S,so32dll.SockAddr(name^),nameLen^);
-  if fpGetSockName<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpgetpeername (s:cint; name  : psockaddr; namelen : psocklen):cint;
 begin
   fpGetPeerName:=so32dll.GetPeerName(S,so32dll.SockAddr(name^),NameLen^);
-  if fpGetPeerName<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpgetsockopt  (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
 begin
   fpGetSockOpt:=so32dll.GetSockOpt(S,Level,OptName,OptVal,OptLen^);
-  if fpGetSockOpt<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpsetsockopt  (s:cint; level:cint; optname:cint; optval:pointer; optlen :tsocklen):cint;
 begin
   fpSetSockOpt:=so32dll.SetSockOpt(S,Level,OptName,OptVal,OptLen);
-  if fpSetSockOpt<0 then
-    SocketError:=so32dll.sock_errno
-  else
-    SocketError:=0;
 end;
 
 function fpsocketpair  (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
@@ -432,14 +327,6 @@ end;
 Function CloseSocket(Sock:Longint):Longint;
 begin
   CloseSocket:=so32dll.soclose (Sock);
-  if CloseSocket<>0 then
-  begin
-    SocketError:=so32dll.sock_errno;
-  end else
-  begin
-    CloseSocket := 0;
-    SocketError := 0;
-  end;
 end;