--- vi.eselect-1.1.7.orig	2010-04-24 16:16:14.000000000 +0200
+++ vi.eselect-1.1.7	2010-04-24 16:20:02.000000000 +0200
@@ -12,13 +12,13 @@
 find_targets() {
 	local f
 	for f in \
-			"${ROOT}"/usr/bin/vim \
-			"${ROOT}"/usr/bin/nvi \
-			"${ROOT}"/usr/bin/elvis \
-			"${ROOT}"/usr/bin/vile \
-			"${ROOT}"/usr/bin/gvim \
-			"${ROOT}"/usr/bin/xvile \
-			"${ROOT}"/bin/busybox \
+			"${EROOT}"/usr/bin/vim \
+			"${EROOT}"/usr/bin/nvi \
+			"${EROOT}"/usr/bin/elvis \
+			"${EROOT}"/usr/bin/vile \
+			"${EROOT}"/usr/bin/gvim \
+			"${EROOT}"/usr/bin/xvile \
+			"${EROOT}"/bin/busybox \
 		; do
 		if [[ -f "${f}" ]] ; then
 			echo $(basename "${f}" )
@@ -28,8 +28,8 @@
 
 # try to remove the vi, ex, view and man vi symlinks
 remove_symlinks() {
-	rm -f "${ROOT}"/usr/bin/{vi,ex,view} &>/dev/null && \
-	rm -f "${ROOT}"/usr/share/man/man1/{vi,ex,view}.1{,.gz,.bz2,.lzma} &>/dev/null
+	rm -f "${EROOT}"/usr/bin/{vi,ex,view} &>/dev/null && \
+	rm -f "${EROOT}"/usr/share/man/man1/{vi,ex,view}.1{,.gz,.bz2,.lzma} &>/dev/null
 }
 
 # set a man page symlink
@@ -37,7 +37,7 @@
 	local target="${1}" link_name="${2}" x extension
 
 	for x in ".1" ".1.bz2" ".1.gz" ".1.lzma" ; do
-		if [[ -e /usr/share/man/man1/${target}${x} ]] ; then
+		if [[ -e ${EROOT}/usr/share/man/man1/${target}${x} ]] ; then
 			extension="${x}"
 			break
 		fi
@@ -49,7 +49,7 @@
 	fi
 
 	ln -s "${target}${extension}" \
-		"${ROOT}/usr/share/man/man1/${link_name}${extension}"
+		"${EROOT}/usr/share/man/man1/${link_name}${extension}"
 }
 
 # set the vi, ex, view, and man vi symlinks
@@ -62,9 +62,9 @@
 
 	local dir
 	if [[ ${target} == "busybox" ]]; then
-		dir="${ROOT}/bin"
+		dir="${EROOT}/bin"
 	else
-		dir="${ROOT}/usr/bin"
+		dir="${EROOT}/usr/bin"
 	fi
 
 	if [[ -f "${dir}/${target}" ]] ; then
@@ -76,12 +76,12 @@
 		set_man_symlink "${target}" "view"
 
 		# it's not okay if these fail
-		target=$(relative_name "${dir}/${target}" "${ROOT}/usr/bin")
-		ln -s "${target}" "${ROOT}/usr/bin/vi" \
+		target=$(relative_name "${dir}/${target}" "${EROOT}/usr/bin")
+		ln -s "${target}" "${EROOT}/usr/bin/vi" \
 			|| die "Couldn't set ${target} /usr/bin/vi symlink"
-		ln -s "${target}" "${ROOT}/usr/bin/ex" \
+		ln -s "${target}" "${EROOT}/usr/bin/ex" \
 			|| die "Couldn't set ${target} /usr/bin/ex symlink"
-		ln -s "${target}" "${ROOT}/usr/bin/view" \
+		ln -s "${target}" "${EROOT}/usr/bin/view" \
 			|| die "Couldn't set ${target} /usr/bin/view symlink"
 	else
 		die -q  "Target \"${1}\" doesn't appear to be valid!"
@@ -98,9 +98,9 @@
 	[[ -z "${@}" ]] || die -q "Too many parameters"
 
 	write_list_start "Current vi implementation:"
-	if [[ -L "${ROOT}/usr/bin/vi" ]] ; then
-		write_kv_list_entry "$(basename $(canonicalise ${ROOT}/usr/bin/vi ) )" ""
-	elif [[ -e "${ROOT}/usr/bin/vi" ]] ; then
+	if [[ -L "${EROOT}/usr/bin/vi" ]] ; then
+		write_kv_list_entry "$(basename $(canonicalise ${EROOT}/usr/bin/vi ) )" ""
+	elif [[ -e "${EROOT}/usr/bin/vi" ]] ; then
 		write_kv_list_entry "(not a symlink)" ""
 	else
 		write_kv_list_entry "(unset)" ""
@@ -120,7 +120,7 @@
 	targets=( $(find_targets ) )
 	for (( i = 0; i < ${#targets[@]}; i++ )); do
 		[[ ${targets[i]} = \
-			$(basename "$(canonicalise "${ROOT}/usr/bin/vi")") ]] \
+			$(basename "$(canonicalise "${EROOT}/usr/bin/vi")") ]] \
 			&& targets[i]=$(highlight_marker "${targets[i]}")
 	done
 	write_list_start "Available vi implementations:"
@@ -148,15 +148,15 @@
 	elif [[ -n "${2}" ]] ; then
 		die -q "Too many parameters"
 
-	elif [[ -L "${ROOT}/usr/bin/vi" ]] ; then
+	elif [[ -L "${EROOT}/usr/bin/vi" ]] ; then
 		if ! remove_symlinks ; then
 			die -q "Can't remove existing provider"
 		elif ! set_symlinks "${1}" ; then
 			die -q "Can't set new provider"
 		fi
 
-	elif [[ -e "${ROOT}/usr/bin/vi" ]] ; then
-		die -q "Sorry, ${ROOT}/usr/bin/vi confuses me"
+	elif [[ -e "${EROOT}/usr/bin/vi" ]] ; then
+		die -q "Sorry, ${EROOT}/usr/bin/vi confuses me"
 
 	else
 		set_symlinks "${1}" || die -q "Can't set a new provider"
@@ -177,11 +177,11 @@
 	[[ -z "${1}" ]] || ( [[ -z "${2}" ]] && [[ "${1}" == "--if-unset" ]] ) || \
 		die -q "Usage error"
 
-	if [[ -L "${ROOT}/usr/bin/vi" ]] ; then
+	if [[ -L "${EROOT}/usr/bin/vi" ]] ; then
 		[[ ${1} == "--if-unset" ]] && return
 		remove_symlinks || die -q "Can't remove existing link"
 	fi
-	if [[ -e "${ROOT}/usr/bin/vi" ]] ; then
+	if [[ -e "${EROOT}/usr/bin/vi" ]] ; then
 		die -q "Can't set a new provider"
 	elif ! [[ -z $(find_targets ) ]] ; then
 		set_symlinks 1 || die -q "Can't set a new provider"
