:
#	$OpenBSD: ksh.kshrc,v 1.2 1996/12/16 03:49:50 kstailey Exp $
#
# NAME:
#	ksh.kshrc - global initialization for ksh 
#
# DESCRIPTION:
#	Each invocation of /bin/ksh processes the file pointed
#	to by $ENV (usually $HOME/.kshrc).
#	This file is intended as a global .kshrc file for the
#	Korn shell.  A user's $HOME/.kshrc file simply requires
#	the line:
#		. /etc/ksh.kshrc
#	at or near the start to pick up the defaults in this
#	file which can then be overridden as desired.
#
# SEE ALSO:
#	$HOME/.kshrc
#

# RCSid:
#	$From: ksh.kshrc,v 1.4 1992/12/05 13:14:48 sjg Exp $
#
#	@(#)Copyright (c) 1991 Simon J. Gerraty
#
#	This file is provided in the hope that it will
#	be of use.  There is absolutely NO WARRANTY.
#	Permission to copy, redistribute or otherwise
#	use this file is hereby granted provided that 
#	the above copyright notice and this notice are
#	left intact. 

case "$-" in
*i*)	# we are interactive
	# we may have su'ed so reset these
	# NOTE: SCO-UNIX doesn't have whoami,
	#	install whoami.sh
	USER=`whoami 2>/dev/null`
        USER=${USER:-`id | sed 's/^[^(]*(\([^)]*\)).*/\1/'`}
	case $UID in
	0) PS1S='# ';;
	esac
        PS1S=${PS1S:-'$ '}
	HOSTNAME=${HOSTNAME:-`uname -n`}
	HOST=${HOSTNAME%%.*}

	PROMPT="$USER:!$PS1S"
	#PROMPT="<$USER@$HOST:!>$PS1S"
	PPROMPT='$USER:$PWD:!'"$PS1S"
	#PPROMPT='<$USER@$HOST:$PWD:!>'"$PS1S"
	PS1=$PPROMPT
	# $TTY is the tty we logged in on,
	# $tty is that which we are in now (might by pty)
	tty=`tty`
	tty=`basename $tty`
        TTY=${TTY:-$tty}
	# console is the system console device
	console=`sysctl machdep.console_device | cut -d' ' -f3`
 
	set -o emacs

	alias ls='ls -CF'
	alias h='fc -l | more'
	_cd() { "cd" $*; }
	# the PD ksh is not 100% compatible
	case "$KSH_VERSION" in
	*PD*)	# PD ksh
		case "$TERM" in
		pc3|pcvt*|xterm*)
			# bind arrow keys
			bind '^[['=prefix-2
			bind '^XA'=up-history
			bind '^XB'=down-history
			bind '^XC'=forward-char
			bind '^XD'=backward-char
			;;
		esac
		;;
	*)	# real ksh ?
		[ -r $HOME/.functions ] && . $HOME/.functions
		set -o trackall
		;;
	esac
	case "$TERM" in
	sun*)
		# these are not as neat as their csh equivalents
		if [ "$tty" != "$console" ]; then
			# ilabel
			ILS='\033]L'; ILE='\033\\'
			# window title bar
			WLS='\033]l'; WLE='\033\\'
		fi
		;;
	xterm*)
		ILS='\033]1;'; ILE='\007'
		WLS='\033]2;'; WLE='\007'
                parent="`ps -ax 2>/dev/null | grep $PPID | grep -v grep`"
                case "$parent" in
		*telnet*)
                  export TERM=xterms;;
		esac
		;;
	*)	;;
	esac
	# do we want window decorations?
	if [ "$ILS" ]; then
		ilabel () { print -n "${ILS}$*${ILE}"; }
		label () { print -n "${WLS}$*${WLE}"; }

		alias stripe='label "$USER@$HOST ($tty) - $PWD"'
		alias istripe='ilabel "$USER@$HOST ($tty)"'

		wftp () { ilabel "ftp $*"; "ftp" $*; eval istripe; }
		wcd () { _cd $*; eval stripe; }
		wtelnet ()
		{
			"telnet" "$@"
			eval istripe
			eval stripe
		}
		wrlogin ()
		{
			"rlogin" "$@"
			eval istripe
			eval stripe
		}
		wsu ()
		{
			"su" "$@"
			eval istripe
			eval stripe
		}
		alias su=wsu
		alias cd=wcd
		alias ftp=wftp
		alias telnet=wtelnet
		alias rlogin=wrlogin
		eval stripe
		eval istripe
		PS1=$PROMPT
	fi
	alias quit=exit
	alias cls=clear
	alias logout=exit
	alias bye=exit
	alias p='ps -l'
	alias j=jobs
	alias o='fg %-'
	alias ls='ls -gCF'

# add your favourite aliases here
	OS=${OS:-`uname -s`}
	case $OS in
	HP-UX)
        	alias ls='ls -CF'
                ;;
	*BSD)
		alias df='df -k'
		alias du='du -k'
		;;
	esac	
	alias rsize='eval `resize`'

	case "$TERM" in
	sun*|xterm*)
		case $tty in
		tty[p-w]*)		
			case "$DISPLAY" in
			"")
				DISPLAY="`who | grep $TTY | sed -n 's/.*(\([^:)]*\)[:)].*/\1/p' | sed 's/\([a-zA-Z][^.]*\).*/\1/'`:0"
				;;
			esac
			;;
		esac
		case "$DISPLAY" in
		ozen*|:*)
			stty erase "^?"
			;;
		*)
			stty erase "^h"
			;;
		esac
		export DISPLAY
		;;
	esac

;;
*)	# non-interactive
;;
esac
# commands for both interactive and non-interactive shells

# is $1 missing from $2 (or PATH) ?
no_path () {
  eval _v="\$${2:-PATH}"
  case :$_v: in
  *:$1:*) return 1;;		# no we have it
  esac
  return 0
}
# if $1 exists and is not in path, append it
add_path () {
  [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="\$${2:-PATH}:$1"
}
# if $1 exists and is not in path, prepend it
pre_path () {
  [ -d ${1:-.} ] && no_path $* && eval ${2:-PATH}="$1:\$${2:-PATH}"
}
# if $1 is in path, remove it
del_path () {
  no_path $* || eval ${2:-PATH}=`eval echo :'$'${2:-PATH}: | 
    sed -e "s;:$1:;:;g" -e "s;^:;;" -e "s;:\$;;"`
}