diff options
| author | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-09 13:29:24 +0900 |
|---|---|---|
| committer | TheSiahxyz <164138827+TheSiahxyz@users.noreply.github.com> | 2026-04-09 13:29:24 +0900 |
| commit | 72dac44299e98117eaeeb589a8a591897e9045f9 (patch) | |
| tree | f9b500ae5e2ce7e020c06417ac53a2dd6fc464ba /ar | |
| parent | f9935a981c06fe4acbb3763d15604c923fdbf475 (diff) | |
Diffstat (limited to 'ar')
| -rwxr-xr-x | ar/.local/bin/mounter | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/ar/.local/bin/mounter b/ar/.local/bin/mounter index e143ef6..1f71df5 100755 --- a/ar/.local/bin/mounter +++ b/ar/.local/bin/mounter @@ -14,12 +14,17 @@ escape() { echo "$@" | iconv -cf UTF-8 -t ASCII//TRANSLIT | tr -d '[:punct:]' | # Determine mount base: /mnt for internal drives, /media/$USER for external. mountbase() { local dev="$1" - # Resolve to parent disk (e.g., /dev/nvme0n1p2 -> /dev/nvme0n1). - local pkname - pkname="$(lsblk -no PKNAME "$dev" 2>/dev/null | head -1)" - [ -z "$pkname" ] && pkname="$(basename "$dev")" + # Resolve through device-mapper and partitions to the underlying disk. + local cur="$dev" + while true; do + local parent + parent="$(sudo lsblk -no PKNAME "$cur" 2>/dev/null | head -1)" + [ -z "$parent" ] && break + cur="/dev/$parent" + done local hotplug - hotplug="$(lsblk -dno HOTPLUG "/dev/$pkname" 2>/dev/null | head -1)" + hotplug="$(sudo lsblk -dno HOTPLUG "$cur" 2>/dev/null | head -1)" + printf "[DEBUG mountbase] dev=%s resolved=%s hotplug='%s'\n" "$dev" "$cur" "$hotplug" >&2 if [ "$hotplug" = "0" ]; then echo "/mnt" else @@ -53,12 +58,10 @@ attemptmount() { ntfs*) mountopts="-o uid=$(id -u),gid=$(id -g)" ;; *) mountopts="" ;; esac - if [ ! -d "$mp" ] && [ ! -d "/mnt/$mplabel" ]; then - getmount "$mp" && sudo -A mount $mountopts "$chosen" "$mp" >/dev/null 2>&1 || return 1 - elif [ -d "$mp" ] && [ ! -d "/mnt/$mplabel" ]; then + if [ -d "$mp" ]; then sudo -A mount $mountopts "$chosen" "$mp" >/dev/null 2>&1 || return 1 - elif [ -d "/mnt/$mplabel" ]; then - getmount "/mnt/$mplabel" && sudo -A mount $mountopts "$chosen" "/mnt/$mplabel" >/dev/null 2>&1 || return 1 + elif [ ! -d "$mp" ]; then + getmount "$mp" && sudo -A mount $mountopts "$chosen" "$mp" >/dev/null 2>&1 || return 1 else sudo -A mount $mountopts "$chosen" >/dev/null 2>&1 || return 1 fi |
