diff options
author | Mike Frysinger <vapier@gentoo.org> | 2014-01-25 00:33:48 -0500 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2014-03-13 19:56:01 -0400 |
commit | b93834ef81bcc3ba41609b899d432c96adae9eda (patch) | |
tree | eaef6f5827f4dfaf35d7163c40d3d1031dbdf45b /elf/sotruss.sh | |
parent | f3a4632a3f5bae8d0bdee2738afcd2d6e715ea99 (diff) | |
download | glibc-b93834ef81bcc3ba41609b899d432c96adae9eda.tar.gz glibc-b93834ef81bcc3ba41609b899d432c96adae9eda.tar.xz glibc-b93834ef81bcc3ba41609b899d432c96adae9eda.zip |
sotruss: drop ksh support and add basic POSIX shell support
This script works fine under bash as-is, so we don't need ksh anymore. Once we tweak the function style, the code even works (for the most part) under a POSIX shell. The localized strings will be prepended with a $, but it is otherwise functional.
Diffstat (limited to 'elf/sotruss.sh')
-rwxr-xr-x | elf/sotruss.sh | 152 |
1 files changed, 152 insertions, 0 deletions
diff --git a/elf/sotruss.sh b/elf/sotruss.sh new file mode 100755 index 0000000000..483513e80c --- /dev/null +++ b/elf/sotruss.sh @@ -0,0 +1,152 @@ +#! @BASH@ +# Copyright (C) 2011-2014 Free Software Foundation, Inc. +# This file is part of the GNU C Library. + +# The GNU C Library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. + +# The GNU C Library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. + +# You should have received a copy of the GNU Lesser General Public +# License along with the GNU C Library; if not, see +# <http://www.gnu.org/licenses/>. + +# We should be able to find the translation right at the beginning. +TEXTDOMAIN=libc +TEXTDOMAINDIR=@TEXTDOMAINDIR@ + +unset SOTRUSS_FROMLIST +unset SOTRUSS_TOLIST +unset SOTRUSS_OUTNAME +unset SOTRUSS_EXIT +unset SOTRUSS_NOINDENT +SOTRUSS_WHICH=$$ +lib='@PREFIX@/$LIB/audit/sotruss-lib.so' + +do_help() { + echo $"Usage: sotruss [OPTION...] [--] EXECUTABLE [EXECUTABLE-OPTION...] + -F, --from FROMLIST Trace calls from objects on FROMLIST + -T, --to TOLIST Trace calls to objects on TOLIST + + -e, --exit Also show exits from the function calls + -f, --follow Trace child processes + -o, --output FILENAME Write output to FILENAME (or FILENAME.$PID in case + -f is also used) instead of standard error + + -?, --help Give this help list + --usage Give a short usage message + --version Print program version" + + echo + printf $"Mandatory arguments to long options are also mandatory for any corresponding\nshort options.\n" + echo + + printf $"For bug reporting instructions, please see:\\n%s.\\n" \ + "@REPORT_BUGS_TO@" + exit 0 +} + +do_missing_arg() { + printf >&2 $"%s: option requires an argument -- '%s'\n" sotruss "$1" + printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss + exit 1 +} + +do_ambiguous() { + printf >&2 $"%s: option is ambiguous; possibilities:" + while test $# -gt 0; do + printf >&2 " '%s'" $1 + shift + done + printf >&2 "\n" + printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss + exit 1 +} + +while test $# -gt 0; do + case "$1" in + --v | --ve | --ver | --vers | --versi | --versio | --version) + echo "sotruss @PKGVERSION@@VERSION@" + printf $"Copyright (C) %s Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +" "2014" + printf $"Written by %s.\n" "Ulrich Drepper" + exit 0 + ;; + -\? | --h | --he | --hel | --help) + do_help + ;; + --u | --us | --usa | --usag | --usage) + printf $"Usage: %s [-ef] [-F FROMLIST] [-o FILENAME] [-T TOLIST] [--exit] + [--follow] [--from FROMLIST] [--output FILENAME] [--to TOLIST] + [--help] [--usage] [--version] [--] + EXECUTABLE [EXECUTABLE-OPTION...]\n" sotruss + exit 0 + ;; + -F | --fr | --fro | --from) + if test $# -eq 1; then + do_missing_arg "$1" + fi + shift + SOTRUSS_FROMLIST="$1" + ;; + -T | --t | --to) + if test $# -eq 1; then + do_missing_arg "$1" + fi + shift + SOTRUSS_TOLIST="$1" + ;; + -o | --o | --ou | --out | --outp | --outpu | --output) + if test $# -eq 1; then + do_missing_arg "$1" + fi + shift + SOTRUSS_OUTNAME="$1" + ;; + -f | --fo | --fol | --foll | --follo | --follow) + unset SOTRUSS_WHICH + ;; + -l | --l | --li | --lib) + if test $# -eq 1; then + do_missing_arg "$1" + fi + shift + lib="$1" + ;; + -e | --e | --ex | --exi | --exit) + SOTRUSS_EXIT=1 + ;; + --f) + do_ambiguous '--from' '--follow' + ;; + --) + shift + break + ;; + -*) + printf >&2 $"%s: unrecognized option '%c%s'\n" sotruss '-' ${1#-} + printf >&2 $"Try \`%s --help' or \`%s --usage' for more information.\n" sotruss sotruss + exit 1 + ;; + *) + break + ;; + esac + shift +done + +export SOTRUSS_FROMLIST +export SOTRUSS_TOLIST +export SOTRUSS_OUTNAME +export SOTRUSS_WHICH +export SOTRUSS_EXIT +export LD_AUDIT="$lib" + +exec "$@" |