]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
udev: move rule structure definitions into the .c file
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 27 Jun 2019 06:51:53 +0000 (08:51 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 28 Jun 2019 14:20:48 +0000 (16:20 +0200)
They are (and should) only be used there, no need to expose them.

src/udev/udev-rules.c
src/udev/udev-rules.h

index 8ad346b7ac9ff0e18040eb1a90af82a308e1464f..40f743a033c67277c172bb8e2d48bffde82974bf 100644 (file)
@@ -14,6 +14,7 @@
 #include "fs-util.h"
 #include "glob-util.h"
 #include "libudev-util.h"
+#include "list.h"
 #include "mkdir.h"
 #include "nulstr-util.h"
 #include "parse-util.h"
 #define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d")
 
 
+typedef enum {
+        OP_MATCH,        /* == */
+        OP_NOMATCH,      /* != */
+        OP_ADD,          /* += */
+        OP_REMOVE,       /* -= */
+        OP_ASSIGN,       /* = */
+        OP_ASSIGN_FINAL, /* := */
+        _OP_TYPE_MAX,
+        _OP_TYPE_INVALID = -1
+} UdevRuleOperatorType;
+
+typedef enum {
+        MATCH_TYPE_EMPTY,     /* empty string */
+        MATCH_TYPE_PLAIN,     /* no special characters */
+        MATCH_TYPE_GLOB,      /* shell globs ?,*,[] */
+        MATCH_TYPE_SUBSYSTEM, /* "subsystem", "bus", or "class" */
+        _MATCH_TYPE_MAX,
+        _MATCH_TYPE_INVALID = -1
+} UdevRuleMatchType;
+
+typedef enum {
+        SUBST_TYPE_PLAIN,  /* no substitution */
+        SUBST_TYPE_FORMAT, /* % or $ */
+        SUBST_TYPE_SUBSYS, /* "[<SUBSYSTEM>/<KERNEL>]<attribute>" format */
+        _SUBST_TYPE_MAX,
+        _SUBST_TYPE_INVALID = -1
+} UdevRuleSubstituteType;
+
+typedef enum {
+        /* lvalues which take match or nomatch operator */
+        TK_M_ACTION,                        /* string, device_get_action() */
+        TK_M_DEVPATH,                       /* path, sd_device_get_devpath() */
+        TK_M_KERNEL,                        /* string, sd_device_get_sysname() */
+        TK_M_DEVLINK,                       /* strv, sd_device_get_devlink_first(), sd_device_get_devlink_next() */
+        TK_M_NAME,                          /* string, name of network interface */
+        TK_M_ENV,                           /* string, device property, takes key through attribute */
+        TK_M_TAG,                           /* strv, sd_device_get_tag_first(), sd_device_get_tag_next() */
+        TK_M_SUBSYSTEM,                     /* string, sd_device_get_subsystem() */
+        TK_M_DRIVER,                        /* string, sd_device_get_driver() */
+        TK_M_ATTR,                          /* string, takes filename through attribute, sd_device_get_sysattr_value(), util_resolve_subsys_kernel(), etc. */
+        TK_M_SYSCTL,                        /* string, takes kernel parameter through attribute */
+
+        /* matches parent paramters */
+        TK_M_PARENTS_KERNEL,                /* string */
+        TK_M_PARENTS_SUBSYSTEM,             /* string */
+        TK_M_PARENTS_DRIVER,                /* string */
+        TK_M_PARENTS_ATTR,                  /* string */
+        TK_M_PARENTS_TAG,                   /* strv */
+
+        TK_M_TEST,                          /* path, optionally mode_t can be specified by attribute, test the existence of a file */
+        TK_M_PROGRAM,                       /* string, execute a program */
+        TK_M_IMPORT_FILE,                   /* path */
+        TK_M_IMPORT_PROGRAM,                /* string, import properties from the result of program */
+        TK_M_IMPORT_BUILTIN,                /* string, import properties from the result of built-in command */
+        TK_M_IMPORT_DB,                     /* string, import properties from database */
+        TK_M_IMPORT_CMDLINE,                /* string, kernel command line */
+        TK_M_IMPORT_PARENT,                 /* string, parent property */
+        TK_M_RESULT,                        /* string, result of TK_M_PROGRAM */
+
+#define _TK_M_MAX (TK_M_RESULT + 1)
+#define _TK_A_MIN _TK_M_MAX
+
+        /* lvalues which take one of assign operators */
+        TK_A_OPTIONS_STRING_ESCAPE_NONE,    /* no argument */
+        TK_A_OPTIONS_STRING_ESCAPE_REPLACE, /* no argument */
+        TK_A_OPTIONS_DB_PERSIST,            /* no argument */
+        TK_A_OPTIONS_INOTIFY_WATCH,         /* boolean */
+        TK_A_OPTIONS_DEVLINK_PRIORITY,      /* int */
+        TK_A_OWNER,                         /* user name */
+        TK_A_GROUP,                         /* group name */
+        TK_A_MODE,                          /* mode string */
+        TK_A_OWNER_ID,                      /* uid_t */
+        TK_A_GROUP_ID,                      /* gid_t */
+        TK_A_MODE_ID,                       /* mode_t */
+        TK_A_TAG,                           /* string */
+        TK_A_OPTIONS_STATIC_NODE,           /* device path, /dev/... */
+        TK_A_SECLABEL,                      /* string with attribute */
+        TK_A_ENV,                           /* string with attribute */
+        TK_A_NAME,                          /* ifname */
+        TK_A_DEVLINK,                       /* string */
+        TK_A_ATTR,                          /* string with attribute */
+        TK_A_SYSCTL,                        /* string with attribute */
+        TK_A_RUN_BUILTIN,                   /* string */
+        TK_A_RUN_PROGRAM,                   /* string */
+
+        _TK_TYPE_MAX,
+        _TK_TYPE_INVALID = -1,
+} UdevRuleTokenType;
+
+typedef enum {
+        LINE_HAS_NAME         = 1 << 0, /* has NAME= */
+        LINE_HAS_DEVLINK      = 1 << 1, /* has SYMLINK=, OWNER=, GROUP= or MODE= */
+        LINE_HAS_STATIC_NODE  = 1 << 2, /* has OPTIONS=static_node */
+        LINE_HAS_GOTO         = 1 << 3, /* has GOTO= */
+        LINE_HAS_LABEL        = 1 << 4, /* has LABEL= */
+        LINE_UPDATE_SOMETHING = 1 << 5, /* has other TK_A_* or TK_M_IMPORT tokens */
+} UdevRuleLineType;
+
+typedef struct UdevRuleFile UdevRuleFile;
+typedef struct UdevRuleLine UdevRuleLine;
+typedef struct UdevRuleToken UdevRuleToken;
+
+struct UdevRuleToken {
+        UdevRuleTokenType type:8;
+        UdevRuleOperatorType op:8;
+        UdevRuleMatchType match_type:8;
+        UdevRuleSubstituteType attr_subst_type:7;
+        bool attr_match_remove_trailing_whitespace:1;
+        const char *value;
+        void *data;
+        LIST_FIELDS(UdevRuleToken, tokens);
+};
+
+struct UdevRuleLine {
+        char *line;
+        unsigned line_number;
+        UdevRuleLineType type;
+
+        const char *label;
+        const char *goto_label;
+        UdevRuleLine *goto_line;
+
+        UdevRuleFile *rule_file;
+        UdevRuleToken *current_token;
+        LIST_HEAD(UdevRuleToken, tokens);
+        LIST_FIELDS(UdevRuleLine, rule_lines);
+};
+
+struct UdevRuleFile {
+        char *filename;
+        UdevRuleLine *current_line;
+        LIST_HEAD(UdevRuleLine, rule_lines);
+        LIST_FIELDS(UdevRuleFile, rule_files);
+};
+
+struct UdevRules {
+        usec_t dirs_ts_usec;
+        ResolveNameTiming resolve_name_timing;
+        Hashmap *known_users;
+        Hashmap *known_groups;
+        UdevRuleFile *current_file;
+        LIST_HEAD(UdevRuleFile, rule_files);
+};
+
+
 /*** Logging helpers ***/
 
 #define log_rule_full(device, rules, level, error, fmt, ...)            \
index 52bf03b076d0fcf9e1150499ddd437c35177f50d..9fff5da7b5d48e30969d9f5a122440a9c5b9a735 100644 (file)
@@ -1,46 +1,13 @@
 /* SPDX-License-Identifier: GPL-2.0+ */
 #pragma once
 
-#include "device-util.h"
 #include "hashmap.h"
-#include "list.h"
 #include "time-util.h"
 #include "udev-util.h"
 
 typedef struct UdevRules UdevRules;
-typedef struct UdevRuleFile UdevRuleFile;
-typedef struct UdevRuleLine UdevRuleLine;
-typedef struct UdevRuleToken UdevRuleToken;
 typedef struct UdevEvent UdevEvent;
 
-typedef enum {
-        OP_MATCH,        /* == */
-        OP_NOMATCH,      /* != */
-        OP_ADD,          /* += */
-        OP_REMOVE,       /* -= */
-        OP_ASSIGN,       /* = */
-        OP_ASSIGN_FINAL, /* := */
-        _OP_TYPE_MAX,
-        _OP_TYPE_INVALID = -1
-} UdevRuleOperatorType;
-
-typedef enum {
-        MATCH_TYPE_EMPTY,     /* empty string */
-        MATCH_TYPE_PLAIN,     /* no special characters */
-        MATCH_TYPE_GLOB,      /* shell globs ?,*,[] */
-        MATCH_TYPE_SUBSYSTEM, /* "subsystem", "bus", or "class" */
-        _MATCH_TYPE_MAX,
-        _MATCH_TYPE_INVALID = -1
-} UdevRuleMatchType;
-
-typedef enum {
-        SUBST_TYPE_PLAIN,  /* no substitution */
-        SUBST_TYPE_FORMAT, /* % or $ */
-        SUBST_TYPE_SUBSYS, /* "[<SUBSYSTEM>/<KERNEL>]<attribute>" format */
-        _SUBST_TYPE_MAX,
-        _SUBST_TYPE_INVALID = -1
-} UdevRuleSubstituteType;
-
 typedef enum {
         ESCAPE_UNSET,
         ESCAPE_NONE,    /* OPTIONS="string_escape=none" */
@@ -49,118 +16,6 @@ typedef enum {
         _ESCAPE_TYPE_INVALID = -1
 } UdevRuleEscapeType;
 
-typedef enum {
-        /* lvalues which take match or nomatch operator */
-        TK_M_ACTION,                        /* string, device_get_action() */
-        TK_M_DEVPATH,                       /* path, sd_device_get_devpath() */
-        TK_M_KERNEL,                        /* string, sd_device_get_sysname() */
-        TK_M_DEVLINK,                       /* strv, sd_device_get_devlink_first(), sd_device_get_devlink_next() */
-        TK_M_NAME,                          /* string, name of network interface */
-        TK_M_ENV,                           /* string, device property, takes key through attribute */
-        TK_M_TAG,                           /* strv, sd_device_get_tag_first(), sd_device_get_tag_next() */
-        TK_M_SUBSYSTEM,                     /* string, sd_device_get_subsystem() */
-        TK_M_DRIVER,                        /* string, sd_device_get_driver() */
-        TK_M_ATTR,                          /* string, takes filename through attribute, sd_device_get_sysattr_value(), util_resolve_subsys_kernel(), etc. */
-        TK_M_SYSCTL,                        /* string, takes kernel parameter through attribute */
-
-        /* matches parent paramters */
-        TK_M_PARENTS_KERNEL,                /* string */
-        TK_M_PARENTS_SUBSYSTEM,             /* string */
-        TK_M_PARENTS_DRIVER,                /* string */
-        TK_M_PARENTS_ATTR,                  /* string */
-        TK_M_PARENTS_TAG,                   /* strv */
-
-        TK_M_TEST,                          /* path, optionally mode_t can be specified by attribute, test the existence of a file */
-        TK_M_PROGRAM,                       /* string, execute a program */
-        TK_M_IMPORT_FILE,                   /* path */
-        TK_M_IMPORT_PROGRAM,                /* string, import properties from the result of program */
-        TK_M_IMPORT_BUILTIN,                /* string, import properties from the result of built-in command */
-        TK_M_IMPORT_DB,                     /* string, import properties from database */
-        TK_M_IMPORT_CMDLINE,                /* string, kernel command line */
-        TK_M_IMPORT_PARENT,                 /* string, parent property */
-        TK_M_RESULT,                        /* string, result of TK_M_PROGRAM */
-
-#define _TK_M_MAX (TK_M_RESULT + 1)
-#define _TK_A_MIN _TK_M_MAX
-
-        /* lvalues which take one of assign operators */
-        TK_A_OPTIONS_STRING_ESCAPE_NONE,    /* no argument */
-        TK_A_OPTIONS_STRING_ESCAPE_REPLACE, /* no argument */
-        TK_A_OPTIONS_DB_PERSIST,            /* no argument */
-        TK_A_OPTIONS_INOTIFY_WATCH,         /* boolean */
-        TK_A_OPTIONS_DEVLINK_PRIORITY,      /* int */
-        TK_A_OWNER,                         /* user name */
-        TK_A_GROUP,                         /* group name */
-        TK_A_MODE,                          /* mode string */
-        TK_A_OWNER_ID,                      /* uid_t */
-        TK_A_GROUP_ID,                      /* gid_t */
-        TK_A_MODE_ID,                       /* mode_t */
-        TK_A_TAG,                           /* string */
-        TK_A_OPTIONS_STATIC_NODE,           /* device path, /dev/... */
-        TK_A_SECLABEL,                      /* string with attribute */
-        TK_A_ENV,                           /* string with attribute */
-        TK_A_NAME,                          /* ifname */
-        TK_A_DEVLINK,                       /* string */
-        TK_A_ATTR,                          /* string with attribute */
-        TK_A_SYSCTL,                        /* string with attribute */
-        TK_A_RUN_BUILTIN,                   /* string */
-        TK_A_RUN_PROGRAM,                   /* string */
-
-        _TK_TYPE_MAX,
-        _TK_TYPE_INVALID = -1,
-} UdevRuleTokenType;
-
-typedef enum {
-        LINE_HAS_NAME         = 1 << 0, /* has NAME= */
-        LINE_HAS_DEVLINK      = 1 << 1, /* has SYMLINK=, OWNER=, GROUP= or MODE= */
-        LINE_HAS_STATIC_NODE  = 1 << 2, /* has OPTIONS=static_node */
-        LINE_HAS_GOTO         = 1 << 3, /* has GOTO= */
-        LINE_HAS_LABEL        = 1 << 4, /* has LABEL= */
-        LINE_UPDATE_SOMETHING = 1 << 5, /* has other TK_A_* or TK_M_IMPORT tokens */
-} UdevRuleLineType;
-
-struct UdevRuleToken {
-        UdevRuleTokenType type:8;
-        UdevRuleOperatorType op:8;
-        UdevRuleMatchType match_type:8;
-        UdevRuleSubstituteType attr_subst_type:7;
-        bool attr_match_remove_trailing_whitespace:1;
-        const char *value;
-        void *data;
-        LIST_FIELDS(UdevRuleToken, tokens);
-};
-
-struct UdevRuleLine {
-        char *line;
-        unsigned line_number;
-        UdevRuleLineType type;
-
-        const char *label;
-        const char *goto_label;
-        UdevRuleLine *goto_line;
-
-        UdevRuleFile *rule_file;
-        UdevRuleToken *current_token;
-        LIST_HEAD(UdevRuleToken, tokens);
-        LIST_FIELDS(UdevRuleLine, rule_lines);
-};
-
-struct UdevRuleFile {
-        char *filename;
-        UdevRuleLine *current_line;
-        LIST_HEAD(UdevRuleLine, rule_lines);
-        LIST_FIELDS(UdevRuleFile, rule_files);
-};
-
-struct UdevRules {
-        usec_t dirs_ts_usec;
-        ResolveNameTiming resolve_name_timing;
-        Hashmap *known_users;
-        Hashmap *known_groups;
-        UdevRuleFile *current_file;
-        LIST_HEAD(UdevRuleFile, rule_files);
-};
-
 int udev_rules_new(UdevRules **ret_rules, ResolveNameTiming resolve_name_timing);
 UdevRules *udev_rules_free(UdevRules *rules);
 DEFINE_TRIVIAL_CLEANUP_FUNC(UdevRules*, udev_rules_free);