aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2015-03-06 11:51:31 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2015-03-06 11:51:31 +0100
commit4be843064c700fb28cab869893c3d19392c4938d (patch)
tree98df2327fb3857445054b2946af0e88dd5320861
parent59d6ed3f0179d35fd5fc27c87018906df1142d08 (diff)
downloadutil-linux-playground-4be843064c700fb28cab869893c3d19392c4938d.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.c25
1 files changed, 12 insertions, 13 deletions
diff --git a/misc-utils/logger.c b/misc-utils/logger.c
index 81581300e4..6869f44d75 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);
}