# Only add standalone functions to this file which are easy to source anywhere.

# die:
# Prints a warning or an exit error.
# $1 = exit code, use : to not exit when printing warnings
# $@ = exit or warning messages
die()
{	ret="$1"
	shift 1
	case "$ret" in
		: ) printf %s\\n "$@" >&2; return 0 ;;
		0 ) printf %s\\n "$@" ;;
		* ) printf %s\\n "$@" >&2 ;;
	esac
	exit "$ret"
}

# exists:
# Finds executable files in the $PATH
# $@ = files
exists()
{	v=1
	while [ $# -gt 0 ]; do
		arg="$1"
		shift 1
		case "$arg" in
			''|*/ )
				:
			;;
			*/* )
				if [ -f "$arg" ] && [ -x "$arg" ]; then
					printf %s\\n "$arg"
					v=0
				fi
			;;
			* )
				p=":$PATH"
				while [ "$p" != "${p#*:}" ]; do
					p="${p#*:}"
					d="${p%%:*}/$arg"
					if [ -f "$d" ] && [ -x "$d" ]; then
						printf %s\\n "$d"
						v=0
						break
					fi
				done
			;;
		esac
	done
	return $v
}

# match:
# Compares a variable against a list of variables
# $1 = variable
# $@ = list of variables
match()
{
	var="$1"
	shift
	for string do
		case "$string" in
			"$var" ) return 0 ;;
		esac
	done
	return 1
}

# next:
# Check if the next argument starts with a dash
# $1 = arg
next () { case "$1" in -*) return 0 ;; *) return 1 ;; esac; }