+ # goes to a particular directory passed as parameter 1, and then removes all
+ # the parameters after that from that directory.
+ function push_whack_pop()
+ {
+ local dir="$1"; shift
+ pushd "$dir" &>/dev/null
+ rm -rf $* &>/dev/null
+ popd &>/dev/null
+ }
+
+ function spacem()
+ {
+ while [ $# -gt 0 ]; do
+ arg="$1"; shift
+ if [ ! -f "$arg" -a ! -d "$arg" ]; then
+ echo "failure to find a file or directory named '$arg'."
+ continue
+ fi
+
+ # first we will capture the output of the character replacement operation for reporting.
+ # this is done first since some filenames can't be properly renamed in perl (e.g. if they
+ # have pipe characters apparently).
+ intermediate_name="$(bash "$FEISTY_MEOW_SCRIPTS/files/replace_spaces_with_underscores.sh" "$arg")"
+ local saw_intermediate_result=0
+ if [ -z "$intermediate_name" ]; then
+ # make sure we report something, if there are no further name changes.
+ intermediate_name="'$arg'"
+ else
+ # now zap the first part of the name off (since original name isn't needed).
+ intermediate_name="$(echo $intermediate_name | sed -e 's/.*=> //')"
+ saw_intermediate_result=1
+ fi
+
+ # first we rename the file to be lower case.
+ actual_file="$(echo $intermediate_name | sed -e "s/'\([^']*\)'/\1/")"
+ final_name="$(perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$actual_file")"
+ local saw_final_result=0
+ if [ -z "$final_name" ]; then
+ final_name="$intermediate_name"
+ else
+ final_name="$(echo $final_name | sed -e 's/.*=> //')"
+ saw_final_result=1
+ fi
+#echo intermed=$saw_intermediate_result
+#echo final=$saw_final_result
+
+ if [[ $saw_intermediate_result != 0 || $saw_final_result != 0 ]]; then
+ # printout the combined operation results.
+ echo "'$arg' => $final_name"
+ fi
+ done
+ }
+
+ ##############
+
+# new breed of definer functions goes here. still in progress.
+
+ # defines an alias and remembers that this is a new or modified definition.
+ # if the feisty meow codebase is unloaded, then so are all the aliases that
+ # were defined.
+ function define_yeti_alias()
+ {
+# if alias exists already, save old value for restore,
+# otherwise save null value for restore,
+# have to handle unaliasing if there was no prior value of one
+# we newly defined.
+# add alias name to a list of feisty defined aliases.
+
+#hmmm: first implem, just do the alias and get that working...
+alias "${@}"
+
+
+return 0
+ }
+
+ # defines a variable within the feisty meow environment and remembers that
+ # this is a new or modified definition. if the feisty meow codebase is
+ # unloaded, then so are all the variables that were defined.
+ # this function always exports the variables it defines.
+# function define_yeti_variable()
+# {
+## if variable exists already, save old value for restore,
+## otherwise save null value for restore,
+## have to handle unsetting if there was no prior value of one
+## we newly defined.
+## add variable name to a list of feisty defined variables.
+#
+##hmmm: first implem just sets it up and exports the variable.
+## i.e., this method always exports.
+#export "${@}"
+#
+#
+#return 0
+# }
+
+ ##############
+
+ # just shows a separator line for an 80 column console, or uses the first
+ # parameter as the number of columns to expect.
+ function separator()
+ {
+ count=$1; shift
+ if [ -z "$count" ]; then
+ count=79
+ fi
+ echo
+ local i
+ for ((i=0; i < $count - 1; i++)); do
+ echo -n "="
+ done
+ echo
+ echo
+ }
+ # alias for separator.
+ function sep()
+ {
+ separator $*
+ }
+
+ ##############
+