#!/usr/local/bin/cbsd
#v10.1.3
globalconf="${CIX_DISTDIR}/cbsd.conf";
CIXARG=""
CIXOPTARG="jname display"
MYDESC="Show user list"
ADDHELP="display= list by comma for column. Default: login\n\
full display: login,password,uid,gid,gecos,home,shell\n"

. ${subrdir}/nc.subr
. ${tools}
cixinit

[ -z "${display}" ] && display="login"

#defines
noname=0
d_login=0
d_password=0
d_uid=0
d_gid=0
d_gecos=0
d_home=0
d_shell=0

IFS=","
for i in ${display}; do
	export d_$i=1
done
IFS=" "

readconf ${platform}-userlist.conf

check_jaildir()
{
	[ -f ${data}/etc/master.passwd -a -f ${data}/etc/passwd -a -f ${data}/etc/group ] && return 0
	return 1
}

ignore_user()
{
	[ -z "${1}" ] && return 1
	local IFS=" " i=

	for i in ${IGNORE_USERS}; do
		[ "${i}" = "${1}" ] && return 1
	done

	return 0
}

show_user()
{
	local IFS=","
	local _out=
	local _showme= _val= i=

	for i in ${display}; do
		_showme=0
		eval _showme=\$d_$i

		[ ${_showme} -eq 0 ] && continue
		eval _val=\$$i

		if [ -z "${_out}" ]; then
			_out="${_val}"
		else
			_out="${_out}|${_val}"
		fi
	done

	echo "${_out}"
}

## MAIN
if [ -z "${jname}" ]; then
	data=
	exec_cmd=
else
	. ${subrdir}/rcconf.subr
	[ $? -eq 1 ] &&  err 1 "${N1_COLOR}No such jail: ${N2_COLOR}${jname}${N0_COLOR}"
	exec_cmd="${JEXEC_CMD} ${jid}"
	check_jaildir

	if [ $? -eq 1 ]; then
		echo "bad data dir"
		exit 1
	fi
fi

IFS=":"
${GREP_CMD} -v ^# ${data}/etc/passwd | while read login password uid gid gecos home shell; do
	ignore_user ${login}
	skip=$?
	[ $skip -eq 1 ] && continue
	show_user
done

exit 0
