[explorer/disks] Support Linux without lsblk (fallback to sysfs)

This commit is contained in:
Dennis Camera 2020-02-23 23:07:40 +01:00
parent c6aba8d189
commit d3bd2669ec
1 changed files with 23 additions and 6 deletions

View File

@ -16,16 +16,33 @@ case $uname_s in
| xargs | xargs
;; ;;
Linux) Linux)
if command -v lsblk > /dev/null # list of major device numbers toexclude:
# ram disks, floppies, cdroms
# https://www.kernel.org/doc/Documentation/admin-guide/devices.txt
ign_majors='1 2 11'
if command -v lsblk >/dev/null 2>&1
then then
# exclude ram disks, floppies and cdroms lsblk -e "$(echo "$ign_majors" | tr ' ' ',')" -dno name | xargs
# https://www.kernel.org/doc/Documentation/admin-guide/devices.txt elif test -d /sys/block/
lsblk -e 1,2,11 -dno name | xargs then
# shellcheck disable=SC2012
ls -1 /sys/block/ \
| awk -v ign_majors="$(echo "$ign_majors" | tr ' ' '|')" '
{
devfile = "/sys/block/" $0 "/dev"
getline devno < devfile
close(devfile)
if (devno !~ "^(" ign_majors "):") print
}' \
| xargs
else else
printf "Don't know how to list disks for %s operating system without lsblk, if you can please submit a patch\n" "${uname_s}" >&2 echo "Don't know how to list disks on Linux without lsblk and sysfs." >&2
echo 'If you can, please submit a patch.'>&2
fi fi
;; ;;
*) *)
printf "Don't know how to list disks for %s operating system, if you can please submit a patch\n" "${uname_s}" >&2 printf "Don't know how to list disks for %s operating system.\n" "${uname_s}" >&2
printf 'If you can please submit a patch\n' >&2
;; ;;
esac esac