Skip to contentSkip to conversation

introduce format char 'k' for kernel-name

udev Kay Sievers 1 participant 1 message Dec 20, 2003

lore
Share & tools
lore
#0 lore raw

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
diff -Nru a/namedev.c b/namedev.c
@@ -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
diff -Nru a/udev.h b/udev.h
@@ -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];
 
 };