#
# 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() {
- which $1 2>&1 | perl -e '$_ = <>; if (not m{^/}) { exit 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:
# - Gentoo (gentoo)
# - Mac OS X (darwin)
# - Solaris/OpenSolaris (sun)
+# - FreeBSD (freebsd)
# If an unsupported OS is used an error is printed.
os() {
if [ -f /etc/debian_version ]; then
echo darwin
elif [ x`uname` = xSunOS ]; then
echo sun
+ elif [ x`uname` = xFreeBSD ]; then
+ echo freebsd
else
echo unsupported OS! >&2
return 1