X-Git-Url: https://feistymeow.org/gitweb/?a=blobdiff_plain;f=scripts%2Fcore%2Ffunctions.sh;h=c1c3c8b6356d78000badcb52ee9389194d7a603a;hb=6fd0c83fb2f5fed78bc0014f912e77a0963bb962;hp=553e100f802d59dd89b4dcdc7642123a7a69307d;hpb=80c26125f4317df8d5ace57641b196a5e51913c1;p=feisty_meow.git diff --git a/scripts/core/functions.sh b/scripts/core/functions.sh index 553e100f..c1c3c8b6 100644 --- a/scripts/core/functions.sh +++ b/scripts/core/functions.sh @@ -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,23 +472,38 @@ 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")" + 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. - 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")" + local saw_final_result=0 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/.*=> //')" + 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 - # 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 }