Don't leak temporary variables.
[profile.git] / .profile.d / PATH.bashrc
1 # $Id$
2 #
3 # Path information is stored on separate lines in XXXdirs.
4 # We extract each directory exists and add it to the appropriate PATH.
5 #
6
7 # Location of the XXXdirs files.
8 DIR=$HOME/.profile.d
9
10 # Set one path to be the same as another.
11 function copypath() {
12   newpath="$1"; shift
13   oldpath="$1"; shift
14
15   # Sanitise and export.
16   path="$(eval echo \$$oldpath)"
17   [ -z "$path" ] || eval export $newpath="$path"
18
19   unset path newpath oldpath
20 }
21
22 # Set a path from directories.
23 function makepath() {
24   newpath="$1"; shift
25   dirs="$1"; shift
26
27   # Check the file exists.
28   [ -e "$DIR/$dirs" ] || return
29
30   # Read them.
31   path=
32   for dir in $(cat "$DIR/$dirs"); do
33     [ -d "$dir" ] || continue
34
35     path="$path:$dir"
36   done
37   unset dir
38
39   # Sanitise path.
40   path=${path#:}
41   [ -z "$path" ] && return
42
43   # Export.
44   eval export $newpath="$path"
45
46   unset path newpath dirs
47 }
48
49 makepath PATH bindirs
50 makepath C_INCLUDE_PATH incdirs
51 copypath CPLUS_INCLUDE_PATH C_INCLUDE_PATH
52 makepath LD_LIBRARY_PATH libdirs
53 copypath LD_RUN_PATH LD_LIBRARY_PATH
54 makepath MANPATH mandirs
55 makepath PKG_CONFIG_PATH pkgdirs
56
57 unset dirs copypath makepath newpath