[fpc-pascal] INVALID_SOCKET constant not defined for Linux
Ladislav Karrach
webmaster at mint.sk
Tue Mar 28 14:28:23 CEST 2017
>> This technique is used in fcl-net which should be cross-platform.
>> So I am right, when I say that also in Linux invald socket = -1
>> (in other words: in case of error syscall() returns always -1)
>>
>> Becuase in other place I see another test "if socket < 0 then ..."
>> (which may mean that any negative value can be returned)
>
> Most likely this is only because "socket < 0" is faster to write than
> "socket = -1" :-)
>
> From Linux man page for socket:
>
>> RETURN VALUE
>> On success, a file descriptor for the new socket is returned. On
>> error, -1 is returned, and errno is set appropriately.
>
Thanks for all repies.
For now I add to my unit:
{$IFDEF UNIX}
// not defined for POSIX; Linux syscall() returns -1 in case of error
const
INVALID_SOCKET = -1;
SOCKET_ERROR = -1;
{$ENDIF}
and later I use (in cross-platform code):
Fsocket := fpsocket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if Fsocket = INVALID_SOCKET then ...
-Laco.
More information about the fpc-pascal
mailing list