58 #ifdef STRCASECMP_IN_STRINGS_H
73 #define IPV6_COL_LEN (sizeof(IPV6_COL) - 1)
74 #define HAS_IPV6_COL(str) (strncasecmp((str), IPV6_COL, IPV6_COL_LEN) == 0)
75 #define SKIP_IPV6_COL(str) (HAS_IPV6_COL(str) ? (str) + IPV6_COL_LEN : (str))
81 const char *bare_addr;
85 (bare_addr, gripe) ? bare_addr : 0);
92 const char *myname =
"valid_mailhost_literal";
99 msg_warn(
"%s: '[' expected at start: %.100s", myname, addr);
102 if ((last = strchr(addr,
']')) == 0) {
104 msg_warn(
"%s: ']' expected at end: %.100s", myname, addr);
109 msg_warn(
"%s: unexpected text after ']': %.100s", myname, addr);
112 if ((address_bytes = last - addr - 1) >=
sizeof(hostaddr.
buf)) {
114 msg_warn(
"%s: too much text: %.100s", myname, addr);
117 strncpy(hostaddr.
buf, addr + 1, address_bytes);
118 hostaddr.
buf[address_bytes] = 0;
135 int main(
int unused_argc,
char **argv)
#define vstring_fgets_nonl(s, p)
int valid_ipv6_hostaddr(const char *addr, int gripe)
const char * valid_mailhost_addr(const char *addr, int gripe)
int main(int argc, char **argv)
int valid_ipv4_hostaddr(const char *addr, int gripe)
char buf[MAI_HOSTADDR_STRSIZE]
int valid_mailhost_literal(const char *addr, int gripe)
#define SKIP_IPV6_COL(str)
void msg_warn(const char *fmt,...)
VSTRING * vstring_alloc(ssize_t len)
void msg_vstream_init(const char *name, VSTREAM *vp)
void msg_info(const char *fmt,...)