From 95f51b9f412b52f4196bc1615871c4b358feb7e1 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Fri, 19 Jul 2024 11:03:35 +0500 Subject: [PATCH 1/2] Fixed auto-mounting of the disk on which PortProton is located --- data_from_portwine/scripts/functions_helper | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index d7cb1041..90a73a94 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1259,15 +1259,17 @@ check_dirs_and_files_in_pfx () { then try_force_link_dir "${WINEPREFIX}/drive_c/users/steamuser/AppData/Local" "${WINEPREFIX}/drive_c/users/steamuser/Local Settings/Application Data" fi - find "${WINEPREFIX}/dosdevices" -xtype l -maxdepth 1 2>/dev/null -exec rm {} \; - rm -f "${WINEPREFIX}/dosdevices/"*:: DRIVES=(d e f g i j k l m n o p q r s t u v w x y) DEF_MOUNT_DIRS=('/media' "/media/$USER" '/mnt' '/run/media' "/run/media/$USER") MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -type d 2>/dev/null | sort -u)) + rm -fv "${WINEPREFIX}/dosdevices/"*:: + for drive in "${DRIVES[@]}"; do + rm -fv "${WINEPREFIX}/dosdevices/${drive}:" 2>/dev/null + done for drive_dir in "${MOUNT_DIRS[@]}" ; do if [[ ! "${DEF_MOUNT_DIRS[@]}" =~ "$drive_dir" ]] \ - && ! realpath "${WINEPREFIX}/dosdevices"/*: | grep "$drive_dir" &>/dev/null ; then + && ! realpath "${WINEPREFIX}/dosdevices"/*: | grep -w "$drive_dir$" &>/dev/null ; then drive_num=0 while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:" From 9440a0d900b75e903a69ea3e9b3faeb4d8676469 Mon Sep 17 00:00:00 2001 From: Boris Yumankulov Date: Sun, 21 Jul 2024 22:43:07 +0500 Subject: [PATCH 2/2] Finally fixed duplicates of sd cards and flash drives (SteamDeck) --- data_from_portwine/scripts/functions_helper | 47 ++++++++++++++------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/data_from_portwine/scripts/functions_helper b/data_from_portwine/scripts/functions_helper index 90a73a94..1e2eadff 100755 --- a/data_from_portwine/scripts/functions_helper +++ b/data_from_portwine/scripts/functions_helper @@ -1260,26 +1260,41 @@ check_dirs_and_files_in_pfx () { fi DRIVES=(d e f g i j k l m n o p q r s t u v w x y) - DEF_MOUNT_DIRS=('/media' "/media/$USER" '/mnt' '/run/media' "/run/media/$USER") - MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -type d 2>/dev/null | sort -u)) + DEF_MOUNT_DIRS=('/media' '/mnt' '/run/media') + MOUNT_DIRS=($(find "${DEF_MOUNT_DIRS[@]}" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sort -u)) + + rm -f "${WINEPREFIX}/dosdevices/com"* + rm -f "${WINEPREFIX}/dosdevices/"*:: - rm -fv "${WINEPREFIX}/dosdevices/"*:: for drive in "${DRIVES[@]}"; do - rm -fv "${WINEPREFIX}/dosdevices/${drive}:" 2>/dev/null + rm -f "${WINEPREFIX}/dosdevices/${drive}:" done + for drive_dir in "${MOUNT_DIRS[@]}" ; do - if [[ ! "${DEF_MOUNT_DIRS[@]}" =~ "$drive_dir" ]] \ - && ! realpath "${WINEPREFIX}/dosdevices"/*: | grep -w "$drive_dir$" &>/dev/null ; then - drive_num=0 - while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do - drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:" - if [ ! -d "$drive_path" ] ; then - ln -sf "$drive_dir" "$drive_path" - break - else - ((drive_num++)) - fi - done + if mountpoint -q "$drive_dir" ; then + if ! realpath "${WINEPREFIX}/dosdevices"/*: | grep -w "$drive_dir$" &>/dev/null ; then + drive_num=0 + while [[ "$drive_num" -lt "${#DRIVES[@]}" ]] ; do + drive_path="${WINEPREFIX}/dosdevices/${DRIVES[$drive_num]}:" + mount_point=$(df -P "$drive_dir" | awk 'NR==2 {print $1}') + mount_name=$(lsblk -no pkname "$mount_point" 2>/dev/null) + + if [[ ! -L "$drive_path" ]] ; then + if [[ $(cat "/sys/class/block/$mount_name/removable") != "1" ]] 2>/dev/null ; then + if [[ ! $(echo "$mount_point" | grep "mmc") ]] 2>/dev/null ; then + ln -sf "$drive_dir" "$drive_path" + break + else + ((drive_num++)) + fi + else + ((drive_num++)) + fi + else + ((drive_num++)) + fi + done + fi fi done }