- format char for CALLOUT output
Hi Greg,
here is a patch for inserting the callout output into NAME=. ID= supports the usual wildcard to compare with the output.
I've moved all wildcard matching to a function cause this was the third occurrence. Also attached is the last whitespace cleanup and debug text corrections. The callout patch depends on the whitespace patch.
CALLOUT, BUS="usb", PROGRAM="/bin/echo -n return", ID="ret*", NAME="webcam-%c-"
results in:
Nov 21 17:33:51 pim udev[20399]: get_major_minor: found major = 81, minor = 0 Nov 21 17:33:51 pim udev[20399]: exec_callout: callout to '/bin/echo -n return' Nov 21 17:33:51 pim udev[20399]: exec_callout: callout returned 'return' Nov 21 17:33:51 pim udev[20399]: get_attr: substitute callout output 'return' Nov 21 17:33:51 pim udev[20399]: udev_add_device: name = webcam-return- Nov 21 17:33:51 pim udev[20399]: create_node: mknod(/udev/webcam-return-, 020660, 81, 0)
thanks,
Kay
namedev.c renamed from udev/namedev.c +7 -10
@@ -82,9 +82,9 @@ dev->owner, dev->group, dev->mode);break ;case CALLOUT : -dbg_parse ("CALLOUT name='%s', program='%s', bus='%s', id='%s', " +dbg_parse ("CALLOUT name='%s', bus='%s', program='%s', id='%s', " "owner='%s', group='%s', mode=%#o" , - dev->name, dev->exec_program, dev->bus, dev->id, + dev->name, dev->bus, dev->exec_program, dev->id, dev->owner, dev->group, dev->mode);break ;default :
@@ -270,8 +270,8 @@strfieldcpy (dev.name, temp3);dbg_parse ("LABEL name='%s', bus='%s', " -"sysfs_file='%s', sysfs_value='%s'" , - dev.name, dev.bus, dev.sysfs_file, +"sysfs_file='%s', sysfs_value='%s'" , + dev.name, dev.bus, dev.sysfs_file, dev.sysfs_value); }
@@ -416,7 +416,6 @@/* loop through the whole file */ while (1 ) { -/* get a line */ temp =fgets (line,sizeof (line), fd);if (temp ==NULL )break ;
@@ -509,7 +508,7 @@break ; }if (args[i]) { -dbg ("to many args - %d" , i); +dbg ("too many args - %d" , i); args[i] =NULL ; } retval =execve (args[0 ], args, main_envp);
@@ -869,6 +868,7 @@char *pos =strchr (udev->name,'%' );char *dig;char name[NAME_SIZE ]; +if (pos) {strfieldcpy (name, pos+2 ); *pos =0x00 ;
@@ -877,8 +877,7 @@if (!sysfs_device)break ;strcat (udev->name, sysfs_device->bus_id); -dbg ("bus_id inserted: %s" , - sysfs_device->bus_id); +dbg ("substitute bus_id '%s'" , sysfs_device->bus_id);break ;case 'n' : dig = class_dev->name +strlen (class_dev->name);
@@ -944,5 +943,3 @@dump_dev_list ();return retval; } - -
namedev.c +28 -25
113 lines not on this page · raw message