Safer eval use / handle preset systems with spaces

This commit is contained in:
icenine451 2023-05-10 14:44:51 -04:00
parent e1de037035
commit bec4b18bab

View file

@ -348,7 +348,7 @@ set_setting_value() {
else else
sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'=^s^\^'"$setting_name_to_change"'=.*^'"$setting_name_to_change"'='"$setting_value_to_change"'^' $1 sed -i '\^\['"$current_section_name"'\]^,\^\^'"$setting_name_to_change"'=^s^\^'"$setting_name_to_change"'=.*^'"$setting_name_to_change"'='"$setting_value_to_change"'^' $1
fi fi
if [[ "$4" == "retrodeck" ]]; then # If a RetroDECK setting is being changed, also write it to memory for immediate use if [[ "$4" == "retrodeck" && ("$current_section_name" == "" || "$current_section_name" == "paths" || "$current_section_name" == "options") ]]; then # If a RetroDECK setting is being changed, also write it to memory for immediate use
eval "$setting_name_to_change=$setting_value_to_change" eval "$setting_name_to_change=$setting_value_to_change"
fi fi
;; ;;
@ -663,7 +663,7 @@ build_preset_config(){
;; ;;
esac esac
done < <(eval cat "$presets_dir/$read_system_name"_presets.cfg) done < <(cat "$presets_dir/$read_system_name"_presets.cfg)
fi fi
done < <(printf '%s\n' "$preset_section") done < <(printf '%s\n' "$preset_section")
done done
@ -793,15 +793,15 @@ do
;; ;;
"add_setting_line" ) "add_setting_line" )
eval add_setting_line $3 "$setting_name" $system_name $current_section add_setting_line $3 "$setting_name" $system_name $current_section
;; ;;
"disable_setting" ) "disable_setting" )
eval disable_setting $3 "$setting_name" $system_name $current_section disable_setting $3 "$setting_name" $system_name $current_section
;; ;;
"enable_setting" ) "enable_setting" )
eval enable_setting $3 "$setting_name" $system_name $current_section enable_setting $3 "$setting_name" $system_name $current_section
;; ;;
"change" ) "change" )
@ -835,23 +835,38 @@ do
case $action in case $action in
"disable_file" ) "disable_file" )
eval disable_file "$config_file" if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
eval config_file="$config_file"
fi
disable_file "$config_file"
;; ;;
"enable_file" ) "enable_file" )
eval enable_file "$config_file" if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
eval config_file="$config_file"
fi
enable_file "$config_file"
;; ;;
"add_setting_line" ) "add_setting_line" )
eval add_setting_line "$config_file" "$setting_name" $system_name $current_section if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
eval config_file="$config_file"
fi
add_setting_line "$config_file" "$setting_name" $system_name $current_section
;; ;;
"disable_setting" ) "disable_setting" )
eval disable_setting "$config_file" "$setting_name" $system_name $current_section if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
eval config_file="$config_file"
fi
disable_setting "$config_file" "$setting_name" $system_name $current_section
;; ;;
"enable_setting" ) "enable_setting" )
eval enable_setting "$config_file" "$setting_name" $system_name $current_section if [[ "$config_file" = \$* ]]; then # If patch setting value is a reference to an internal variable name
eval config_file="$config_file"
fi
enable_setting "$config_file" "$setting_name" $system_name $current_section
;; ;;
"change" ) "change" )