######################################################################
# ~/.zshenv
#
# Z-Shell Environment File
#
# I use this file both as a regular user and as a superuser, so
# there will be some differences depending on UID.  It also runs
# on several different systems, so there will be differences based
# on HOST or DOMAIN, too.
#
######################################################################

export ZSHENV_VERSION="$Id: .zshenv,v 1.52 2003/03/12 19:31:23 cwynne Exp $"

######################################################################
# Run SSH authentication agent.
######################################################################
_SSH_AUTH="$SSH_AUTH_SOCK$SSH2_AUTH_SOCK"

whence -p ssh-agent >& /dev/null

if [[ $? == 0 && -z $_SSH_AUTH && -o interactive ]]; then

	echo "Executing SSH Authentication Agent..."
	eval $(ssh-agent -s)

	export _AGENT_=$SSH_AGENT_PID

fi

unset _SSH_AUTH

whence -p ip2name >&/dev/null
if [[ $? == 0 && -n $SSH_CLIENT ]]; then

	client=${$(ip2name ${SSH_CLIENT%% *})%%.*}

fi

######################################################################
# Determine which machine/UID pair we have.
######################################################################
domain=${(R)$(hostname)#*.}

[[ -z $domain ]]				&& domain=$(domainname)
[[ ${UID} = 0 ]]				&& whoami="-su"

case $domain {

	(*avtokrator*)
		session="avtokrator"	;;
	(*emufarm*)
		session="emufarm"		;;
	(*mts.jhu*)
		session="mts"			;;
}

session=${session:-unknown}${whoami}

unset domain whoami

ZDOTDIR=${ZDOTDIR:=~}

######################################################################
# Primary Paths
######################################################################

  ## The core* variable exists so that reinvocations can set paths
  ## from a baseline state and not grow recursively.
[[ -z $corepath  ]] &&  corepath=( $path    )
[[ -z $corefpath ]] && corefpath=( $fpath   )
[[ -z $coreman   ]] &&   coreman=( $manpath )

export corepath coreman

  ####################################################################
  # Binary search path.
  ####################################################################
case $session {
	(emufarm*)
		path=( ~/bin ${corepath} /usr/games /sbin /usr/sbin )
		;;
	(avtokrator*)
		path=( ${corepath} /usr/local/sbin /usr/sbin /sbin 			\
			   /var/qmail/bin )
		;;
	(mts*)
		path=( ~/bin /usr/local/bin /usr/bin/X11 /usr/bin /bin		\
			   /usr/ucb /etc /usr/etc /usr/lib /sbin /usr/sbin )
		;;
}

[[ $LOGNAME == "slist" ]] && path=( ~/.bin $path )

  ####################################################################
  # Documentation search path.
  ####################################################################
case $session {
	(emufarm*)
		manpath=( ~/man /usr/local/man /usr/man /usr/X11R6/man )
		;;
	(avtokrator*)
		manpath=( cwynne/doc/man $coreman /var/qmail/man )
		;;
}

  ####################################################################
  # Shell function search path.
  ####################################################################
fpath=( $ZDOTDIR/lib/zsh/func $corefpath )

export FPATH MANPATH PATH

  ####################################################################
  # Miscellaneous
  ####################################################################

  ## GNU locate databse.
case $session {
	(emufarm*)
		export LOCATE_PATH=/var/state/misc/locatedb	;;
}

  ## Assorted program library search paths.
[[ -d ~/lib/perl   ]]	&& export PERL5LIB=~/lib/perl
[[ -d ~/lib/matlab ]]	&& export MATLABPATH=~/lib/matlab
[[ -d ~/CVS		   ]]	&& export CVSROOT=~/CVS
[[ -d /usr/X11R6/lib/X11/xmcd ]] 									\
						&& export XMCD_LIBDIR=/usr/X11R6/lib/X11/xmcd
whence -p niscat >&/dev/null										\
						&& export NIS_PATH="org_dir.$:groups_dir.$:$"

######################################################################
# Mail checking
######################################################################
if [[ -z $MAIL ]]; then

	if	 [[ -d /var/spool/mail || -h /var/spool/mail ]]
	then
		MAIL=/var/spool/mail/${LOGNAME}
	elif [[ -d /var/mail || -h /var/mail ]]
	then
		MAIL=/var/mail/${LOGNAME}
	fi

	export MAIL

fi

[[ -d ~/mail/conf ]] && export MAILCONF=~/mail/conf

mailpath=()

case $session {
	(avtokrator)
		setopt nullglob

		INBOX=~/mail/INBOX

		MAIL=${INBOX}/
		MAILCHECK=10

		neue="Es gibt neue Mail in"

		for dir in ~/mail/[^.]*(/)
		do
			[[ -d $dir/new ]] && 									\
				mailpath=( $mailpath "$dir?$neue +$(basename $dir)" )
		done

		unset    neue
		unsetopt nullglob

		export   INBOX MAIL MAILCHECK MAILPATH;;
}

######################################################################
# Shell behavior
######################################################################
NULLCMD=:
READNULLCMD=/bin/cat

TEMPDIR=${TMPDIR:=/tmp/cwynne}

TRASHDIR=~/.trash
STOPFILE=${TRASHDIR}/.STOP

WATCH=duvall:jlouder:cwynne
WATCHFMT="%n has %a %l from %M at %T."

export NULLCMD READNULLCMD TEMPDIR TMPDIR TRASHDIR STOPFILE
export WATCH WATCHFMT

  ####################################################################
  # Shell History
  ####################################################################
HISTFILE=~/.zshist
HISTSIZE=1000
SAVEHIST=1000
REPORTTIME=50

export HISTFILE HISTSIZE SAVEHIST REPORTTIME

[[ ${TERM:-unknown} = emacs ]] && unset HISTFILE

######################################################################
# Viewing, Editing, and Printing
######################################################################

  ## Choose a vi editor.
whence -p vim >& /dev/null
if [[ $? == 0 ]]
then
	EDITOR=vim
	VISUAL=vim
else
	EDITOR=vi
	VISUAL=vi
fi

LESS=-CMXes
LESSBINFMT="*d"
LESSCHARSET=latin1

PAGER=less

PARINIT="rT4bgqR B=.?_A_a Q=_s>|"

case $session {
	(mts*)
		export LPDEST=paris
		export PRINTER=paris	;;
	(avtokrator*)
		export PRINTER=dj		;;
}

export EDITOR VISUAL LESS LESBINFMT LESSCHARSET PAGER PARINIT

######################################################################
# Specific program initializations
######################################################################

  ####################################################################
  # Palm Pilot maintenance
  ####################################################################
#PILOTRATE=115200

#export PILOTRATE

  ####################################################################
  # Web apps
  ####################################################################
WWW_HOME="http://www.avtokrator.org/cwynne/"

# case $session {
#	  (avtokrator*)
#		http_proxy="http://iulius.avtokrator.org:8888/" ;;
# }

export WWW_HOME # http_proxy

  ####################################################################
  # Newsreading
  ####################################################################
case $session {
	(mts)
		DISTRIBUTION="world"
		ORGANIZATION="Math Sciences, Johns Hopkins Univ."
		;;
	(avtokrator)
		DISTRIBUTION="world"
		ORGANIZATION="Big Goddamn Nazi Rocket Company"
		NNTPSERVER="news.qwest.net"

		export NNTPSERVER
		;;
}

export DISTRIBUTION ORGANIZATION

  ####################################################################
  # (La)TeX
  ####################################################################
MYTEX=~/lib/tex

case $session {
	(avtokrator|mts)
		TEXINPUTS=.:${MYTEX}//:
		TEXFORMATS=.:${MYTEX}/formats//:
		TEXFONTS=.:${MYTEX}//:/opt/teTeX/var/tmp/texfonts//:
		TEXPKS=${TEXFONTS}

		export TEXINPUTS TEXFORMATS TEXFONTS TEXPKS
		;;
	(emufarm)
		TEX=/usr/lib/texmf/tex

		TEXINPUTS=.:${MYTEX}//:${TEX}/tex//:
		TEXFORMATS=.:${TEX}/formats//:${MYTEX}/formats//:
		TEXFONTS=.:${TEX}/fonts/tfm//:${MYTEX}//:
		TEXPKS=${TEX}/fonts/pk//:
		TEXPOOL=${TEX}

		export TEX MYTEX TEXINPUTS TEXFORMATS TEXFONTS TEXPKS
		export TEXPOOL MFINPUTS VFFONTS
		;;
}
		  
######################################################################
# vim:noet:tw=0:ts=4:sw=4
######################################################################