Browse Source

MT#55283 add _print_gstring helpers

Use a small stack buffer instead of obtaining a thread-local one when
writing directly to a GString.

Change-Id: Ia15b8eee365ddb14e35eddc72358c4793ccba7d9
rfuchs/test
Richard Fuchs 1 year ago
parent
commit
26136610a0
1 changed files with 20 additions and 0 deletions
  1. +20
    -0
      lib/socket.h

+ 20
- 0
lib/socket.h View File

@ -134,6 +134,15 @@ INLINE char *sockaddr_print_buf(const sockaddr_t *a) {
sockaddr_print(a, buf, THREAD_BUF_SIZE);
return buf;
}
INLINE int sockaddr_print_gstring(GString *s, const sockaddr_t *a) {
if (!a->family)
return 0;
char buf[THREAD_BUF_SIZE];
if (sockaddr_print(a, buf, THREAD_BUF_SIZE))
return -1;
g_string_append(s, buf);
return 0;
}
INLINE int sockaddr_print_p(const sockaddr_t *a, char *buf, size_t len) {
if (!a->family) {
buf[0] = '\0';
@ -161,12 +170,23 @@ INLINE char *sockaddr_print_port_buf(const sockaddr_t *a, unsigned int port) {
sockaddr_print_port(a, port, buf, THREAD_BUF_SIZE);
return buf;
}
INLINE int sockaddr_print_port_gstring(GString *s, const sockaddr_t *a, unsigned int port) {
char buf[THREAD_BUF_SIZE];
if (sockaddr_print_port(a, port, buf, THREAD_BUF_SIZE))
return -1;
g_string_append(s, buf);
return 0;
}
INLINE int endpoint_print(const endpoint_t *ep, char *buf, size_t len) {
return sockaddr_print_port(&ep->address, ep->port, buf, len);
}
INLINE char *endpoint_print_buf(const endpoint_t *ep) {
return sockaddr_print_port_buf(&ep->address, ep->port);
}
INLINE int endpoint_print_gstring(GString *s, const endpoint_t *ep) {
return sockaddr_print_port_gstring(s, &ep->address, ep->port);
}
INLINE int is_addr_unspecified(const sockaddr_t *a) {
if (!a || !a->family)
return 1;


Loading…
Cancel
Save