Il 16/01/23 22:23, Mattias Gaertner via fpc-pascal ha scritto:
On Mon, 16 Jan 2023 22:12:52 +0100
Mattias Gaertner via fpc-pascal<fpc-pascal@lists.freepascal.org> wrote:
On Mon, 16 Jan 2023 19:50:34 +0100
Giuliano Colla via fpc-pascal<fpc-pascal@lists.freepascal.org> wrote:
I stumbled into a problem I don't understand.
I'm developing a little program for an ftp client. In order to
connect to the site I need the site address from the site name, and
the libc gethostbyname() provides the required information.
gethostbyname returns a PHostEnt type which is declared as:
Btw, gethostbyname is obsolete. Applications should use getaddrinfo,
getnameinfo, and gai_strerror instead.
I know that it's obsolete. It's not reentrant and it is ugly. But I'm
pretty sure that it will survive for a long time to come, because it
provides you a check on a name *before* creating a socket. If the name
is wrong (a typo, e.g.) you don't need to get rid of an useless socket,
as it would happen with getaddrinfo and getnameinfo.
[...]
Ah, I just saw gethostbyname returns a PHostEnt and Addr is Pin_addr.
Then for the first address:
Addr := Pin_addr(HostEnt^.h_addr[0]);
IT WORKS!
But for me it's a bit obscure why in Delphi mode the right syntax is
HostEnt.h_addr^
and in objfpc
HostEnt.h^.h_addr[0]
I can understand the first caret (Delphi puts it there implicitly) but
not the rest.
However thanks a lot. If gethostbyname can be a little obsolete, Delphi
mode for me is much more obsolete and deprecated!
Giuliano
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal