chiark / gitweb /
path_id: fix invalid character class
[elogind.git] / extras / path_id
index c7f5068..44fc482 100755 (executable)
@@ -4,15 +4,19 @@
 # for the udev persistent disk device naming scheme
 #
 # Copyright (C) 2005 SUSE Linux Products GmbH
-# Licensed under the GPL v2.
+# Author:
+#      Hannes Reinecke <hare@suse.de>
+#
+#      This program is free software; you can redistribute it and/or modify it
+#      under the terms of the GNU General Public License as published by the
+#      Free Software Foundation version 2 of the License.
 #
 # to be called from a udev rule to return the name for a symlink
-# DEVPATH=/block/sda/sda3 $0  (or similar)
-# $0 /block/sda
-# $0 /sys/block/sda
+#      DEVPATH=/block/sda/sda3 path_id
+#      path_id <devpath>
 
-# example for all:
-# for i in `find /sys/block -name dev` ;do DEVPATH="`echo $i | sed -e 's@^/sys\|/dev@@g'`" $0 ; done
+# example for all block devices on a system:
+#      for i in `find /sys/block -name dev` ;do DEVPATH="`echo $i | sed -e 's@^/sys\|/dev@@g'`" path_id ; done
 
 # examples:
 # SCSI cdrom
@@ -231,6 +235,11 @@ handle_block_scsi () {
                adapter="`echo $controller_dev |  sed -e 's@/[^/]\{1,\}$@@;s@^.*/@@;s@^.*:@@'`"
                bus="gc"
                ;;
+               # PARISC devices
+               *parisc*)
+               adapter="${controler_dev##*/}"
+               bus=parisc;
+               ;;
                *)
                adapter="${controller_dev##*/}"
                bus="pci"
@@ -266,7 +275,7 @@ handle_block_usb_storage () {
        # usb-storage devs have a serial number, hopefully unique
        serial=
        if [ -f $controller_dev/../serial ] ; then
-               serial="`sed -e 's@^[ -]\{1,\}\|[ -]\{1,\}$@@g;s@[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_0123456789]@@g' < $controller_dev/../serial`"
+               serial="`sed -e 's@^[ -]\{1,\}\|[ -]\{1,\}$@@g;s@[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789-]@@g' < $controller_dev/../serial`"
                : serial XXX_${serial}_XXX
                d="usb-$serial"
                serial="`echo $serial | sed -e 's@[ 0]\{1,\}@@g'`"
@@ -276,10 +285,10 @@ handle_block_usb_storage () {
                # has eventually binary junk in vpd
                identifier=
                if [ -f $controller_dev/../product ] ; then
-               product="`sed -e 's@^[ -]\{1,\}\|[ -]\{1,\}$@@g;s@[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_0123456789]@@g' < $controller_dev/../product`"
+               product="`sed -e 's@^[ -]\{1,\}\|[ -]\{1,\}$@@g;s@[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789-]@@g' < $controller_dev/../product`"
                fi
                if [ -f $controller_dev/../manufacturer ] ; then
-               manufacturer="`sed -e 's@^[ -]\{1,\}\|[ -]\{1,\}$@@g;s@[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_0123456789]@@g' < $controller_dev/../manufacturer`"
+               manufacturer="`sed -e 's@^[ -]\{1,\}\|[ -]\{1,\}$@@g;s@[^abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_0123456789-]@@g' < $controller_dev/../manufacturer`"
                fi
                if [ -z "$product" -o -z "$manufacturer" ] ; then
                        read idvendor < $controller_dev/../idVendor