From fa73496098893e90330040b8f43f2773b42eed12 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Mon, 22 Sep 2014 18:15:58 +0200 Subject: [PATCH] usock: add usock_port() for convenient use of numeric ports Add a new helper function usock_port() which converts the given numeric port number into a string using a private static buffer. This way a calling application can conveniently use numeric port arguments without having to convert them before: int fd = usock(USOCK_UDP, "example.org", usock_port(80)); Signed-off-by: Jo-Philipp Wich --- usock.c | 13 +++++++++++++ usock.h | 1 + 2 files changed, 14 insertions(+) diff --git a/usock.c b/usock.c index 04ed4ee..64eab9e 100644 --- a/usock.c +++ b/usock.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "usock.h" @@ -101,6 +102,18 @@ static int usock_inet(int type, const char *host, const char *service, int sockt return sock; } +const char *usock_port(int port) +{ + static char buffer[sizeof("65535\0")]; + + if (port < 0 || port > 65535) + return NULL; + + snprintf(buffer, sizeof(buffer), "%u", port); + + return buffer; +} + int usock(int type, const char *host, const char *service) { int socktype = ((type & 0xff) == USOCK_TCP) ? SOCK_STREAM : SOCK_DGRAM; bool server = !!(type & USOCK_SERVER); diff --git a/usock.h b/usock.h index 5df4362..8345581 100644 --- a/usock.h +++ b/usock.h @@ -30,6 +30,7 @@ #define USOCK_IPV4ONLY 0x4000 #define USOCK_UNIX 0x8000 +const char *usock_port(int port); int usock(int type, const char *host, const char *service); #endif /* USOCK_H_ */