275
275
[TK_M_RESULT] = "M RESULT",
276
276
[TK_M_MAX] = "M MAX",
278
[TK_A_IGNORE_DEVICE] = "A IGNORE_DEVICE",
279
278
[TK_A_STRING_ESCAPE_NONE] = "A STRING_ESCAPE_NONE",
280
279
[TK_A_STRING_ESCAPE_REPLACE] = "A STRING_ESCAPE_REPLACE",
281
280
[TK_A_INOTIFY_WATCH] = "A INOTIFY_WATCH",
357
356
dbg(rules->udev, "%s %s '%s' '%s'(%s)\n",
358
357
token_str(type), operation_str(op), attr, value, string_glob_str(glob));
360
case TK_A_IGNORE_DEVICE:
361
359
case TK_A_STRING_ESCAPE_NONE:
362
360
case TK_A_STRING_ESCAPE_REPLACE:
363
361
case TK_A_IGNORE_REMOVE:
1247
if (strcmp(key, "KERNELS") == 0 ||
1248
strcmp(key, "ID") == 0) {
1249
if (op > OP_MATCH_MAX) {
1250
err(rules->udev, "invalid KERNELS operation\n");
1253
rule_add_key(&rule_tmp, TK_M_KERNELS, op, value, NULL);
1257
if (strcmp(key, "SUBSYSTEMS") == 0 ||
1258
strcmp(key, "BUS") == 0) {
1247
if (strcmp(key, "KERNELS") == 0) {
1248
if (op > OP_MATCH_MAX) {
1249
err(rules->udev, "invalid KERNELS operation\n");
1252
rule_add_key(&rule_tmp, TK_M_KERNELS, op, value, NULL);
1256
if (strcmp(key, "ID") == 0) {
1259
err(rules->udev, "ID= will be removed in a future udev version, "
1260
"please use KERNEL= to match the event device, or KERNELS= "
1261
"to match a parent device, in %s:%u\n", filename, lineno);
1263
if (op > OP_MATCH_MAX) {
1264
err(rules->udev, "invalid KERNELS operation\n");
1267
rule_add_key(&rule_tmp, TK_M_KERNELS, op, value, NULL);
1271
if (strcmp(key, "SUBSYSTEMS") == 0) {
1272
if (op > OP_MATCH_MAX) {
1273
err(rules->udev, "invalid SUBSYSTEMS operation\n");
1276
rule_add_key(&rule_tmp, TK_M_SUBSYSTEMS, op, value, NULL);
1280
if (strcmp(key, "BUS") == 0) {
1283
err(rules->udev, "BUS= will be removed in a future udev version, "
1284
"please use SUBSYSTEM= to match the event device, or SUBSYSTEMS= "
1285
"to match a parent device, in %s:%u\n", filename, lineno);
1259
1287
if (op > OP_MATCH_MAX) {
1260
1288
err(rules->udev, "invalid SUBSYSTEMS operation\n");
1276
if (strncmp(key, "ATTRS{", sizeof("ATTRS{")-1) == 0 ||
1277
strncmp(key, "SYSFS{", sizeof("SYSFS{")-1) == 0) {
1304
if (strncmp(key, "ATTRS{", sizeof("ATTRS{")-1) == 0) {
1278
1305
if (op > OP_MATCH_MAX) {
1279
1306
err(rules->udev, "invalid ATTRS operation\n");
1324
if (strncmp(key, "SYSFS{", sizeof("SYSFS{")-1) == 0) {
1327
err(rules->udev, "SYSFS{}= will be removed in a future udev version, "
1328
"please use ATTR{}= to match the event device, or ATTRS{}= "
1329
"to match a parent device, in %s:%u\n", filename, lineno);
1331
if (op > OP_MATCH_MAX) {
1332
err(rules->udev, "invalid ATTRS operation\n");
1335
attr = get_key_attribute(rules->udev, key + sizeof("ATTRS")-1);
1337
err(rules->udev, "error parsing ATTRS attribute\n");
1340
rule_add_key(&rule_tmp, TK_M_ATTRS, op, value, attr);
1297
1344
if (strncmp(key, "ENV{", sizeof("ENV{")-1) == 0) {
1298
1345
attr = get_key_attribute(rules->udev, key + sizeof("ENV")-1);
1299
1346
if (attr == NULL) {
1496
1543
if (strcmp(key, "OPTIONS") == 0) {
1497
1544
const char *pos;
1499
if (strstr(value, "ignore_device") != NULL) {
1500
dbg(rules->udev, "device should be ignored\n");
1501
rule_add_key(&rule_tmp, TK_A_IGNORE_DEVICE, 0, NULL, NULL);
1503
1546
if (strstr(value, "ignore_remove") != NULL) {
1504
1547
dbg(rules->udev, "remove event should be ignored\n");
1505
1548
rule_add_key(&rule_tmp, TK_A_IGNORE_REMOVE, 0, NULL, NULL);