#
# Their setup.sh script sources this file.
+# Copyright (C) 2009-2013 Simon Ruderich
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
# csh gives the error "Unknown colorls variable `su'." when used with newer
# options supported by Zsh or GNU ls.
unset LS_COLORS
-# Check if the given program is installed. Returns 0 if it exists, 1
-# otherwise; so it can be used in if.
+# Check if the given program is installed. `type` is portable, `which` is not.
installed() {
- [ x`which $1 2>&1 | cut -c 1` = x/ ] || return 1
+ type "$1" >/dev/null 2>&1
+}
+# Get the path of the given program. Thanks to Gilles on [1] (read on
+# 2013-03-10) for the PATH-walking idea. `which` is not portable and `type`
+# has no well-formed output format.
+#
+# [1]: http://unix.stackexchange.com/questions/4988/how-do-i-test-to-see-if-an-application-exists-in-path/4991
+installed_path() {
+ test -z "$1" && return 1
+
+ # Keep IFS change local.
+ (
+ IFS=:
+ # Walk PATH.
+ for directory in $PATH; do
+ if test -x "$directory/$1"; then
+ echo "$directory/$1"
+ return 0
+ fi
+ done
+
+ return 1
+ )
}
# Print the current OS. The following OS are supported at the moment: