[fpc-pascal] fpselect does not work on linux

Michael Van Canneyt michael at freepascal.org
Sat May 9 12:17:57 CEST 2009



On Sat, 9 May 2009, Rainer Stratmann wrote:

> To find out if a nonblocking socket has connected I use the following piece of 
> code:
> 
> With windows that works, but with linux I get alwas the result that the socket 
> is writable.
> 
> function is_writable_socket( sck : integer ) : boolean;
> var
>   fds : tfdset;
>   tv  : timeval;
> begin
>   {$ifdef linux}   fpfd_zero( fds ); fpfd_set( sck , fds ); {$endif}
>   {$ifdef windows}   fd_zero( fds );   fd_set( sck , fds ); {$endif}
>   tv.tv_sec  := 0;
>   tv.tv_usec := 0;
>   //                 socket+1 , read , write , except , timeout
>   {$ifdef linux}
>   result := fpselect( sck + 1 , nil  , @fds  , nil    , @tv ) > 0;
>   {$else}
>   result :=   select( sck + 1 , nil  , @fds  , nil    , @tv ) > 0;
>   {$endif}
> end;

And why do you think that this is a bug ?

Michael.



More information about the fpc-pascal mailing list