#! /usr/bin/python

import optparse
import sys
import pwd
import grp
import os

p = optparse.OptionParser()
p.add_option("-u", "--user", default="root")
p.add_option("-g", "--group", default=None)

for i, arg in enumerate(sys.argv):
    if arg == "--":
        break
else:
    sys.exit(1)

opts, args = p.parse_args(sys.argv[:i])
args = sys.argv[i+1:]

if not opts.group:
    opts.group = grp.getgrgid(pwd.getpwnam(opts.user).pw_gid).gr_name

uid = pwd.getpwnam(opts.user).pw_uid
gid = grp.getgrnam(opts.group).gr_gid

env = os.environ.copy()

env["FAKEROOTUID"] = env["FAKEROOTEUID"] = env["FAKEROOTSUID"] = env["FAKEROOTFUID"] = str(uid)
env["FAKEROOTGID"] = env["FAKEROOTEGID"] = env["FAKEROOTSGID"] = env["FAKEROOTFGID"] = str(gid)

if "FAKECHROOT_BASE_ORIG" in env:
    os.chroot(env["FAKECHROOT_BASE_ORIG"])
    env["FAKECHROOT_BASE"] = env["FAKECHROOT_BASE_ORIG"]
    del env["FAKECHROOT_BASE_ORIG"]

if "FAKECHROOT_CMD_ORIG" in env:
    del env["FAKECHROOT_CMD_ORIG"]

sys.stdout.flush()
os.execvpe(args[0], args, env)
