char *pos2;
char *pos3;
char *attr;
- int num;
+ int len;
int i;
char c;
struct sysfs_attribute *tmpattr;
if (pos != NULL) {
pos[0] = '\0';
tail = pos+1;
- num = get_format_len(&tail);
+ len = get_format_len(&tail);
c = tail[0];
strfieldcpy(temp, tail+1);
tail = temp;
if (strlen(udev->program_result) == 0)
break;
/* get part part of the result string */
- i = num; /* num syntax is deprecated and will be removed */
+ i = 0;
if (attr != NULL)
i = atoi(attr);
if (i > 0) {
dbg("unknown substitution type '%%%c'", c);
break;
}
+ /* truncate to specified length */
+ if (len > 0)
+ pos[len] = '\0';
+
strnfieldcat(string, tail, maxsize);
}
}
expected => "Major:8:minor:3:kernelnumber:3:bus:0:0:0:0" ,
conf => <<EOF
BUS="scsi", PLACE="0:0:0:0", NAME="Major:%M:minor:%m:kernelnumber:%n:bus:%b"
+EOF
+ },
+ {
+ desc => "test NAME substitution chars (with length limit)",
+ subsys => "block",
+ devpath => "block/sda/sda3",
+ expected => "M8-m3-n3-b0:0-sIBM" ,
+ conf => <<EOF
+BUS="scsi", PLACE="0:0:0:0", NAME="M%M-m%m-n%n-b%3b-s%3s{vendor}"
EOF
},
{
.TP
.B %n
The "kernel number" of the device.
-for example, 'sda3' has a "kernel number" of '3'
+For example, 'sda3' has a "kernel number" of '3'.
.TP
.B %k
The "kernel name" for the device.
The content of a sysfs attribute.
.TP
.B %%
-The '%' char itself.
+The '%' character itself.
+.P
+The count of charcters to insert may be limited by specifying
+the format length value. For example, '%3s{file}' will only insert
+the first three characters of the sysfs attribute.
.P
.RI "A sample " udev.rules " might look like this:"
.sp