42 #include <c-strcase.h>
44 #define DOTP(c) ((c) == 0x002E || (c) == 0x3002 || \
45 (c) == 0xFF0E || (c) == 0xFF61)
99 for (i = 0; i < inlen; i++)
104 src = malloc (
sizeof (in[0]) * (inlen + 1));
108 memcpy (src, in,
sizeof (in[0]) * inlen);
133 newp = realloc (p, len);
178 for (i = 0; src[i]; i++)
179 if (src[i] <= 0x2C || src[i] == 0x2E || src[i] == 0x2F ||
180 (src[i] >= 0x3A && src[i] <= 0x40) ||
181 (src[i] >= 0x5B && src[i] <= 0x60) ||
182 (src[i] >= 0x7B && src[i] <= 0x7F))
188 if (src[0] == 0x002D || (i > 0 && src[i - 1] == 0x002D))
205 for (i = 0; src[i]; i++)
243 for (len = 0; src[len]; len++)
269 if (strlen (out) < 1 || strlen (out) > 63)
277 idna_to_unicode_internal (
char *utf8in,
278 uint32_t * out,
size_t * outlen,
int flags)
282 size_t utf8len = strlen (utf8in) + 1;
297 for (i = 0; utf8in[i]; i++)
298 if (utf8in[i] & ~0x7F)
312 char *newp = realloc (utf8in, utf8len + addlen);
432 uint32_t * out,
size_t * outlen,
int flags)
435 size_t outlensave = *outlen;
442 rc = idna_to_unicode_internal (p, out, outlen, flags);
445 memcpy (out, in,
sizeof (in[0]) * (inlen < outlensave ?
446 inlen : outlensave));
473 const uint32_t *start = input;
487 *output = malloc (1);
490 strcpy (*output,
"");
494 if (
DOTP (input[0]) && input[1] == 0)
497 *output = malloc (2);
500 strcpy (*output,
".");
509 for (; *end && !
DOTP (*end); end++)
512 if (*end ==
'\0' && start == end)
529 size_t l = strlen (out) + 1 + strlen (buf) + 1;
530 char *newp = realloc (out, l);
542 size_t l = strlen (buf) + 1;
543 out = (
char *) malloc (l);
638 const uint32_t *start = input;
642 uint32_t *out = NULL;
651 for (; *end && !
DOTP (*end); end++)
654 buflen = (size_t) (end - start);
655 buf = malloc (
sizeof (buf[0]) * (buflen + 1));
661 buf, &buflen, flags);
665 uint32_t *newp = realloc (out,
667 * (outlen + 1 + buflen + 1));
675 out[outlen++] = 0x002E;
676 memcpy (out + outlen, buf,
sizeof (buf[0]) * buflen);