[En-Nut-Discussion] u_long inet_addr(CONST char * str) returns -1

Harald Kipp harald.kipp at egnite.de
Thu Nov 13 13:04:46 CET 2008


José Vallet wrote:
> I have noticed that the definition of the inet_ntoa function (line 172 
> of file inet.c) goes like this.
> 
> u_long inet_addr(CONST char * str)
> {
>   ...
>   return -1;
> }
> 
> To me this looks weird, as the value to be returned is supposed to be 
> unsigned. So I guess I am missing something. Does this mean that the 
> returned value will be 2^32-1 and that is supposed to be the value 
> returned when error?

More details can be found here:
http://linux.die.net/man/3/inet_addr
However, this uses in_addr_t instead of u_long found in Nut/OS 4.6 or 
uint32_t found in later Nut/OS versions. But in general they return IP 
address 255.255.255.255 in case of an error, which is INADDR_NONE or 
(uint32_t)-1.

> And shouldn't the compiler complain about this?

Frankly, I do not know how GCC decides when to silently convert a 
constant to the required type and when to spit out a warning. Upcoming 
versions may indeed complain.

Harald



More information about the En-Nut-Discussion mailing list