diff options
author | Duncaen <mail@duncano.de> | 2018-06-22 16:13:51 +0200 |
---|---|---|
committer | Duncaen <mail@duncano.de> | 2018-06-22 16:53:50 +0200 |
commit | 895727940f54d7eaa72765cfdb28d4d1fa652651 (patch) | |
tree | ab973cbc478557aeab03b99226a5cde884f09bee /vlogger.c | |
parent | 999b1ba166f508aa950adbe0445b0ac847971173 (diff) | |
download | runit-void-895727940f54d7eaa72765cfdb28d4d1fa652651.tar.gz runit-void-895727940f54d7eaa72765cfdb28d4d1fa652651.tar.xz runit-void-895727940f54d7eaa72765cfdb28d4d1fa652651.zip |
vlogger: use static buffer and add -f flag
Diffstat (limited to 'vlogger.c')
-rw-r--r-- | vlogger.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/vlogger.c b/vlogger.c index e3a548e..aaf569b 100644 --- a/vlogger.c +++ b/vlogger.c @@ -76,6 +76,7 @@ strpriority(char *s, int *facility, int *level) int main(int argc, char *argv[]) { + char buf[1024]; char *p, *argv0; char *tag = "vlogger"; int c; @@ -98,16 +99,21 @@ main(int argc, char *argv[]) } } - while ((c = getopt(argc, argv, "ip:Sst:")) != -1) + while ((c = getopt(argc, argv, "f:ip:Sst:")) != -1) switch (c) { + case 'f': + if (freopen(optarg, "r", stdin) == NULL) { + fprintf(stderr, "vlogger: %s: %s\n", optarg, strerror(errno)); + return 1; + } + break; case 'i': logflags |= LOG_PID; break; case 'p': strpriority(optarg, &facility, &level); break; case 'S': Sflag++; break; case 's': logflags |= LOG_PERROR; break; case 't': tag = optarg; break; default: -usage: - fprintf(stderr, "usage: vlogger [-isS] [-p pri] [-t tag]\n"); + fprintf(stderr, "usage: vlogger [-isS] [-f file] [-p pri] [-t tag]\n"); exit(1); } @@ -129,14 +135,8 @@ usage: openlog(tag, logflags, facility); - char *line = NULL; - size_t linelen = 0; - ssize_t rd; - while ((rd = getline(&line, &linelen, stdin)) != -1) { - if (line[rd-1] == '\n') - line[rd-1] = '\0'; - syslog(level|facility, "%s", line); - } + while (fgets(buf, sizeof buf, stdin) != NULL) + syslog(level|facility, "%s", buf); return 1; } |