# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).

PATH="/usr/local/bin:/usr/bin:/bin"
[ "$TERM" ] || TERM="vt100"	# Basic terminal capab. For screen etc.

# Add /sbin & co to $PATH for the root user
[ "$HOME" != "ROOTHOME" ] || PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin

# Set the prompt for bash and ash (no other shells known to be in use here)
[ -z "$PS1" ] || PS1='\u@\h:\w\$ '

# Use the EDITOR not being set as a trigger to call resize later on
FIRSTTIMESETUP=0
if [ -z "$EDITOR" ] ; then
	FIRSTTIMESETUP=1
fi

if [ -d /etc/profile.d ]; then
	for i in /etc/profile.d/*.sh; do
		if [ -f $i -a -r $i ]; then
			. $i
		fi
	done
	unset i
fi

if [ -t 0 -a $# -eq 0 ]; then
	if [ ! -x @BINDIR@/resize ] ; then
		if [ -n "$BASH_VERSION" ] ; then
# Optimized resize funciton for bash
resize() {
	local x y
	IFS='[;' read -t 2 -p $(printf '\e7\e[r\e[999;999H\e[6n\e8') -sd R _ y x _
	[ -n "$y" ] && \
	echo -e "COLUMNS=$x;\nLINES=$y;\nexport COLUMNS LINES;" && \
	stty cols $x rows $y
}
		else
# Portable resize function for ash/bash/dash/ksh
# with subshell to avoid local variables
resize() {
	(o=$(stty -g)
	stty -echo raw min 0 time 2
	printf '\0337\033[r\033[999;999H\033[6n\0338'
	if echo R | read -d R x 2> /dev/null; then
		IFS='[;R' read -t 2 -d R -r z y x _
	else
		IFS='[;R' read -r _ y x _
	fi
	stty "$o"
	[ -z "$y" ] && y=${z##*[}&&x=${y##*;}&&y=${y%%;*}
	[ -n "$y" ] && \
	echo "COLUMNS=$x;"&&echo "LINES=$y;"&&echo "export COLUMNS LINES;"&& \
	stty cols $x rows $y)
}
		fi
	fi
	# only do this for /dev/tty[A-z] which are typically
	# serial ports
	if [ $FIRSTTIMESETUP -eq 1 -a $SHLVL -eq 1 ] ; then
		case $(tty 2>/dev/null) in
			/dev/tty[A-z]*) resize >/dev/null;;
		esac
	fi
fi

if [ -z "$EDITOR" ]; then
	EDITOR="vi"			# needed for packages like cron, git-commit
fi

export PATH PS1 OPIEDIR QPEDIR QTDIR EDITOR TERM

umask 022
