diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2015-03-06 11:51:31 +0100 |
---|---|---|
committer | Karel Zak <kzak@redhat.com> | 2015-03-12 10:17:54 +0100 |
commit | f52c992874e8461b4c121dc8f0573f73b88ddec6 (patch) | |
tree | a44047237eccc41601bb33a3c1316f1d6628f7bb | |
parent | 151898f26bde082bbb57370d90146c1286337917 (diff) | |
download | util-linux-f52c992874e8461b4c121dc8f0573f73b88ddec6.tar.gz |
logger: refactor the way output is written
Previously, output was written in exactly the same way in three
different places. This is now combined into a single function. This
hopefully makes it easier to adapt to changing output needs.
-rw-r--r-- | misc-utils/logger.c | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/misc-utils/logger.c b/misc-utils/logger.c index 81581300e..6869f44d7 100644 --- a/misc-utils/logger.c +++ b/misc-utils/logger.c @@ -332,6 +332,15 @@ rfc3164_current_time(void) return time; } +static void write_output(const struct logger_ctl *ctl, const char *const buf, + const size_t len) +{ + if (write_all(ctl->fd, buf, len) < 0) + warn(_("write failed")); + if (ctl->stderr_printout) + fprintf(stderr, "%s\n", buf); +} + static void syslog_rfc3164(const struct logger_ctl *ctl, const char *msg) { char *buf, pid[30], *cp, *hostname, *dot; @@ -353,10 +362,7 @@ static void syslog_rfc3164(const struct logger_ctl *ctl, const char *msg) len = xasprintf(&buf, "<%d>%.15s %s %.200s%s: %.400s", ctl->pri, rfc3164_current_time(), hostname, cp, pid, msg); - if (write_all(ctl->fd, buf, len) < 0) - warn(_("write failed")); - if (ctl->stderr_printout) - fprintf(stderr, "%s\n", buf); + write_output(ctl, buf, len); free(hostname); free(buf); @@ -427,11 +433,7 @@ static void syslog_rfc5424(const struct logger_ctl *ctl, const char *msg) hostname ? hostname : "", tag, pid, timeq, msg); - if (write_all(ctl->fd, buf, len) < 0) - warn(_("write failed")); - - if (ctl->stderr_printout) - fprintf(stderr, "%s\n", buf); + write_output(ctl, buf, len); free(hostname); free(buf); @@ -483,10 +485,7 @@ static void syslog_local(const struct logger_ctl *ctl, const char *msg) len = xasprintf(&buf, "<%d>%s %s%s: %s", ctl->pri, rfc3164_current_time(), tag, pid, msg); - if (write_all(ctl->fd, buf, len) < 0) - warn(_("write failed")); - if (ctl->stderr_printout) - fprintf(stderr, "%s\n", buf); + write_output(ctl, buf, len); free(buf); } |