diff options
| author | Drew DeVault <sir@cmpwn.com> | 2020-09-23 14:32:52 -0400 |
|---|---|---|
| committer | Drew DeVault <sir@cmpwn.com> | 2020-09-23 14:32:52 -0400 |
| commit | b85c64b441e560f27f87fa26381600c2cbfe17b8 (patch) | |
| tree | 050fbf04e9b4a816bd369ea409da9180409515f0 /src/log.c | |
| parent | da9db7bc46db0cb675635594c7c207e232a2da63 (diff) | |
| download | gmnisrv-b85c64b441e560f27f87fa26381600c2cbfe17b8.tar.gz gmnisrv-b85c64b441e560f27f87fa26381600c2cbfe17b8.tar.xz gmnisrv-b85c64b441e560f27f87fa26381600c2cbfe17b8.zip | |
Generalize logging
Diffstat (limited to 'src/log.c')
| -rw-r--r-- | src/log.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/log.c b/src/log.c new file mode 100644 index 0000000..d4d4e2a --- /dev/null +++ b/src/log.c @@ -0,0 +1,61 @@ +#include <arpa/inet.h> +#include <assert.h> +#include <stdarg.h> +#include <stdio.h> +#include <sys/socket.h> +#include "log.h" + +static void +server_logf(FILE *f, const char *fmt, va_list ap) +{ + fprintf(f, "<server>\t"); + vfprintf(f, fmt, ap); +} + +static void +client_logf(FILE *f, struct sockaddr *addr, const char *fmt, va_list ap) +{ + char abuf[INET6_ADDRSTRLEN]; + const char *addrs = inet_ntop(addr->sa_family, + addr->sa_data, abuf, sizeof(abuf)); + assert(addrs); + + fprintf(f, "%s\t", addrs); + vfprintf(f, fmt, ap); +} + +void +server_log(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + server_logf(stdout, fmt, ap); + va_end(ap); +} + +void +client_log(struct sockaddr *addr, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + client_logf(stdout, addr, fmt, ap); + va_end(ap); +} + +void +server_error(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + server_logf(stderr, fmt, ap); + va_end(ap); +} + +void +client_error(struct sockaddr *addr, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + client_logf(stderr, addr, fmt, ap); + va_end(ap); +} |
