#!/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,
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.
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