}
static noinline_for_stack
-char *ip4_addr_string_sa(char *buf, char *end, const struct sockaddr_in *sa,
- struct printf_spec spec, const char *fmt)
+char *ip4_addr_string_sa(struct printf_state *ps, const struct sockaddr_in *sa)
{
bool have_p = false;
char *p, ip4_addr[sizeof("255.255.255.255") + sizeof(":12345")];
char *pend = ip4_addr + sizeof(ip4_addr);
const u8 *addr = (const u8 *) &sa->sin_addr.s_addr;
- char fmt4[3] = { fmt[0], '4', 0 };
+ char fmt4[3] = { ps->fmt[0], '4', 0 };
- fmt++;
- while (isalpha(*++fmt)) {
- switch (*fmt) {
+ ps->fmt++;
+ while (isalpha(*++ps->fmt)) {
+ switch (*ps->fmt) {
case 'p':
have_p = true;
break;
case 'l':
case 'n':
case 'b':
- fmt4[2] = *fmt;
+ fmt4[2] = *ps->fmt;
break;
}
}
p = ip4_string(ip4_addr, addr, fmt4);
if (have_p) {
*p++ = ':';
- p = number(p, pend, ntohs(sa->sin_port), spec);
+ p = number(p, pend, ntohs(sa->sin_port), ps->spec);
}
*p = '\0';
- return string(buf, end, ip4_addr, spec);
+ printf_string(ps, ip4_addr);
+ return ps->buf;
}
static noinline_for_stack
switch (sa->raw.sa_family) {
case AF_INET:
- return ip4_addr_string_sa(buf, end, &sa->v4, spec, fmt);
+ return ip4_addr_string_sa(ps, &sa->v4);
case AF_INET6:
return ip6_addr_string_sa(ps, &sa->v6);
default: