From: Scott Worley Date: Sat, 31 May 2014 18:06:13 +0000 (-0700) Subject: Skip lines that are greater than 67767976233561595 X-Git-Tag: v1.0.0~2 X-Git-Url: http://git.scottworley.com/keystroke-timestamps/commitdiff_plain/cab3791ef94e1aa0c9f9891b95fcbdddb71e1bb9?ds=inline Skip lines that are greater than 67767976233561595 Sometimes this happens if keystroke-timestamps is killed without flushing, such as by SIGKILL or loss of power. When this happens, it can write a partial line. When the next run starts up, it appends a timestamp to the partial line, resulting in a timestamp too large for awk to process. GNU awk's end-of-time behavior: $ f() { awk '{ print strftime("%F %T", $1) }' <<< "$1"; } $ f 67767976233561595 2147483647-12-31 23:59:52 $ f 67767976233561596 -2147483648-01-01 00:00:00 $ f 67768036191705595 -2147481749-12-31 23:59:52 $ f 67768036191705596 awk: cmd. line:1: (FILENAME=- FNR=1) fatal error: internal error Aborted --- diff --git a/gaps.sh b/gaps.sh index 2d28af9..361e2a6 100755 --- a/gaps.sh +++ b/gaps.sh @@ -4,7 +4,7 @@ threshold=${1:-3600} LOGFILE="${2:-$HOME/keystroke-timestamps.log}" awk -vthreshold="$threshold" -vtime_fmt="%F %T" ' - { + $1 <= 67767976233561595 { if (prev && $1 - prev > threshold) { print(strftime(time_fmt, prev), "to", strftime(time_fmt, $1), "was", $1 - prev) }