diff options
Diffstat (limited to 'src/sockaddr.c')
-rw-r--r-- | src/sockaddr.c | 96 |
1 files changed, 48 insertions, 48 deletions
diff --git a/src/sockaddr.c b/src/sockaddr.c index 8cd790d..8d9ed40 100644 --- a/src/sockaddr.c +++ b/src/sockaddr.c @@ -1,4 +1,4 @@ -/* grecs - Gray's Extensible Configuration System +/* argot - Gray's Extensible Configuration System Copyright (C) 2007-2016 Sergey Poznyakoff Grecs is free software; you can redistribute it and/or modify it @@ -29,23 +29,23 @@ #include <netdb.h> #include <errno.h> #include <stdlib.h> -#include "grecs.h" +#include "argot.h" -struct grecs_sockaddr * -grecs_sockaddr_new(size_t s) +struct argot_sockaddr * +argot_sockaddr_new(size_t s) { - struct grecs_sockaddr *sp = grecs_malloc(sizeof(*sp)); + struct argot_sockaddr *sp = argot_malloc(sizeof(*sp)); sp->next = NULL; - sp->sa = grecs_zalloc(s); + sp->sa = argot_zalloc(s); sp->len = s; return sp; } void -grecs_sockaddr_free(struct grecs_sockaddr *p) +argot_sockaddr_free(struct argot_sockaddr *p) { while (p) { - struct grecs_sockaddr *next = p->next; + struct argot_sockaddr *next = p->next; free(p->sa); free(p); p = next; @@ -53,19 +53,19 @@ grecs_sockaddr_free(struct grecs_sockaddr *p) } static int -parse_unix(struct grecs_sockaddr **ret, const char *arg, const char *addrstr, - struct grecs_sockaddr_hints *gh, grecs_locus_t const *locus) +parse_unix(struct argot_sockaddr **ret, const char *arg, const char *addrstr, + struct argot_sockaddr_hints *gh, argot_locus_t const *locus) { struct sockaddr_un *s_un; size_t slen = strlen(addrstr); - struct grecs_sockaddr *sp; + struct argot_sockaddr *sp; if (slen >= sizeof s_un->sun_path) { - grecs_error(locus, 0, _("socket path name too long: %s"), arg); + argot_error(locus, 0, _("socket path name too long: %s"), arg); return -1; } - sp = grecs_sockaddr_new(sizeof(s_un[0])); + sp = argot_sockaddr_new(sizeof(s_un[0])); s_un = (struct sockaddr_un *) sp->sa; s_un->sun_family = AF_UNIX; strcpy(s_un->sun_path, addrstr); @@ -75,9 +75,9 @@ parse_unix(struct grecs_sockaddr **ret, const char *arg, const char *addrstr, } static int -parse_inet(struct grecs_sockaddr **ret, +parse_inet(struct argot_sockaddr **ret, int family, const char *arg, const char *addrstr, - struct grecs_sockaddr_hints *gh, grecs_locus_t const *locus) + struct argot_sockaddr_hints *gh, argot_locus_t const *locus) { int rc; struct addrinfo hints; @@ -85,7 +85,7 @@ parse_inet(struct grecs_sockaddr **ret, const char *node = NULL; char *nodebuf = NULL; const char *service = NULL; - struct grecs_sockaddr *head = NULL, *tail = NULL; + struct argot_sockaddr *head = NULL, *tail = NULL; char portbuf[64]; memset(&hints, 0, sizeof(hints)); @@ -100,7 +100,7 @@ parse_inet(struct grecs_sockaddr **ret, addrstr++; len = p - addrstr; - nodebuf = grecs_malloc(len + 1); + nodebuf = argot_malloc(len + 1); memcpy(nodebuf, addrstr, len); nodebuf[len] = 0; node = nodebuf; @@ -113,7 +113,7 @@ parse_inet(struct grecs_sockaddr **ret, if (service && *service) { if (*service != ':') { - grecs_error(locus, 0, + argot_error(locus, 0, _("%s: garbage near %s"), arg, service); return -1; } @@ -127,15 +127,15 @@ parse_inet(struct grecs_sockaddr **ret, if (len == 0) node = NULL; else { - nodebuf = grecs_malloc(len + 1); + nodebuf = argot_malloc(len + 1); memcpy(nodebuf, addrstr, len); nodebuf[len] = 0; node = nodebuf; } } else { - if (grecs_str_is_ipaddr(addrstr)) + if (argot_str_is_ipaddr(addrstr)) node = addrstr; - else if (grecs_str_is_num(addrstr)) { + else if (argot_str_is_num(addrstr)) { service = addrstr; hints.ai_flags |= AI_NUMERICSERV; } @@ -145,21 +145,21 @@ parse_inet(struct grecs_sockaddr **ret, if (!service || !*service) { if (!node && addrstr[0]) node = addrstr; - if (gh->flags & GRECS_HINT_SERVICE) { + if (gh->flags & ARGOT_HINT_SERVICE) { service = gh->service; - } else if (gh->flags & GRECS_HINT_PORT) { + } else if (gh->flags & ARGOT_HINT_PORT) { snprintf(portbuf, sizeof portbuf, "%hu", gh->port); service = portbuf; hints.ai_flags |= AI_NUMERICSERV; - } else if (!(gh->flags & GRECS_AH_PASSIVE)) { - grecs_error(locus, 0, + } else if (!(gh->flags & ARGOT_AH_PASSIVE)) { + argot_error(locus, 0, _("service not specified: %s"), arg); return -1; } } if (!node) { - if (gh->flags & GRECS_AH_PASSIVE) + if (gh->flags & ARGOT_AH_PASSIVE) hints.ai_flags |= AI_PASSIVE; } @@ -169,28 +169,28 @@ parse_inet(struct grecs_sockaddr **ret, case 0: break; case EAI_SYSTEM: - grecs_error(locus, 0, + argot_error(locus, 0, _("%s: cannot parse address: %s"), arg, strerror(errno)); break; case EAI_BADFLAGS: case EAI_SOCKTYPE: - grecs_error(locus, 0, + argot_error(locus, 0, "%s:%d: internal error converting %s", __FILE__,__LINE__,arg); break; case EAI_MEMORY: - grecs_alloc_die(); + argot_alloc_die(); default: - grecs_error(locus, 0, + argot_error(locus, 0, "%s: %s", arg, gai_strerror(rc)); return -1; } for (ap = res; ap; ap = ap->ai_next) { if (family == AF_UNSPEC || ap->ai_addr->sa_family == family) { - struct grecs_sockaddr *sp = - grecs_sockaddr_new(ap->ai_addrlen); + struct argot_sockaddr *sp = + argot_sockaddr_new(ap->ai_addrlen); memcpy(sp->sa, ap->ai_addr, ap->ai_addrlen); sp->len = ap->ai_addrlen; if (!head) @@ -206,15 +206,15 @@ parse_inet(struct grecs_sockaddr **ret, } static int -parse_inet4(struct grecs_sockaddr **ret, const char *arg, const char *addrstr, - struct grecs_sockaddr_hints *gh, grecs_locus_t const *locus) +parse_inet4(struct argot_sockaddr **ret, const char *arg, const char *addrstr, + struct argot_sockaddr_hints *gh, argot_locus_t const *locus) { return parse_inet(ret, AF_INET, arg, addrstr, gh, locus); } static int -parse_inet6(struct grecs_sockaddr **ret, const char *arg, const char *addrstr, - struct grecs_sockaddr_hints *gh, grecs_locus_t const *locus) +parse_inet6(struct argot_sockaddr **ret, const char *arg, const char *addrstr, + struct argot_sockaddr_hints *gh, argot_locus_t const *locus) { return parse_inet(ret, AF_INET6, arg, addrstr, gh, locus); } @@ -222,10 +222,10 @@ parse_inet6(struct grecs_sockaddr **ret, const char *arg, const char *addrstr, struct schemetab { const char *scheme; size_t len; - int (*parser)(struct grecs_sockaddr **ret, + int (*parser)(struct argot_sockaddr **ret, const char *arg, const char *addr, - struct grecs_sockaddr_hints *gh, - grecs_locus_t const *locus); + struct argot_sockaddr_hints *gh, + argot_locus_t const *locus); }; struct schemetab schemetab[] = { @@ -237,18 +237,18 @@ struct schemetab schemetab[] = { }; int -grecs_str_to_sockaddr(struct grecs_sockaddr **sap, - const char *arg, struct grecs_sockaddr_hints *gh, - grecs_locus_t const *locus) +argot_str_to_sockaddr(struct argot_sockaddr **sap, + const char *arg, struct argot_sockaddr_hints *gh, + argot_locus_t const *locus) { char *p; - struct grecs_sockaddr_hints ghints; + struct argot_sockaddr_hints ghints; if (!gh) { memset(&ghints, 0, sizeof(ghints)); - if (grecs_default_port) { - ghints.flags = GRECS_HINT_PORT; - ghints.port = ntohs(grecs_default_port); + if (argot_default_port) { + ghints.flags = ARGOT_HINT_PORT; + ghints.port = ntohs(argot_default_port); } gh = &ghints; } @@ -262,7 +262,7 @@ grecs_str_to_sockaddr(struct grecs_sockaddr **sap, if (len == sp->len && memcmp(arg, sp->scheme, len) == 0) return sp->parser(sap, arg, p + 3, gh, locus); - grecs_error(locus, 0, + argot_error(locus, 0, _("unknown or unsupported scheme: %s"), arg); return -1; } @@ -271,7 +271,7 @@ grecs_str_to_sockaddr(struct grecs_sockaddr **sap, return parse_unix(sap, arg, arg, gh, locus); else if (strlen(arg) > 5 && memcmp(arg, "unix:", 5) == 0) { if (arg[5] != '/') - grecs_error(locus, 0, + argot_error(locus, 0, _("%s: UNIX socket must be an absolute file name"), arg); return parse_unix(sap, arg, arg + 5, gh, locus); |