| #!/bin/sh |
| # $Id: texindex.in 6991 2016-02-06 12:16:13Z gavin $ |
| # |
| # Copyright 2015, 2016 Free Software Foundation, Inc. |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 3 of the License, |
| # or (at your option) any later version. |
| # |
| # This program 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 General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| # |
| # Originally written by Karl Berry. |
| # Please send bug reports, etc. to bug-texinfo@gnu.org. |
| # |
| # Shell wrapper for the texindex.awk program. This is the most |
| # convenient way to support --options; with a #! line, it is (g)awk |
| # itself that interprets the options. We want texindex --version |
| # to report texindex's version number, not gawk's. |
| # |
| # So our job here is to (a) find the awk interpreter, |
| # and (b) find the texindex.awk script file. |
| |
| mydir=`cd \`dirname $0\` && pwd` |
| |
| # |
| # allow user override for awk program location. |
| awk_binary= |
| awk_envvar=$TEXINDEX_AWK |
| if test -n "$awk_envvar"; then |
| if test -s "$awk_envvar"; then |
| awk_binary=$awk_envvar |
| else |
| echo "$0: TEXINDEX_AWK environment variable set, but value" >&2 |
| echo "$0: is not a readable non-empty file; ignoring: $awk_envvar" >&2 |
| fi |
| fi |
| # |
| # else use configured value for awk. |
| if test -z "$awk_binary"; then |
| awk_binary="gawk" |
| fi |
| # |
| # that should never be empty, but just in case, else fall back to plain |
| # "awk". (Let's not go to the trouble of searching PATH unless we get |
| # reports of problems.) |
| test -z "$awk_binary" && awk_binary=awk |
| |
| |
| # |
| # finding the texindex.awk script file ... |
| ti_script= |
| # |
| # allow user override for script location: |
| ti_envvar=$TEXINDEX_SCRIPT |
| if test -n "$ti_envvar"; then |
| if test -s "$ti_envvar"; then |
| ti_script=$ti_envvar |
| else |
| echo "$0: TEXINDEX_SCRIPT environment variable set, but value" >&2 |
| echo "$0: is not a readable non-empty file; ignoring: $ti_script" >&2 |
| fi |
| fi |
| # |
| # else if script is in the same directory as us (development tree), use it: |
| test -z "$ti_script" && test -s "$mydir/texindex.awk" \ |
| && ti_script=$mydir/texindex.awk |
| # |
| # else look for script in pkgdatadir. |
| if test -z "$ti_script"; then |
| pkgdatadir_configured="/usr/local/google/home/pgynther/clients/buildroot/output/host/usr/share/texinfo" |
| test -s "$pkgdatadir_configured/texindex.awk" \ |
| && ti_script=$pkgdatadir_configured/texindex.awk |
| fi |
| # |
| # look relative to $mydir, to allow the installed tree to be moved. |
| if test -z "$ti_script"; then |
| relative_dir=$mydir/../share/texinfo |
| test -d "$relative_dir" \ |
| && test -s "$relative_dir/texindex.awk" \ |
| && ti_script=$relative_dir/texindex.awk |
| fi |
| # |
| # didn't find it, abort. |
| if test -z "$ti_script"; then |
| echo "$0: could not locate texindex.awk script file, quitting." >&2 |
| echo "$0: (checked envvar TEXINDEX_SCRIPT ($TEXINDEX_SCRIPT)," >&2 |
| echo "$0: executable dir ($mydir)," >&2 |
| echo "$0: share dir relative to binary ($relative_dir)," >&2 |
| echo "$0: and configured pkgdatadir ($pkgdatadir_configured).)" >&2 |
| exit 1 |
| fi |
| |
| # Suppose a symlink named a\tb (four chars) is made to this script, and |
| # "a\tb" --help |
| # is invoked. We want the output to report the program name as the |
| # four chars a, \, t, b, not a, tab, b. |
| # |
| # But we pass the value using (g)awk -v, and (g)awk processes arguments |
| # to -v for escape sequences, so that by the time the rest of the script |
| # sees it, it has a tab in it. |
| # |
| # Conclusion: we must double any backslashes before invoking gawk, |
| # by running the command: sed 's,\\,\\\\,g' |
| # |
| # Sadly, since we have to do this in a shell, we need twice |
| # as many backslash characters in the input. Hope it's portable across |
| # shells and seds. |
| # |
| escaped0=`echo "$0" | sed 's,\\\\,\\\\\\\\,g'` |
| exec $awk_binary -v Invocation_name="$escaped0" -f "$ti_script" -- "$@" |