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 <jow@openwrt.org>
This commit is contained in:
parent
dffbc09baf
commit
fa73496098
2 changed files with 14 additions and 0 deletions
13
usock.c
13
usock.c
|
@ -26,6 +26,7 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "usock.h"
|
#include "usock.h"
|
||||||
|
|
||||||
|
@ -101,6 +102,18 @@ static int usock_inet(int type, const char *host, const char *service, int sockt
|
||||||
return sock;
|
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 usock(int type, const char *host, const char *service) {
|
||||||
int socktype = ((type & 0xff) == USOCK_TCP) ? SOCK_STREAM : SOCK_DGRAM;
|
int socktype = ((type & 0xff) == USOCK_TCP) ? SOCK_STREAM : SOCK_DGRAM;
|
||||||
bool server = !!(type & USOCK_SERVER);
|
bool server = !!(type & USOCK_SERVER);
|
||||||
|
|
1
usock.h
1
usock.h
|
@ -30,6 +30,7 @@
|
||||||
#define USOCK_IPV4ONLY 0x4000
|
#define USOCK_IPV4ONLY 0x4000
|
||||||
#define USOCK_UNIX 0x8000
|
#define USOCK_UNIX 0x8000
|
||||||
|
|
||||||
|
const char *usock_port(int port);
|
||||||
int usock(int type, const char *host, const char *service);
|
int usock(int type, const char *host, const char *service);
|
||||||
|
|
||||||
#endif /* USOCK_H_ */
|
#endif /* USOCK_H_ */
|
||||||
|
|
Loading…
Reference in a new issue