|
|
|
@ -3897,12 +3897,22 @@ PHP_FUNCTION(ip2long) |
|
|
|
{ |
|
|
|
char *addr; |
|
|
|
int addr_len; |
|
|
|
#ifdef HAVE_INET_PTON |
|
|
|
struct in_addr ip; |
|
|
|
#else |
|
|
|
unsigned long int ip; |
|
|
|
#endif |
|
|
|
|
|
|
|
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &addr, &addr_len) == FAILURE) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
#ifdef HAVE_INET_PTON |
|
|
|
if (addr_len == 0 || inet_pton(AF_INET, addr, &ip) != 1) { |
|
|
|
RETURN_FALSE; |
|
|
|
} |
|
|
|
RETURN_LONG(ntohl(ip.s_addr)); |
|
|
|
#else |
|
|
|
if (addr_len == 0 || (ip = inet_addr(addr)) == INADDR_NONE) { |
|
|
|
/* The only special case when we should return -1 ourselves, |
|
|
|
* because inet_addr() considers it wrong. We return 0xFFFFFFFF and |
|
|
|
@ -3915,6 +3925,7 @@ PHP_FUNCTION(ip2long) |
|
|
|
RETURN_FALSE; |
|
|
|
} |
|
|
|
RETURN_LONG(ntohl(ip)); |
|
|
|
#endif |
|
|
|
} |
|
|
|
/* }}} */ |
|
|
|
|
|
|
|
|