From 70c2cd9a60d83af79f6c172426617481b548bc46 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Fri, 28 Jun 2019 10:01:29 +0200 Subject: [PATCH] script: add more information to timing log Let's record also exit code, duration and start time. Signed-off-by: Karel Zak --- term-utils/script.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/term-utils/script.c b/term-utils/script.c index e133de58c9..1a1ed5f9e7 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -121,6 +121,7 @@ struct script_log { int format; /* SCRIPT_FMT_* */ char *filename; /* on command line specified name */ struct timeval oldtime; /* previous entry log time (SCRIPT_FMT_TIMING_* only) */ + struct timeval starttime; unsigned int initialized : 1; }; @@ -300,7 +301,7 @@ static struct script_log *log_associate(struct script_control *ctl, return log; } -static void log_close(struct script_control *ctl __attribute__((unused)), +static void log_close(struct script_control *ctl, struct script_log *log, const char *msg, int status) @@ -323,6 +324,18 @@ static void log_close(struct script_control *ctl __attribute__((unused)), fprintf(log->fp, _("\nScript done on %s [COMMAND_EXIT_CODE=\"%d\"]\n"), buf, status); break; } + case SCRIPT_FMT_TIMING_MULTI: + { + struct timeval now, delta; + + gettime_monotonic(&now); + timersub(&now, &log->starttime, &delta); + + log_info(ctl, "DURATION", "%ld.%06ld", + (long)delta.tv_sec, (long)delta.tv_usec); + log_info(ctl, "EXIT_CODE", "%d", status); + break; + } case SCRIPT_FMT_TIMING_SIMPLE: break; } @@ -383,6 +396,7 @@ static void log_start(struct script_control *ctl, case SCRIPT_FMT_TIMING_SIMPLE: case SCRIPT_FMT_TIMING_MULTI: gettime_monotonic(&log->oldtime); + gettime_monotonic(&log->starttime); break; } @@ -1238,6 +1252,12 @@ int main(int argc, char **argv) start_logging(&ctl); if (timingfile && format == SCRIPT_FMT_TIMING_MULTI) { + char buf[FORMAT_TIMESTAMP_MAX]; + time_t tvec = script_time((time_t *)NULL); + + strtime_iso(&tvec, ISO_TIMESTAMP, buf, sizeof(buf)); + log_info(&ctl, "START_TIME", buf); + if (ctl.isterm) { init_terminal_info(&ctl); log_info(&ctl, "TERM", ctl.ttytype); -- 2.39.2