validated calling out to logname
[feisty_meow.git] / scripts / core / functions.sh
index fc5ce4ebc677daf6270acb850cda42688c803eaf..de3c3ba2688020a4fc7240bba5ba2a6bf34800c3 100644 (file)
@@ -144,7 +144,7 @@ if [ -z "$skip_all" ]; then
   function exit_on_error()
   {
     if [ $? -ne 0 ]; then
-      echo -e "\n\naction failed: $*\n\n*** Exiting script..."
+      echo -e "\n\nan important action failed and this script will stop:\n\n$*\n\n*** Exiting script..."
       error_sound
       exit 1
     fi
@@ -154,13 +154,21 @@ if [ -z "$skip_all" ]; then
   function continue_on_error()
   {
     if [ $? -ne 0 ]; then
-      echo -e "\n\nerror occurred: $*\n\n=> Continuing script..."
+      echo -e "\n\na problem occurred, but we can continue:\n\n$*\n\n=> Continuing script..."
       error_sound
     fi
   }
 
   ##############
 
+  # accepts any number of arguments and outputs them to the feisty meow event log.
+  function log_feisty_meow_event()
+  {
+    echo -e "$(date_stringer) -- ${USER}@$(hostname): $*" >> "$FEISTY_MEOW_EVENT_LOG"
+  }
+
+  ##############
+
   # wraps secure shell with some parameters we like, most importantly to enable X forwarding.
   function ssh()
   {
@@ -452,8 +460,7 @@ if [ -z "$skip_all" ]; then
     unalias CORE_ALIASES_LOADED &>/dev/null
     unset -f function_sentinel 
     # reload feisty meow environment in current shell.
-    echo "reloading the feisty meow scripts."
-    echo
+    log_feisty_meow_event "reloading the feisty meow scripts for $USER in current shell."
     source "$FEISTY_MEOW_SCRIPTS/core/launch_feisty_meow.sh"
     # run nechung oracle to give user a new fortune.
     nechung
@@ -466,8 +473,11 @@ if [ -z "$skip_all" ]; then
   {
     local custom_user="$1"; shift
     if [ -z "$custom_user" ]; then
-      # use our default example user if there was no name provided.
-      custom_user=$(logname)
+      # default to login name if there was no name provided.
+      custom_user="$(logname)"
+        # we do intend to use logname here to get the login name and to ignore
+        # if the user has sudo root access; we don't want to provide a custom
+        # profile for root.
     fi
 
     save_terminal_title
@@ -480,11 +490,13 @@ if [ -z "$skip_all" ]; then
     fi
 
     # prevent permission foul-ups.
-#hmmm: save error output here instead of muting it.
-#hmmm: better yet actually, just don't complain on freaking cygwin, since that's where this happens
-    chown -R "$(logname):$(logname)" \
+    my_user="$USER"
+      # here we definitely want the effective user name (in USER), since
+      # we don't want, say, fred (as logname) to own all of root's loading
+      # dock stuff.
+    chown -R "$my_user:$my_user" \
         "$FEISTY_MEOW_LOADING_DOCK"/* "$FEISTY_MEOW_GENERATED_STORE"/* 2>/dev/null
-    continue_on_error "chowning to $(logname) didn't happen."
+    continue_on_error "chowning feisty meow generated directories to $my_user"
 
     regenerate >/dev/null
     pushd "$FEISTY_MEOW_LOADING_DOCK/custom" &>/dev/null
@@ -499,30 +511,28 @@ or if you're on cygwin, then try this (if apt-cyg is available):\n
     #echo "the incongruous files list is: $incongruous_files"
     # disallow a single character result, since we get "*" as result when nothing exists yet.
     if [ ${#incongruous_files} -ge 2 ]; then
-      echo "cleaning unknown older overrides..."
+      log_feisty_meow_event "cleaning unknown older overrides..."
       perl "$FEISTY_MEOW_SCRIPTS/files/safedel.pl" $incongruous_files
       continue_on_error "running safedel.  $fail_message" 
-      echo
     fi
     popd &>/dev/null
-    echo "copying custom overrides for $custom_user"
+    log_feisty_meow_event "copying custom overrides for $custom_user"
     mkdir -p "$FEISTY_MEOW_LOADING_DOCK/custom" 2>/dev/null
     perl "$FEISTY_MEOW_SCRIPTS/text/cpdiff.pl" "$FEISTY_MEOW_SCRIPTS/customize/$custom_user" "$FEISTY_MEOW_LOADING_DOCK/custom"
     continue_on_error "running cpdiff.  $fail_message"
 
     if [ -d "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" ]; then
-      echo "copying custom scripts for $custom_user"
+      log_feisty_meow_event "copying custom scripts for $custom_user"
+#hmmm: could save output to show if an error occurs.
       rsync -avz "$FEISTY_MEOW_SCRIPTS/customize/$custom_user/scripts" "$FEISTY_MEOW_LOADING_DOCK/custom/" &>/dev/null
       continue_on_error "copying customization scripts"
-#hmmm: could save output to show if an error occurs.
     fi
-    echo
     regenerate
 
     # prevent permission foul-ups, again.
-    chown -R "$(logname):$(logname)" \
+    chown -R "$my_user:$my_user" \
         "$FEISTY_MEOW_LOADING_DOCK" "$FEISTY_MEOW_GENERATED_STORE" 2>/dev/null
-    continue_on_error "chowning to $(logname) didn't happen."
+    continue_on_error "once more chowning feisty meow generated directories to $my_user"
 
     restore_terminal_title
   }
@@ -552,10 +562,9 @@ or if you're on cygwin, then try this (if apt-cyg is available):\n
     echo $(which $to_find)
   }
 
-#hmmm: improve this by not adding the link
-# if already there, or if the drive is not valid.
   function add_cygwin_drive_mounts() {
     for i in c d e f g h q z ; do
+#hmmm: improve this by not adding the link if already there, or if the drive is not valid.
       ln -s /cygdrive/$i $i
     done
   }