// libidn
lib "idn";
-// IDNA errors
-const int \IDNA_SUCCESS = 0;
-const int \IDNA_STRINGPREP_ERROR = 1;
-const int \IDNA_PUNYCODE_ERROR = 2;
-const int \IDNA_CONTAINS_NON_LDH = 3;
-const int \IDNA_CONTAINS_LDH = 3;
-const int \IDNA_CONTAINS_MINUS = 4;
-const int \IDNA_INVALID_LENGTH = 5;
-const int \IDNA_NO_ACE_PREFIX = 6;
-const int \IDNA_ROUNDTRIP_VERIFY_ERROR = 7;
-const int \IDNA_CONTAINS_ACE_PREFIX = 8;
-const int \IDNA_ICONV_ERROR = 9;
-const int \IDNA_MALLOC_ERROR = 201;
-const int \IDNA_DLOPEN_ERROR = 202;
-// IDNA flags
-const int \IDNA_ALLOW_UNASSIGNED = 1;
-const int \IDNA_USE_STD3_ASCII_RULES = 2;
+#include <stdlib.h>
+#include <idna.h>
-
-default int idna_to_ascii_8z(char *host, char **buffer, int flags);
function idn\utf8_to_ascii(string $host, string &$result, int $flags = 0) : int {
- let buffer = &NULL;
- let host = strval($host);
+ let output = &NULL;
+ let input = strval($host);
let flags = intval($flags);
- set $result = to_string(*buffer);
+ set $result = to_string(*output);
return to_int(idna_to_ascii_8z);
- free free(*buffer);
+ free free(*output);
}
-default char *idna_strerror(int rc);
+
function idn\strerror(int $rc) : string {
return to_string(idna_strerror);
let rc = intval($rc);