diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2013-06-04 10:02:59 +0200 |
---|---|---|
committer | Daniel Borkmann <dborkman@redhat.com> | 2013-06-04 10:02:59 +0200 |
commit | 22e4551cb007312ef808669aa70cad10a7657136 (patch) | |
tree | 6e0b8ee7ddb4e30865813d704fa7f5de1a0796d9 | |
parent | 0f1f8ccf43e1296725cfbef482d19c90b15af98c (diff) |
xio: refactor fopencookie related functions
Again, we move them out of xio to shrink it down.
Signed-off-by: Daniel Borkmann <dborkman@redhat.com>
-rw-r--r-- | cookie.c | 51 | ||||
-rw-r--r-- | cookie.h | 6 | ||||
-rw-r--r-- | curvetun.c | 1 | ||||
-rw-r--r-- | curvetun/Makefile | 1 | ||||
-rw-r--r-- | xio.c | 45 | ||||
-rw-r--r-- | xio.h | 1 |
6 files changed, 59 insertions, 46 deletions
diff --git a/cookie.c b/cookie.c new file mode 100644 index 0000000..9ee1ac6 --- /dev/null +++ b/cookie.c @@ -0,0 +1,51 @@ +#define _GNU_SOURCE +#include <stdio.h> +#include <string.h> +#include <syslog.h> + +#include "cookie.h" + +static char const *priov[] = { + [LOG_EMERG] = "EMERG:", + [LOG_ALERT] = "ALERT:", + [LOG_CRIT] = "CRIT:", + [LOG_ERR] = "ERR:", + [LOG_WARNING] = "WARNING:", + [LOG_NOTICE] = "NOTICE:", + [LOG_INFO] = "INFO:", + [LOG_DEBUG] = "DEBUG:", +}; + +static ssize_t cookie_writer(void *cookie, char const *data, size_t leng) +{ + int prio = LOG_DEBUG, len; + + do { + len = strlen(priov[prio]); + } while (memcmp(data, priov[prio], len) && --prio >= 0); + + if (prio < 0) { + prio = LOG_INFO; + } else { + data += len; + leng -= len; + } + + while (*data == ' ') { + ++data; + --leng; + } + + syslog(prio, "%.*s", (int) leng, data); + + return leng; +} + +static cookie_io_functions_t cookie_log = { + .write = cookie_writer, +}; + +void to_std_log(FILE **fp) +{ + setvbuf(*fp = fopencookie(NULL, "w", cookie_log), NULL, _IOLBF, 0); +} diff --git a/cookie.h b/cookie.h new file mode 100644 index 0000000..14f1801 --- /dev/null +++ b/cookie.h @@ -0,0 +1,6 @@ +#ifndef COOKIE_H +#define COOKIE_H + +extern void to_std_log(FILE **fp); + +#endif /* COOKIE_H */ @@ -28,6 +28,7 @@ #include "xutils.h" #include "die.h" #include "str.h" +#include "cookie.h" #include "xmalloc.h" #include "curvetun.h" #include "curve.h" diff --git a/curvetun/Makefile b/curvetun/Makefile index ce91dc2..62f7a51 100644 --- a/curvetun/Makefile +++ b/curvetun/Makefile @@ -12,6 +12,7 @@ curvetun-objs = xmalloc.o \ hash.o \ rnd.o \ curve.o \ + cookie.o \ cpusched.o \ ct_usermgmt.o \ ct_servmgmt.o \ @@ -157,48 +157,3 @@ ssize_t write_exact(int fd, void *buf, size_t len, int mayexit) return num; } - -static char const *priov[] = { - [LOG_EMERG] = "EMERG:", - [LOG_ALERT] = "ALERT:", - [LOG_CRIT] = "CRIT:", - [LOG_ERR] = "ERR:", - [LOG_WARNING] = "WARNING:", - [LOG_NOTICE] = "NOTICE:", - [LOG_INFO] = "INFO:", - [LOG_DEBUG] = "DEBUG:", -}; - -static ssize_t cookie_writer(void *cookie, char const *data, size_t leng) -{ - int prio = LOG_DEBUG, len; - - do { - len = strlen(priov[prio]); - } while (memcmp(data, priov[prio], len) && --prio >= 0); - - if (prio < 0) { - prio = LOG_INFO; - } else { - data += len; - leng -= len; - } - - while (*data == ' ') { - ++data; - --leng; - } - - syslog(prio, "%.*s", (int) leng, data); - - return leng; -} - -static cookie_io_functions_t cookie_log = { - .write = cookie_writer, -}; - -void to_std_log(FILE **fp) -{ - setvbuf(*fp = fopencookie(NULL, "w", cookie_log), NULL, _IOLBF, 0); -} @@ -16,6 +16,5 @@ extern ssize_t read_or_die(int fd, void *buf, size_t count); extern ssize_t write_or_die(int fd, const void *buf, size_t count); extern ssize_t read_exact(int fd, void *buf, size_t len, int mayexit); extern ssize_t write_exact(int fd, void *buf, size_t len, int mayexit); -extern void to_std_log(FILE **fp); #endif /* XIO_H */ |