if [ ! -d "$1" ]; then mkdir -p "$1"; fi
cd "$1"
}
-
+
+ # checks the result of the last command that was run, and if it failed,
+ # then this complains and exits from bash. the function parameters are
+ # used as the message to print as a complaint.
+ function check_result()
+ {
+ if [ $? -ne 0 ]; then
+ echo -e "failed on: $*"
+ exit 1
+ fi
+ }
+
# locates a process given a search pattern to match in the process list.
function psfind() {
local PID_DUMP="$(mktemp "$TMP/zz_pidlist.XXXXXX")"
}
# switches from a /X/path form to an X:/ form. this also processes cygwin paths.
- function msys_to_dos_path() {
- # we always remove dos slashes in favor of forward slashes.
- echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\/cygdrive//' | sed -e 's/\/\([a-zA-Z]\)\/\(.*\)/\1:\/\2/'
+ function unix_to_dos_path() {
+ # we usually remove dos slashes in favor of forward slashes.
+ if [ ! -z "$SERIOUS_SLASH_TREATMENT" ]; then
+ # unless this flag is set, in which case we force dos slashes.
+ echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\/cygdrive//' | sed -e 's/\/\([a-zA-Z]\)\/\(.*\)/\1:\/\2/' | sed -e 's/\//\\/g'
+ else
+ echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\/cygdrive//' | sed -e 's/\/\([a-zA-Z]\)\/\(.*\)/\1:\/\2/'
+ fi
}
# switches from an X:/ form to an /X/path form.
- function dos_to_msys_path() {
+ function dos_to_unix_path() {
# we always remove dos slashes in favor of forward slashes.
echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/\1\/\2/'
}
-
- # su function: makes su perform a login.
- # for some OSes, this transfers the X authority information to the new login.
- function su() {
+
+ # returns a successful value (0) if this system is debian or ubuntu.
+ function debian_like() {
# decide if we think this is debian or ubuntu or a variant.
DEBIAN_LIKE=$(if [ ! -z "$(grep -i debian /etc/issue)" \
-o ! -z "$(grep -i ubuntu /etc/issue)" ]; then echo 1; else echo 0; fi)
-
if [ $DEBIAN_LIKE -eq 1 ]; then
+ # success; this is debianish.
+ return 0
+ else
+ # this seems like some other OS.
+ return 1
+ fi
+ }
+
+ # su function: makes su perform a login.
+ # for some OSes, this transfers the X authority information to the new login.
+ function su() {
+ if debian_like; then
# debian currently requires the full version which imports X authority
# information for su.
if [ -z "$wheres_nechung" ]; then
echo "The nechung oracle program cannot be found. You may want to consider"
echo "rebuilding the feisty meow applications with this command:"
- echo " bash $FEISTY_MEOW_DIR/scripts/generator/bootstrap_build.sh"
+ echo "bash $FEISTY_MEOW_SCRIPTS/generator/bootstrap_build.sh"
else
$wheres_nechung
fi
nechung
}
+ # generates a random password where the first parameter is the number of characters
+ # in the password (default 20) and the second parameter specifies whether to use
+ # special characters (1) or not (0).
+ # found function at http://legroom.net/2010/05/06/bash-random-password-generator
+ function random_password()
+ {
+ [ "$2" == "0" ] && CHAR="[:alnum:]" || CHAR="[:graph:]"
+ cat /dev/urandom | tr -cd "$CHAR" | head -c ${1:-32}
+ echo
+ }
+
+ # copies a set of custom scripts into the proper location for feisty meow
+ # to merge their functions and aliases with the standard set.
+ function recustomize()
+ {
+ user="$1"; shift
+ if [ -z "$user" ]; then
+ # use our default example user if there was no name provided.
+ user=fred
+ fi
+ if [ ! -d "$FEISTY_MEOW_DIR/customizing/$user" ]; then
+ echo "The customization folder provided for $user should be:"
+ echo " '$FEISTY_MEOW_DIR/customizing/$user'"
+ echo "but that folder does not exist. Skipping customization."
+ return 1
+ fi
+ regenerate >/dev/null
+ pushd "$FEISTY_MEOW_GENERATED/custom" &>/dev/null
+ local incongruous_files="$(bash "$FEISTY_MEOW_SCRIPTS/files/list_non_dupes.sh" "$FEISTY_MEOW_DIR/customizing/$user" "$FEISTY_MEOW_GENERATED/custom")"
+ if [ ${#incongruous_files} -ge 1 ]; then
+ echo "cleaning unknown older overrides..."
+ perl "$FEISTY_MEOW_SCRIPTS/files/safedel.pl" $incongruous_files
+ echo
+ fi
+ popd &>/dev/null
+ echo "copying custom overrides for $user"
+ mkdir "$FEISTY_MEOW_GENERATED/custom" 2>/dev/null
+ perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_DIR/customizing/$user" "$FEISTY_MEOW_GENERATED/custom"
+ regenerate
+ }
+
function function_sentinel() { return 0; }
if [ ! -z "$SHELL_DEBUG" ]; then echo function definitions end....; fi