-#ifdef DEBUG
-static void dump_token(struct udev_rules *rules, struct token *token)
-{
- enum token_type type = token->type;
- enum operation_type op = token->key.op;
- enum string_glob_type glob = token->key.glob;
- const char *value = &rules->buf[token->key.value_off];
- const char *attr = &rules->buf[token->key.attr_off];
-
- switch (type) {
- case TK_RULE:
- {
- const char *tks_ptr = (char *)rules->tokens;
- const char *tk_ptr = (char *)token;
- unsigned int off = tk_ptr - tks_ptr;
-
- dbg(rules->udev, "* RULE '%s', off: %u(%u), next: %u, label: '%s'\n",
- &rules->buf[token->rule.filename_off],
- off / (unsigned int) sizeof(struct token), off,
- token->rule.next_rule,
- &rules->buf[token->rule.label_off]);
- break;
- }
- case TK_M_ACTION:
- case TK_M_DEVPATH:
- case TK_M_KERNEL:
- case TK_M_SUBSYSTEM:
- case TK_M_DRIVER:
- case TK_M_WAITFOR:
- case TK_M_DEVLINK:
- case TK_M_NAME:
- case TK_M_KERNELS:
- case TK_M_SUBSYSTEMS:
- case TK_M_DRIVERS:
- case TK_M_PROGRAM:
- case TK_M_IMPORT_FILE:
- case TK_M_IMPORT_PROG:
- case TK_M_IMPORT_PARENT:
- case TK_M_RESULT:
- case TK_A_NAME:
- case TK_A_DEVLINK:
- case TK_A_OWNER:
- case TK_A_GROUP:
- case TK_A_MODE:
- case TK_A_RUN:
- dbg(rules->udev, "%s %s '%s'(%s)\n",
- token_str[type], operation_str[op], value, string_glob_str[glob]);
- break;
- case TK_M_ATTR:
- case TK_M_ATTRS:
- case TK_M_ENV:
- case TK_A_ATTR:
- case TK_A_ENV:
- dbg(rules->udev, "%s %s '%s' '%s'(%s)\n",
- token_str[type], operation_str[op], attr, value, string_glob_str[glob]);
- break;
- case TK_A_IGNORE_DEVICE:
- case TK_A_STRING_ESCAPE_NONE:
- case TK_A_STRING_ESCAPE_REPLACE:
- case TK_A_LAST_RULE:
- case TK_A_IGNORE_REMOVE:
- dbg(rules->udev, "%s\n", token_str[type]);
- break;
- case TK_M_TEST:
- dbg(rules->udev, "%s %s '%s'(%s) %#o\n",
- token_str[type], operation_str[op], value, string_glob_str[glob], token->key.mode);
- break;
- case TK_A_NUM_FAKE_PART:
- dbg(rules->udev, "%s %u\n", token_str[type], token->key.num_fake_part);
- break;
- case TK_A_DEVLINK_PRIO:
- dbg(rules->udev, "%s %s %u\n", token_str[type], operation_str[op], token->key.devlink_prio);
- break;
- case TK_A_OWNER_ID:
- dbg(rules->udev, "%s %s %u\n", token_str[type], operation_str[op], token->key.uid);
- break;
- case TK_A_GROUP_ID:
- dbg(rules->udev, "%s %s %u\n", token_str[type], operation_str[op], token->key.gid);
- break;
- case TK_A_MODE_ID:
- dbg(rules->udev, "%s %s %#o\n", token_str[type], operation_str[op], token->key.mode);
- break;
- case TK_A_EVENT_TIMEOUT:
- dbg(rules->udev, "%s %s %u\n", token_str[type], operation_str[op], token->key.event_timeout);
- break;
- case TK_A_GOTO:
- dbg(rules->udev, "%s '%s' %u\n", token_str[type], value, token->key.rule_goto);
- break;
- case TK_END:
- dbg(rules->udev, "* %s\n", token_str[type]);
- break;
- case TK_M_PARENTS_MAX:
- case TK_M_MAX:
- case TK_UNSET:
- dbg(rules->udev, "unknown type %u\n", type);
- break;
- }
-}
-
-static void dump_rules(struct udev_rules *rules)
-{
- unsigned int i;
-
- dbg(rules->udev, "dumping %u (%zu bytes) tokens, %u (%zu bytes) strings\n",
- rules->token_cur,
- rules->token_cur * sizeof(struct token),
- rules->buf_count,
- rules->buf_cur);
- for(i = 0; i < rules->token_cur; i++)
- dump_token(rules, &rules->tokens[i]);
-}
-#else
-static inline void dump_token(struct udev_rules *rules, struct token *token) {}
-static inline void dump_rules(struct udev_rules *rules) {}
-#endif /* DEBUG */
-