diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2013-02-26 02:48:19 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2013-02-26 02:55:51 +0100 |
commit | 5d9219ddc17d3cbbce111fe29443b1a205503e06 (patch) | |
tree | 2a4417cb1a90348e395ebbada0a19a3767739152 /utils/remap.sh | |
parent | 25b928645df760156a58aa707da56eae66a4ae77 (diff) |
Add remap translator
* trans/remap.c: New file.
* trans/Makefile (targets): Add remap.
(SRCS): Add remap.c.
(remap): Add rule.
* utils/remap.sh: New script.
* utils/Makefile (targets): Add remap.
(special-targets): Add remap.
(SRCS): Add remap.sh.
* NEWS: Advertise new translator
Diffstat (limited to 'utils/remap.sh')
-rw-r--r-- | utils/remap.sh | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/utils/remap.sh b/utils/remap.sh new file mode 100644 index 00000000..106109e8 --- /dev/null +++ b/utils/remap.sh @@ -0,0 +1,64 @@ +#!/bin/sh +# Execute a command in an environment where some paths are remapped +# +# Copyright (C) 2002, 2013 Free Software Foundation, Inc. +# +# This file is part of the GNU Hurd. +# +# The GNU Hurd 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 2, or (at +# your option) any later version. +# +# The GNU Hurd 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, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +# + +USAGE="Usage: $0 [OPTION...] [FROM1 TO1 [FROM2 TO2 [...]] -- [COMMAND...]" +DOC="Execute COMMAND in an environment where some paths are remapped." + +while :; do + case "$1" in + --help|"-?") + echo "$USAGE" + echo "$DOC" + echo "" + echo " -?, --help Give this help list" + echo " --usage Give a short usage message" + echo " -V, --version Print program version" + exit 0;; + --usage) + echo "Usage: $0 [-V?] [--help] [--usage] [--version]" + exit 0;; + --version|-V) + echo "STANDARD_HURD_VERSION_remap_"; exit 0;; + --) + shift + break;; + -*) + echo 1>&2 "$0: unrecognized option \`$1'" + echo 1>&2 "Try \`$0 --help' or \`$0 --usage' for more information"; + exit 1;; + *) + MAPPED="$MAPPED $1" + break;; + esac +done + +if [ $# -eq 0 ]; then + set -- ${SHELL:-/bin/sh} +fi + +# We exec settrans, which execs the "fakeauth" command in the chroot context. +# The `pwd` is evaluated here and now, and that result interpreted inside +# the shell running under fakeauth to chdir there inside the chroot world. +# That shell then execs our arguments as a command line. +exec /bin/settrans --chroot \ + /bin/sh -c "cd `pwd`; $*" \ + -- / /hurd/remap $MAPPED |