#!/usr/local/bin/cbsd
#v11.0.0
globalconf="${distdir}/cbsd.conf"
CBSDMODULE="bsdconf"
MYARG=""
MYOPTARG="jname"
MYDESC="cbsd pw wrapper"
ADDHELP="jname= work in with jail\n"
EXTHELP="modules/bsdconf.d"

. ${subrdir}/nc.subr
. ${cbsdinit}

. ${system}

#defines
_MYDIR=$( /usr/bin/dirname `${REALPATH_CMD} $0` )

[ -n "${jname}" ] && shift # skip for jname

if [ -n "${fromfile}" ]; then
	shift
	[ -r "${fromfile}" ] && . ${fromfile}
fi

# temp workaround for sh remove quotes. need for rewrite this trash
cmd=""
maxarg=$#

while [ $maxarg -ne 0 ]; do
	part=
	part="$1"
	p1=
	p2=
	shift

	p1=${part%% *}
	p2=${part##* }

	if [ "${p1}" = "${p2}" ]; then
		cmd="${cmd} ${part}"
	else
		cmd="${cmd} \"${part}\""
	fi
	maxarg=$(( maxarg - 1 ))
done

[ -z "${cmd}" -a -z "${fromfile}" ] && err 1 "${N1_COLOR}Empty command${N0_COLOR}"

## MAIN ##
if [ -n "${jname}" ]; then
	. ${subrdir}/rcconf.subr
	[ $? -eq 1 ] && err 1 "${N1_COLOR}No such jail: ${N2_COLOR}${jname}${N0_COLOR}"

	[ $baserw -eq 1 ] && path=$data

	if [ ${jid} -eq 0 ]; then
		set -e
			. ${_MYDIR}/bsdconf.subr
		set +e
		. ${subrdir}/universe.subr
		readconf buildworld.conf
		init_target_arch
		init_srcdir
		init_basedir
		init_kerneldir
		prepare_jail
	fi

	if [ "${emulator}" != "jail" -a -n "${emulator}" -a "${emulator}" != "bhyve" ]; then
		. ${subrdir}/emulator.subr
		init_usermode_emul
		CHROOT_EXEC="/usr/sbin/chroot ${path} /bin/${emulator}"
	else
		CHROOT_EXEC="/usr/sbin/chroot ${path}"
	fi

${CHROOT_EXEC} /bin/sh <<EOF
${PW_CMD} ${cmd}
EOF
else
	data=""
	${PW_CMD} ${cmd}
fi

