[PATCH v2] sysklogd/logread: implement dumpfollow mode of operation
Phil Sutter
phil.sutter at viprinet.com
Thu Mar 19 15:24:50 UTC 2015
This is basically a combination of the default (dump mode) and -f
(follow mode). Specifying -F makes logread first dump the log buffer and
then immediately start following it.
---
Changes since v1:
- help text extended to cover new flag
---
sysklogd/logread.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/sysklogd/logread.c b/sysklogd/logread.c
index bea73d9..634dc69 100644
--- a/sysklogd/logread.c
+++ b/sysklogd/logread.c
@@ -10,10 +10,11 @@
*/
//usage:#define logread_trivial_usage
-//usage: "[-f]"
+//usage: "[-fF]"
//usage:#define logread_full_usage "\n\n"
//usage: "Show messages in syslogd's circular buffer\n"
//usage: "\n -f Output data as log grows"
+//usage: "\n -F Same as -f, but dump buffer first"
#include "libbb.h"
#include <sys/ipc.h>
@@ -83,7 +84,10 @@ int logread_main(int argc UNUSED_PARAM, char **argv)
unsigned cur;
int log_semid; /* ipc semaphore id */
int log_shmid; /* ipc shared memory id */
- smallint follow = getopt32(argv, "f");
+ smallint follow, dumpfollow, args = getopt32(argv, "Ff");
+
+ dumpfollow = args & 0x1;
+ follow = args & 0x2;
INIT_G();
@@ -129,7 +133,11 @@ int logread_main(int argc UNUSED_PARAM, char **argv)
printf("cur:%u tail:%u size:%u\n",
cur, shbuf_tail, shbuf_size);
- if (!follow) {
+ if (!follow || dumpfollow) {
+ if (dumpfollow) {
+ follow = 1;
+ dumpfollow = 0;
+ }
/* advance to oldest complete message */
/* find NUL */
cur += strlen(shbuf_data + cur);
--
1.8.5.5
More information about the busybox
mailing list