106 #ifdef STRCASECMP_IN_STRINGS_H
109 #define IPV6_COL "IPv6:"
110 #define IPV6_COL_LEN (sizeof(IPV6_COL) - 1)
111 #define HAS_IPV6_COL(str) (strncasecmp((str), IPV6_COL, IPV6_COL_LEN) == 0)
115 const char *
host_port(
char *buf,
char **host,
char *def_host,
116 char **port,
char *def_service)
131 return (
"missing \"]\"");
132 if (*cp && *cp++ !=
':')
133 return (
"garbage after \"]\"");
135 return (
"malformed IPv6 address");
136 *port = *cp ? cp : def_service;
144 *host = *buf ? buf : def_host;
145 *port = *cp ? cp : def_service;
147 *host = def_host ? def_host : (*buf ? buf : 0);
148 *port = def_service ? def_service : (*buf ? buf : 0);
152 return (
"missing host information");
154 return (
"missing service information");
160 if (*host != def_host
163 return (
"valid hostname or network address required");
164 if (*port != def_service &&
ISDIGIT(**port) && !
alldig(*port))
165 return (
"garbage after numerical service");
175 #define STR(x) vstring_str(x)
177 int main(
int unused_argc,
char **unused_argv)
188 if (*
STR(in_buf) ==
'#')
191 if ((err =
host_port(
STR(parse_buf), &host, (
char *) 0, &port,
"default-service")) != 0) {
int valid_hostaddr(const char *addr, int gripe)
#define vstring_fgets_nonl(s, p)
int valid_ipv6_hostaddr(const char *addr, int gripe)
int main(int argc, char **argv)
int alldig(const char *string)
VSTRING * vstring_strcpy(VSTRING *vp, const char *src)
int valid_utf8_hostname(int enable_utf8, const char *name, int gripe)
#define HAS_IPV6_COL(str)
VSTREAM * vstream_printf(const char *fmt,...)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
int vstream_fflush(VSTREAM *stream)
const char * host_port(char *buf, char **host, char *def_host, char **port, char *def_service)
VSTRING * vstring_free(VSTRING *vp)
char * split_at(char *string, int delimiter)
char * split_at_right(char *string, int delimiter)