# $Id: cdd-actions 431 2006-10-23 06:11:32Z tille $
#
# Backend independant functions for cdd package
#
# For error codes check in /usr/include/sysexits.h

# CHECK Functions

# checks if CDD $1 exists as a CDD
checkCDD() {
	RET=0
	CDD=$1
	if [ $# -ne 1 ]; then
		RET=64 # EX_USAGE
	elif ! [ -d ${CONFBASE}/`toLower ${CDD}` ]; then
		RET=67 # EX_NOUSER
	fi
	return ${RET}
}

# GET Functions

# echos a blank-space separated list of CDDs registered into CDD subsystem
getCDDList() {
	# print out dir in CONFBASE and stript last space added by printf
	find ${CONFBASE} -mindepth 1 -maxdepth 1 -not -name CVS -type d -printf "%f " | sed s/.$/\\n/g
}

# echoes a list of DBBACKEND for CDD present in the current system
getBackendList() {
	find ${SHAREDIR} -mindepth 1 -maxdepth 1 \
		-not -name CVS -and -not -name menu \
		-type d -printf "%f " | sed s/.$/\\n/g
}

# is user registered in at least one CDD?
# it's a kludgy way :(, run a subshell and iterate on every registered CDD
# checking if a user covers a Role in that CDD.
isUserRegistered() {
	RET=1 # return false
	CDDUSER=$1

	for CDD in `getCDDList`; do
		# Run a subshell as a environment sandbox
		(   test -f ${CONFBASE}/${CDD}/${CDD}.conf &&
				. ${CONFBASE}/${CDD}/${CDD}.conf
			. ${SHAREDIR}/${DBBACKEND}/cdd-actions
			checkUserInCDD ${CDD} ${CDDUSER} && exit 0
		) && RET=0 && break 
	done
	return ${RET}
}

