diff options
author | Kay Sievers <kay.sievers@vrfy.org> | 2007-05-29 21:23:20 +0200 |
---|---|---|
committer | Kay Sievers <kay.sievers@vrfy.org> | 2007-05-29 21:23:20 +0200 |
commit | 596714857b0c6b2779e861e4069d63f0fa27aa28 (patch) | |
tree | 6e6a6387583e269b27b595108843bc493036e408 /extras | |
parent | 97f39d487a0cf891cbd2db3d9b5a7cc93f6617b7 (diff) |
path_id: skip subsystem directory
Diffstat (limited to 'extras')
-rwxr-xr-x[-rw-r--r--] | extras/path_id/path_id | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/extras/path_id/path_id b/extras/path_id/path_id index ee26dc1f8a..57879b5a9a 100644..100755 --- a/extras/path_id/path_id +++ b/extras/path_id/path_id @@ -427,27 +427,32 @@ handle_device () { full_sysfs_path="$SYSFS$DEVPATH" case "$DEVPATH" in /devices/*) - # new sysfs layout + full_sysfs_path="${full_sysfs_path%/*}" + # skip parent device of the same subsystem 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%/*}" + if [ "$subsys" = "$TYPE" ]; then + : skip same subsystem parent + full_sysfs_path="${full_sysfs_path%/*}" fi - cd $full_sysfs_path fi + # skip subsystem directory + subsys="${full_sysfs_path##*/}" + if [ "$subsys" = "$TYPE" ]; then + : skip subsystem directory + full_sysfs_path="${full_sysfs_path%/*}" + fi + cd $full_sysfs_path ;; *) # old sysfs layout - if [ ! -L $full_sysfs_path/device ] ; then - if [ -f $full_sysfs_path/range ] ; then return ; fi + if [ ! -L $full_sysfs_path/device ]; then 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 + if [ ! -L $full_sysfs_path/device -o ! -f $full_sysfs_path/dev ]; then return fi fi @@ -456,6 +461,7 @@ handle_device () { esac full_sysfs_device_path="`pwd -P`" cd "$OPWD" + D=$full_sysfs_device_path while [ ! -z "$D" ] ; do case "$D" in |