#! /usr/bin/perl
#
# ptx_ts - Pengutronix' Add A Time Stamp Filter V1
# written by Wolfram Sang, Copyright 2009 Pengutronix
# free software - no warranty - WTFPL V2, see http://sam.zoy.org/wtfpl/

use warnings;
use strict;
use Time::HiRes qw(gettimeofday tv_interval);

my $arg = defined($ARGV[0]) ? $ARGV[0] : '(?=foo)bar'; # false-branch is a regexp that never matches
if ($arg eq '--help') {
	print "ptx_ts [regexp] - a filter which prepends a timestamp to every line of STDOUT; time will be reset if [regexp] matches\n";
	print "  Example: microcom <microcom_options> | ptx_ts 'U-Boot 2.0'\n";
	exit 0;
}

my $old;
my $base;
$| = 1; # Flush output immediately

sub reset_time {
	$old = 0;
	$base = [gettimeofday()];
}

reset_time;
while (<STDIN>) {
	reset_time if (/$arg/o);
	my $new = tv_interval($base);
	my $diff = $new - $old;
	printf("[%10.6f] <%10.6f> $_", $new, $diff);
	$old = $new;
}
