2 * Copyright (C) 2012-2020 all contributors <cmogstored-public@yhbt.net>
3 * License: GPL-3.0+ <https://www.gnu.org/licenses/gpl-3.0.txt>
5 #include "cmogstored.h"
6 #include "listen_parser.h"
9 include listen_parser_common "listen_parser_common.rl";
11 main := listen '\0'> {
12 a = mog_listen_parse_internal(mark_beg, mark_len,
13 port_beg, port_len, sa_family);
19 static struct mog_addrinfo *listen_parse(char *str)
21 char *p, *pe, *eof = NULL;
22 char *mark_beg = NULL;
23 char *port_beg = NULL;
26 sa_family_t sa_family = AF_INET;
27 struct mog_addrinfo *a = NULL;
33 pe = str + strlen(str) + 1;
37 if ((cs == listen_parser_error) && a)
38 mog_addrinfo_free(&a);
40 assert(p <= pe && "buffer overflow after listen parse");
44 struct mog_addrinfo *mog_listen_parse(const char *str)
46 char *tmp = xstrdup(str);
47 struct mog_addrinfo *rv = listen_parse(tmp);