#!/bin/sh

# This script first starts faked (the daemon), and then it will run
# the requested program with fake root privileges.

usage () {
  echo >&2 "fakeroot, create a fake root environment."
  echo >&2 "   usage: fakeroot [-l|--lib fakerootlib] [-f|--faked fakedbin]"
  echo >&2 "                   [-u|--unknown-is-real] [-b|--fd-base fd]"
  echo >&2 "                   [--] [command]"
  exit 1
}

PREFIX=/usr
BINDIR=$PREFIX/bin
LIBDIR=$PREFIX/lib

REMOTE_PREFIX=/usr
REMOTE_LIBDIR=$REMOTE_PREFIX/lib

LIB=$LIBDIR/libfakeroot.so.0
FAKED=$BINDIR/faked

REMOTE_LIB=$REMOTE_LIBDIR/libfakeroot.so.0
if test -n "$FAKEROOT_REMOTE_LIB"
then
    REMOTE_LIB=$FAKEROOT_REMOTE_LIB
fi

FAKED_MODE="unknown-is-root"
export FAKED_MODE

libfound=no

# make sure the preload is available
if test -r "$LIB"
then
    libfound=yes
fi

if test $libfound = no
then
    echo >&2 "fakeroot: preload library not found, aborting."
    exit 1
fi

unset FAKEROOTKEY
KEY_PID=`eval $FAKED $FAKEDOPTS $PIPEIN`
FAKEROOTKEY=`echo $KEY_PID|cut -d: -f1`
PID=`echo $KEY_PID|cut -d: -f2`

trap "kill -s TERM $PID" EXIT INT

if test -z "$FAKEROOTKEY" || test -z "$PID"; then
  echo >&2 "fakeroot: error while starting the \`faked' daemon."
  exit 1
fi

export FAKEROOTKEY
export FAKEROOT_FD_BASE
export LD_PRELOAD="$LIB"
export SBRSH_ENV_LD_PRELOAD="$REMOTE_LIB"

if test -z "$*"; then
  ${SHELL:-/bin/sh}
  RESULT=$?
else
  "$@"
  RESULT=$?
fi

exit $RESULT
