_bash_profile_addpath() calling syntax is now in getopts style
[nethome.git] / .bashrc
diff --git a/.bashrc b/.bashrc
index 325758b..6f7a9c9 100644 (file)
--- a/.bashrc
+++ b/.bashrc
@@ -3,26 +3,40 @@ if [ -z "$_home_short_dotbashrc" ];then
 
 if [ -f /etc/bashrc ];then source /etc/bashrc;fi
 
-function _bash_profile_addpath # variable,dirpathname
+function _bash_profile_addpath # <variablename>,<dirpathname>
 {
-       if [ '!' -d "$2" ];then return;fi
-       if [ -n "$3" -o -z "`eval "echo \\${$1}"`" ];then
-               eval "$1='$2'"
+       _OPTIND="$OPTIND"
+       _opt_f=0;_opt_s=0
+       OPTIND=1;while getopts fs got;do
+               case "$got" in
+                       [fs]) eval "_opt_$got=1" ;;
+                       *) exit 1 ;;
+                       esac
+               done
+       eval "_varname=\"\$$[$OPTIND+0]\""
+       eval "_dirpathname=\"\$$[$OPTIND+1]\""
+       if [ $_opt_f = 0 -a '!' -d "$_dirpathname" ];then return;fi
+       if [ $_opt_s = 1 -o -z "`eval "echo \\${$_varname}"`" ];then
+               eval "$_varname='$_dirpathname'"
        else
                # we want to override any original directories, place dirpathname first!
-               eval "$1=\"$2:\${$1}\""
+               eval "$_varname=\"$_dirpathname:\${$_varname}\""
        fi
-       export "$1"
+       export "$_varname"
+       unset _varname _dirpathname _opt_f _opt_s
+       OPTIND="$_OPTIND";unset _OPTIND
 }
 
-_bash_profile_addpath PATH            "$HOME/bin"
-_bash_profile_addpath PATH            "$HOME/sbin"
-_bash_profile_addpath LD_LIBRARY_PATH "$HOME/lib"
-_bash_profile_addpath MANPATH         "$HOME/man"
+_bash_profile_addpath -f PATH            "$HOME/bin"
+_bash_profile_addpath -f PATH            "$HOME/sbin"
+_bash_profile_addpath -f LD_LIBRARY_PATH "$HOME/lib"
+_bash_profile_addpath -f MANPATH         "$HOME/man"
 
-_bash_profile_addpath CVSROOT         "$HOME/cvs" single
-_bash_profile_addpath CVSROOT         "$HOME/pserver/cvs" single
+_bash_profile_addpath -f -s CVSROOT "short@vellum.cz:/home/short/pserver/cvs"  # default
+_bash_profile_addpath    -s CVSROOT "$HOME/pserver/cvs"
+_bash_profile_addpath    -s CVSROOT "$HOME/cvs"
 
+mkdir -p $HOME/lib/perl5       # otherwise CPAN will install to "$HOME/lib/site_perl" etc.
 for _perldir in $(eval "echo $HOME/lib/perl5{,/site_perl}$(
        for perlvar in version archname;do
                echo -n '{,/'
@@ -30,7 +44,7 @@ for _perldir in $(eval "echo $HOME/lib/perl5{,/site_perl}$(
                echo -n '}'
                done
        )");do
-       _bash_profile_addpath PERLLIB "$_perldir"
+       _bash_profile_addpath -f PERLLIB "$_perldir"
        done
 unset _perldir
 
@@ -59,7 +73,7 @@ export IGNOREEOF=10
 export TMOUT=900
 export EDITOR='vim'
 export LC_CTYPE=cs_CZ.ISO-8859-2
-export PERL_MM_OPT="PREFIX=$HOME"
+export PERL_MM_OPT="PERL=$HOME/bin/perlilib PREFIX=$HOME"
 export WWW_HOME="file:///home/short/.bookmarks.html"
 export GREP_OPTIONS="--binary-files=without-match --directories=skip"
 [ -n "$PS1" ] && export PS1="`echo -en '\017'`$PS1"    # set only in interactive sessions