summaryrefslogtreecommitdiff
path: root/src/libstddjb/ip4_scan.c
blob: 749a1769809e0f15e93a83073ce37fab901ad81d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* ISC license. */

#include <skalibs/types.h>
#include <skalibs/fmtscan.h>

size_t ip4_scan (char const *s, char *ip)
{
  size_t len = 0 ;
  register unsigned int j = 0 ;
  for (; j < 4 ; j++)
  {
    unsigned int u ;
    register size_t i = uint_scan(s, &u) ;
    if (!i) return 0 ;
    ip[j] = (char)u ;
    s += i ;
    len += i ;
    if (j == 3) break ;
    if (*s != '.') return 0 ;
    ++s ;
    ++len ;
  }
  return len ;
}