fixed stray apostrophes around result from spacem when no change was made by second...
[feisty_meow.git] / scripts / core / functions.sh
index 553e100f802d59dd89b4dcdc7642123a7a69307d..41533fa1eb5e267fec2bdfb7d27fb1306a8c62ad 100644 (file)
@@ -281,10 +281,12 @@ if [ -z "$skip_all" ]; then
     fi
   }
   
-  # switches from an X:/ form to an /X/path form.
+  # switches from an X:/ form to a /cygdrive/X/path form.  this is only useful
+  # for the cygwin environment currently.
   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/'
+#old:    echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/\1\/\2/'
+         echo "$1" | sed -e 's/\\/\//g' | sed -e 's/\([a-zA-Z]\):\/\(.*\)/\/cygdrive\/\1\/\2/'
   }
 
   # returns a successful value (0) if this system is debian or ubuntu.
@@ -470,21 +472,28 @@ if [ -z "$skip_all" ]; 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")"
+      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/.*=> //')"
+      fi
+
       # first we rename the file to be lower case.
-      perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$arg" &>/dev/null
-      # oops, now the name is all lower-case.  we need to make the
-      # same adjustment.
-      arg2="$(echo "$arg" | tr A-Z a-z)"
-      # we definitely wanted to adjust the case first, rather than doing all
-      # the wacky stuff this script does to the filename...  we will capture
-      # the output of the replace operaton for reporting.
-      final_name="$(bash "$FEISTY_MEOW_SCRIPTS/files/replace_spaces_with_underscores.sh" "$arg2")"
+      actual_file="$(echo $intermediate_name | sed -e "s/'\([^']*\)'/\1/")"
+      final_name="$(perl $FEISTY_MEOW_SCRIPTS/files/renlower.pl "$actual_file")"
       if [ -z "$final_name" ]; then
-        # make sure we report something, if there are no further name changes.
-        final_name="'$arg2'"
+        final_name="$intermediate_name"
+      else
+        final_name="$(echo $final_name | sed -e 's/.*=> //')"
       fi
-      # now zap the intermediate part of the name off.
-      final_name="$(echo $final_name | sed -e 's/.*=> //')"
+
       # printout the combined operation results.
       echo "'$arg' => $final_name"
     done