blob: a551d23e26a132141a4b67dcea5f604feaa036f2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
/* ISC license. */
#include <errno.h>
#include <skalibs/bytestr.h>
#include <s6-dns/s6dns-domain.h>
int s6dns_domain_encode (s6dns_domain_t *d)
{
char *s = d->s ;
unsigned int len = d->len ;
if (!d->len || (*s != '.')) return (errno = EINVAL, 0) ;
while (len > 1)
{
unsigned int n = byte_chr(s + 1, len - 1, '.') ;
if (n > 63) return (errno = EINVAL, 0) ;
*s = n++ ; s += n ; len -= n ;
}
if (!len) return (errno = EINVAL, 0) ;
*s = 0 ;
return 1 ;
}
|