From: Dmitry V. Levin Date: Sun, 25 Mar 2012 21:04:57 +0000 (+0000) Subject: strace-log-merge: enhance usage error diagnostics X-Git-Tag: v4.7~38 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20f6b54385d2462d858419f7c67509cb3d22d155;p=strace strace-log-merge: enhance usage error diagnostics * strace-log-merge: Add --help option. Check number of arguments. Issue an error message when no strace output was merged. --- diff --git a/strace-log-merge b/strace-log-merge index 9dc03b89..14b3bf1a 100755 --- a/strace-log-merge +++ b/strace-log-merge @@ -1,7 +1,8 @@ #!/bin/sh -if test $# = 0; then - cat >&2 <<__EOF__ +show_usage() +{ + cat <<__EOF__ Usage: ${0##*/} STRACE_LOG Finds all STRACE_LOG.PID files, adds PID prefix to every line, @@ -10,19 +11,23 @@ then combines and sorts them, and prints result to standard output. It is assumed that STRACE_LOGs were produced by strace with -tt[t] option which prints timestamps (otherwise sorting won't do any good). __EOF__ +} + +if [ $# -ne 1 ]; then + show_usage >&2 exit 1 +elif [ "$1" = '--help' ]; then + show_usage + exit 0 fi logfile=$1 -pfxlen=${#1} for file in "$logfile".*; do [ -f "$file" ] || continue - suffix=${file:1+$pfxlen} - [ "$suffix" -gt 0 ] 2> /dev/null || { - echo "Skipped file '$file' (bad suffix)" >&2 + suffix=${file#$logfile.} + [ "$suffix" -gt 0 ] 2> /dev/null || continue - } pid=$(printf "%-5s" $suffix) # Some strace logs have last line which is not '\n' terminated, # so add extra newline to every file. @@ -30,4 +35,9 @@ for file in "$logfile".*; do sed "s/^/$pid /" < "$file" echo done \ -| grep -v '^$' | sort -k2 +| sort -s -k2,2 | grep -v '^$' + +rc=$? +[ $rc -eq 1 ] && + echo >&2 "${0##*/}: $logfile: strace output not found" +exit $rc