]> granicus.if.org Git - strace/commitdiff
strace-log-merge: enhance usage error diagnostics
authorDmitry V. Levin <ldv@altlinux.org>
Sun, 25 Mar 2012 21:04:57 +0000 (21:04 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Sun, 25 Mar 2012 21:04:57 +0000 (21:04 +0000)
* strace-log-merge: Add --help option.  Check number of arguments.
Issue an error message when no strace output was merged.

strace-log-merge

index 9dc03b89c8ebf9975c470cb84b675d6de92e75f0..14b3bf1a80d758e18aded56b8bd9c430a766c19b 100755 (executable)
@@ -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