All pastes #636947 Raw Edit

Untitled

public text v1 · immutable
#636947 ·published 2007-07-28 11:27 UTC
rendered paste body
bool is_ip(const char *ip)
{
        char *ptr = NULL;
        int i = 0, d = 0;

        for(; i < 4; ++i) /* 4 dots expected (IPv4) */
        {       /* Note about strtol: stores in endptr either NULL or '\0' if conversion is complete */
                if(!isdigit((unsigned char) *ip) /* most current case (not ip, letter host) */
                        || (d = strtol(ip, &ptr, 10)) < 0 || d > 255 /* ok, valid number? */
                        || (ptr && *ptr != 0 && (*ptr != '.' || 3 == i) && ptr != ip)) return false;
                if(ptr) ip = ptr + 1, ptr = NULL; /* jump the dot */
        }
        return true;
}