From: Kay Sievers Date: Sun, 9 Jul 2006 19:32:55 +0000 (+0200) Subject: path_id: prepare for new sysfs layout X-Git-Tag: 174~2234 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=c2e04d6b8b82e870c6b9ce397f5fdf9c8b4efb5a path_id: prepare for new sysfs layout --- diff --git a/extras/path_id/path_id b/extras/path_id/path_id index f9b3d5a73..825c77c3b 100644 --- a/extras/path_id/path_id +++ b/extras/path_id/path_id @@ -407,30 +407,35 @@ handle_usb () { handle_device () { full_sysfs_path="$SYSFS$DEVPATH" - if [ -L $full_sysfs_path/subsystem ]; then - # new sysfs block layout - full_sysfs_path="${full_sysfs_path%/*}" - cd "$full_sysfs_path/subsystem"; - subsys="`pwd -P`" - cd "$OPWD" - subsys="${subsys##*/}" - if [ "$subsys" = "block" ]; then - # parent is "block", it's a partition, move one up - full_sysfs_path="${full_sysfs_path%/*}" - fi - cd $full_sysfs_path - else - # old sysfs block layout - if [ ! -L $full_sysfs_path/device ] ; then - if [ -f $full_sysfs_path/range ] ; then return ; fi - full_sysfs_path="${full_sysfs_path%/*}" - : full_sysfs_path "$full_sysfs_path" - if [ ! -L $full_sysfs_path/device -o ! -f $full_sysfs_path/dev ] ; then - return + case "$DEVPATH" in + /devices/*) + # new sysfs layout + if [ -L $full_sysfs_path/subsystem ]; then + full_sysfs_path="${full_sysfs_path%/*}" + cd "$full_sysfs_path/subsystem"; + subsys="`pwd -P`" + cd "$OPWD" + subsys="${subsys##*/}" + if [ "$subsys" = "block" ]; then + # parent is "block", it's a partition, move one up + full_sysfs_path="${full_sysfs_path%/*}" + fi + cd $full_sysfs_path fi - fi - cd $full_sysfs_path/device - fi + ;; + *) + # old sysfs layout + if [ ! -L $full_sysfs_path/device ] ; then + if [ -f $full_sysfs_path/range ] ; then return ; fi + full_sysfs_path="${full_sysfs_path%/*}" + : full_sysfs_path "$full_sysfs_path" + if [ ! -L $full_sysfs_path/device -o ! -f $full_sysfs_path/dev ] ; then + return + fi + fi + cd $full_sysfs_path/device + ;; + esac full_sysfs_device_path="`pwd -P`" cd "$OPWD" D=$full_sysfs_device_path