diff options
| author | Laurent Bercot <ska-skaware@skarnet.org> | 2014-09-18 18:55:44 +0000 |
|---|---|---|
| committer | Laurent Bercot <ska-skaware@skarnet.org> | 2014-09-18 18:55:44 +0000 |
| commit | 3534b428629be185e096be99e3bd5fdfe32d5544 (patch) | |
| tree | 210ef3198ed66bc7f7b7bf6a85e4579f455e5a36 /src/libstddjb/ip46_scanlist.c | |
| download | skalibs-3534b428629be185e096be99e3bd5fdfe32d5544.tar.gz | |
initial commit with rc for skalibs-2.0.0.0
Diffstat (limited to 'src/libstddjb/ip46_scanlist.c')
| -rw-r--r-- | src/libstddjb/ip46_scanlist.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/libstddjb/ip46_scanlist.c b/src/libstddjb/ip46_scanlist.c new file mode 100644 index 0000000..37f2e18 --- /dev/null +++ b/src/libstddjb/ip46_scanlist.c @@ -0,0 +1,28 @@ +/* ISC license. */ + +#include <skalibs/ip46.h> + +#include <skalibs/bytestr.h> +#include <skalibs/fmtscan.h> + +unsigned int ip46full_scanlist (ip46full_t_ref out, unsigned int max, char const *s, unsigned int *num) +{ + unsigned int n = 0, w = 0 ; + for (; s[w] && (n < max) ; n++) + { + ip46full_t z ; + register unsigned int i = ip6_scan(s + w, z.ip) ; + if (i) z.is6 = 1 ; + else + { + i = ip4_scan(s + w, z.ip) ; + if (!i) break ; + z.is6 = 0 ; + } + out[n] = z ; + w += i ; + while (byte_chr(",; \t\r\n", 6, s[w]) < 6) w++ ; + } + *num = n ; + return w ; +} |
