All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Theil <markus.theil@tu-ilmenau.de>
To: johannes@sipsolutions.net
Cc: linux-wireless@vger.kernel.org,
	Markus Theil <markus.theil@tu-ilmenau.de>
Subject: [PATCH] iw: add option to print human readable event time
Date: Sat,  6 Feb 2021 16:04:32 +0100	[thread overview]
Message-ID: <20210206150432.10456-1-markus.theil@tu-ilmenau.de> (raw)

Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
---
 event.c | 30 ++++++++++++++++++++++++------
 iw.h    |  2 +-
 2 files changed, 25 insertions(+), 7 deletions(-)

diff --git a/event.c b/event.c
index 61395f8..8bdbbe9 100644
--- a/event.c
+++ b/event.c
@@ -3,6 +3,7 @@
 #include <net/if.h>
 #include <errno.h>
 #include <inttypes.h>
+#include <time.h>
 #include "iw.h"
 
 static int no_seq_check(struct nl_msg *msg, void *arg)
@@ -905,12 +906,13 @@ static int print_event(struct nl_msg *msg, void *arg)
 	int rem_nst;
 	__u16 status;
 
-	if (args->time || args->reltime) {
+	if (args->time || args->reltime || args->ctime) {
 		unsigned long long usecs, previous;
 
 		previous = 1000000ULL * args->ts.tv_sec + args->ts.tv_usec;
 		gettimeofday(&args->ts, NULL);
 		usecs = 1000000ULL * args->ts.tv_sec + args->ts.tv_usec;
+
 		if (args->reltime) {
 			if (!args->have_ts) {
 				usecs = 0;
@@ -918,7 +920,16 @@ static int print_event(struct nl_msg *msg, void *arg)
 			} else
 				usecs -= previous;
 		}
-		printf("%llu.%06llu: ", usecs/1000000, usecs % 1000000);
+
+		if (args->ctime) {
+			struct tm *tm = localtime(&args->ts.tv_sec);
+			char buf[255];
+
+			memset(buf, 0, 255);
+			strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", tm);
+			printf("[%s.%06lu]: ", buf, args->ts.tv_usec);
+		} else
+			printf("%llu.%06llu: ", usecs/1000000, usecs % 1000000);
 	}
 
 	nla_parse(tb, NL80211_ATTR_MAX, genlmsg_attrdata(gnlh, 0),
@@ -1407,6 +1418,7 @@ static int print_events(struct nl80211_state *state,
 			enum id_input id)
 {
 	struct print_event_args args;
+	int num_time_formats = 0;
 	int ret;
 
 	memset(&args, 0, sizeof(args));
@@ -1417,17 +1429,22 @@ static int print_events(struct nl80211_state *state,
 	while (argc > 0) {
 		if (strcmp(argv[0], "-f") == 0)
 			args.frame = true;
-		else if (strcmp(argv[0], "-t") == 0)
+		else if (strcmp(argv[0], "-t") == 0) {
+			num_time_formats++;
 			args.time = true;
-		else if (strcmp(argv[0], "-r") == 0)
+		} else if (strcmp(argv[0], "-T") == 0) {
+			num_time_formats++;
+			args.ctime = true;
+		} else if (strcmp(argv[0], "-r") == 0) {
+			num_time_formats++;
 			args.reltime = true;
-		else
+		} else
 			return 1;
 		argc--;
 		argv++;
 	}
 
-	if (args.time && args.reltime)
+	if (num_time_formats > 1)
 		return 1;
 
 	if (argc)
@@ -1442,5 +1459,6 @@ static int print_events(struct nl80211_state *state,
 TOPLEVEL(event, "[-t|-r] [-f]", 0, 0, CIB_NONE, print_events,
 	"Monitor events from the kernel.\n"
 	"-t - print timestamp\n"
+	"-T - print absolute, human-readable timestamp\n"
 	"-r - print relative timestamp\n"
 	"-f - print full frame for auth/assoc etc.");
diff --git a/iw.h b/iw.h
index 807adec..7f7f4fc 100644
--- a/iw.h
+++ b/iw.h
@@ -181,7 +181,7 @@ int handle_cmd(struct nl80211_state *state, enum id_input idby,
 struct print_event_args {
 	struct timeval ts; /* internal */
 	bool have_ts; /* must be set false */
-	bool frame, time, reltime;
+	bool frame, time, reltime, ctime;
 };
 
 __u32 listen_events(struct nl80211_state *state,
-- 
2.30.0


                 reply	other threads:[~2021-02-06 15:06 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210206150432.10456-1-markus.theil@tu-ilmenau.de \
    --to=markus.theil@tu-ilmenau.de \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.