introduce format char 'k' for kernel-name
Attached is a patch that introduces the format char 'k' to be replaced with the kernel name. I like to have it in a callout script.
I've moved the build_kernel_name() back to namedev_name_device() since we don't expect it growing cause of 'sdaj' :)
thanks,
Kay
namedev.c +15 -12
@@ -185,17 +185,6 @@return mode; } -static void build_kernel_number (struct sysfs_class_device *class_dev,struct udevice *udev) -{ -char *dig; - - dig = class_dev->name +strlen (class_dev->name); -while (isdigit (*(dig-1 ))) - dig--; -strfieldcpy (udev->kernel_number, dig); -dbg ("kernel_number='%s'" , udev->kernel_number); -} -static void apply_format (struct udevice *udev,unsigned char *string) {char name[NAME_SIZE ];
@@ -229,6 +218,12 @@strcat (pos, udev->bus_id);dbg ("substitute bus_id '%s'" , udev->bus_id);break ; +case 'k' : +if (strlen (udev->kernel_name) ==0 ) +break ; +strcat (pos, udev->kernel_name); +dbg ("substitute kernel name '%s'" , udev->kernel_name); +break ;case 'n' :if (strlen (udev->kernel_number) ==0 )break ;
@@ -586,6 +581,7 @@struct sysfs_class_device *class_dev_parent =NULL ;int retval =0 ;struct perm_device *perm; +char *pos; udev->mode =0 ;
@@ -622,7 +618,14 @@dbg ("class_dev->name = '%s'" , class_dev->name); } -build_kernel_number (class_dev, udev); +strfieldcpy (udev->kernel_name, class_dev->name); + +/* get kernel number */ + pos = class_dev->name +strlen (class_dev->name); +while (isdigit (*(pos-1 ))) + pos--; +strfieldcpy (udev->kernel_number, pos); +dbg ("kernel_number='%s'" , udev->kernel_number);/* rules are looked at in priority order */ retval =do_callout (class_dev, udev, sysfs_device);
udev.h +1 -0
@@ -70,6 +70,7 @@unsigned char bus_id[SYSFS_NAME_LEN ];unsigned char callout_value[NAME_SIZE ];unsigned char kernel_number[NAME_SIZE ]; +unsigned char kernel_name[NAME_SIZE ]; };