1 /* SPDX-License-Identifier: GPL-2.0-or-later */
4 #include "alloc-util.h"
8 #define UDEV_NAME_SIZE 512
9 #define UDEV_PATH_SIZE 1024
10 #define UDEV_LINE_SIZE 16384
12 typedef struct UdevRuleFile UdevRuleFile
;
13 typedef struct UdevRules UdevRules
;
14 typedef struct UdevEvent UdevEvent
;
18 ESCAPE_NONE
, /* OPTIONS="string_escape=none" */
19 ESCAPE_REPLACE
, /* OPTIONS="string_escape=replace" */
21 _ESCAPE_TYPE_INVALID
= -EINVAL
,
24 typedef enum ResolveNameTiming
{
28 _RESOLVE_NAME_TIMING_MAX
,
29 _RESOLVE_NAME_TIMING_INVALID
= -EINVAL
,
32 int udev_rule_parse_value(char *str
, char **ret_value
, char **ret_endpos
);
33 int udev_rules_parse_file(UdevRules
*rules
, const char *filename
, bool extra_checks
, UdevRuleFile
**ret
);
34 unsigned udev_rule_file_get_issues(UdevRuleFile
*rule_file
);
35 UdevRules
* udev_rules_new(ResolveNameTiming resolve_name_timing
);
36 int udev_rules_load(UdevRules
**ret_rules
, ResolveNameTiming resolve_name_timing
);
37 UdevRules
*udev_rules_free(UdevRules
*rules
);
38 DEFINE_TRIVIAL_CLEANUP_FUNC(UdevRules
*, udev_rules_free
);
39 #define udev_rules_free_and_replace(a, b) free_and_replace_full(a, b, udev_rules_free)
41 bool udev_rules_should_reload(UdevRules
*rules
);
42 int udev_rules_apply_to_event(UdevRules
*rules
, UdevEvent
*event
,
45 Hashmap
*properties_list
);
46 int udev_rules_apply_static_dev_perms(UdevRules
*rules
);
48 ResolveNameTiming
resolve_name_timing_from_string(const char *s
) _pure_
;
49 const char *resolve_name_timing_to_string(ResolveNameTiming i
) _const_
;