diff --git a/src/udev/meson.build b/src/udev/meson.build index 726bae585e..c2228c543e 100644 --- a/src/udev/meson.build +++ b/src/udev/meson.build @@ -28,6 +28,7 @@ libudev_core_sources = ''' udev-watch.c udev-watch.h udev-builtin.c + udev-builtin.h udev-builtin-btrfs.c udev-builtin-hwdb.c udev-builtin-input_id.c diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 202efda3fe..a0da293b55 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -23,7 +23,8 @@ #include "gpt.h" #include "parse-util.h" #include "string-util.h" -#include "udev.h" +#include "strxcpyx.h" +#include "udev-builtin.h" static void print_property(struct udev_device *dev, bool test, const char *name, const char *value) { char s[256]; diff --git a/src/udev/udev-builtin-btrfs.c b/src/udev/udev-builtin-btrfs.c index 2e8535598d..fa6c352c30 100644 --- a/src/udev/udev-builtin-btrfs.c +++ b/src/udev/udev-builtin-btrfs.c @@ -11,7 +11,9 @@ #include "fd-util.h" #include "missing.h" #include "string-util.h" -#include "udev.h" +#include "strxcpyx.h" +#include "udev-builtin.h" +#include "util.h" static int builtin_btrfs(struct udev_device *dev, int argc, char *argv[], bool test) { struct btrfs_ioctl_vol_args args = {}; diff --git a/src/udev/udev-builtin-hwdb.c b/src/udev/udev-builtin-hwdb.c index befb009b5c..1978fddd14 100644 --- a/src/udev/udev-builtin-hwdb.c +++ b/src/udev/udev-builtin-hwdb.c @@ -9,9 +9,10 @@ #include "alloc-util.h" #include "hwdb-util.h" +#include "libudev-private.h" #include "parse-util.h" #include "string-util.h" -#include "udev.h" +#include "udev-builtin.h" static sd_hwdb *hwdb; diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c index f7616987ab..4252a9a696 100644 --- a/src/udev/udev-builtin-input_id.c +++ b/src/udev/udev-builtin-input_id.c @@ -19,7 +19,7 @@ #include "missing.h" #include "stdio-util.h" #include "string-util.h" -#include "udev.h" +#include "udev-builtin.h" #include "util.h" /* we must use this kernel-compatible implementation */ diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c index 9160a5b5d5..0e026697c1 100644 --- a/src/udev/udev-builtin-keyboard.c +++ b/src/udev/udev-builtin-keyboard.c @@ -1,5 +1,7 @@ /* SPDX-License-Identifier: LGPL-2.1+ */ +#include +#include #include #include #include @@ -10,7 +12,8 @@ #include "parse-util.h" #include "stdio-util.h" #include "string-util.h" -#include "udev.h" +#include "strxcpyx.h" +#include "udev-builtin.h" static const struct key_name *keyboard_lookup_key(const char *str, GPERF_LEN_TYPE len); #include "keyboard-keys-from-name.h" diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c index 9436126dd8..6ed0210ee6 100644 --- a/src/udev/udev-builtin-kmod.c +++ b/src/udev/udev-builtin-kmod.c @@ -13,7 +13,7 @@ #include "module-util.h" #include "string-util.h" -#include "udev.h" +#include "udev-builtin.h" static struct kmod_ctx *ctx = NULL; diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 834172c388..6e46a139f3 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -101,14 +101,18 @@ #include #include +#include "alloc-util.h" #include "dirent-util.h" #include "fd-util.h" #include "fileio.h" #include "fs-util.h" +#include "libudev-private.h" #include "parse-util.h" #include "stdio-util.h" #include "string-util.h" -#include "udev.h" +#include "strv.h" +#include "strxcpyx.h" +#include "udev-builtin.h" #define ONBOARD_INDEX_MAX (16*1024-1) diff --git a/src/udev/udev-builtin-net_setup_link.c b/src/udev/udev-builtin-net_setup_link.c index ca8c16df0a..3384b76dc1 100644 --- a/src/udev/udev-builtin-net_setup_link.c +++ b/src/udev/udev-builtin-net_setup_link.c @@ -4,7 +4,7 @@ #include "libudev-device-internal.h" #include "link-config.h" #include "log.h" -#include "udev.h" +#include "udev-builtin.h" static link_config_ctx *ctx = NULL; diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c index 12c340110f..693b9820b8 100644 --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -18,9 +18,11 @@ #include "alloc-util.h" #include "dirent-util.h" #include "fd-util.h" +#include "libudev-private.h" #include "string-util.h" +#include "strv.h" #include "sysexits.h" -#include "udev.h" +#include "udev-builtin.h" _printf_(2,3) static void path_prepend(char **path, const char *fmt, ...) { diff --git a/src/udev/udev-builtin-uaccess.c b/src/udev/udev-builtin-uaccess.c index 4ddd89dbb1..695a411a74 100644 --- a/src/udev/udev-builtin-uaccess.c +++ b/src/udev/udev-builtin-uaccess.c @@ -6,13 +6,14 @@ #include #include #include +#include #include "sd-login.h" #include "login-util.h" #include "logind-acl.h" -#include "udev.h" -#include "util.h" +#include "log.h" +#include "udev-builtin.h" static int builtin_uaccess(struct udev_device *dev, int argc, char *argv[], bool test) { int r; diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index 97548e92ed..aaa0636493 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -17,8 +17,9 @@ #include "alloc-util.h" #include "fd-util.h" +#include "libudev-private.h" #include "string-util.h" -#include "udev.h" +#include "udev-builtin.h" static void set_usb_iftype(char *to, int if_class_num, size_t len) { const char *type = "generic"; diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c index 956dc30ed2..6d204a46b3 100644 --- a/src/udev/udev-builtin.c +++ b/src/udev/udev-builtin.c @@ -5,6 +5,7 @@ #include #include "string-util.h" +#include "udev-builtin.h" #include "udev.h" static bool initialized; diff --git a/src/udev/udev-builtin.h b/src/udev/udev-builtin.h new file mode 100644 index 0000000000..0a6dc63ec2 --- /dev/null +++ b/src/udev/udev-builtin.h @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ +#pragma once + +#include + +#include "libudev.h" + +enum udev_builtin_cmd { +#if HAVE_BLKID + UDEV_BUILTIN_BLKID, +#endif + UDEV_BUILTIN_BTRFS, + UDEV_BUILTIN_HWDB, + UDEV_BUILTIN_INPUT_ID, + UDEV_BUILTIN_KEYBOARD, +#if HAVE_KMOD + UDEV_BUILTIN_KMOD, +#endif + UDEV_BUILTIN_NET_ID, + UDEV_BUILTIN_NET_LINK, + UDEV_BUILTIN_PATH_ID, + UDEV_BUILTIN_USB_ID, +#if HAVE_ACL + UDEV_BUILTIN_UACCESS, +#endif + UDEV_BUILTIN_MAX +}; + +struct udev_builtin { + const char *name; + int (*cmd)(struct udev_device *dev, int argc, char *argv[], bool test); + const char *help; + int (*init)(void); + void (*exit)(void); + bool (*validate)(void); + bool run_once; +}; + +#if HAVE_BLKID +extern const struct udev_builtin udev_builtin_blkid; +#endif +extern const struct udev_builtin udev_builtin_btrfs; +extern const struct udev_builtin udev_builtin_hwdb; +extern const struct udev_builtin udev_builtin_input_id; +extern const struct udev_builtin udev_builtin_keyboard; +#if HAVE_KMOD +extern const struct udev_builtin udev_builtin_kmod; +#endif +extern const struct udev_builtin udev_builtin_net_id; +extern const struct udev_builtin udev_builtin_net_setup_link; +extern const struct udev_builtin udev_builtin_path_id; +extern const struct udev_builtin udev_builtin_usb_id; +#if HAVE_ACL +extern const struct udev_builtin udev_builtin_uaccess; +#endif + +void udev_builtin_init(void); +void udev_builtin_exit(void); +enum udev_builtin_cmd udev_builtin_lookup(const char *command); +const char *udev_builtin_name(enum udev_builtin_cmd cmd); +bool udev_builtin_run_once(enum udev_builtin_cmd cmd); +int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const char *command, bool test); +void udev_builtin_list(void); +bool udev_builtin_validate(void); +int udev_builtin_add_property(struct udev_device *dev, bool test, const char *key, const char *val); +int udev_builtin_hwdb_lookup(struct udev_device *dev, const char *prefix, const char *modalias, + const char *filter, bool test); diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 273bddce96..f732913d17 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -24,6 +24,7 @@ #include "process-util.h" #include "signal-util.h" #include "string-util.h" +#include "udev-builtin.h" #include "udev-node.h" #include "udev-watch.h" #include "udev.h" diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 76baa0322b..4d87754042 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -28,6 +28,7 @@ #include "string-util.h" #include "strv.h" #include "sysctl-util.h" +#include "udev-builtin.h" #include "udev.h" #include "user-util.h" #include "util.h" diff --git a/src/udev/udev.h b/src/udev/udev.h index ac71a2c163..09bd54e965 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -77,63 +77,6 @@ void udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules); void udev_event_execute_run(struct udev_event *event, usec_t timeout_usec, usec_t timeout_warn_usec); -/* built-in commands */ -enum udev_builtin_cmd { -#if HAVE_BLKID - UDEV_BUILTIN_BLKID, -#endif - UDEV_BUILTIN_BTRFS, - UDEV_BUILTIN_HWDB, - UDEV_BUILTIN_INPUT_ID, - UDEV_BUILTIN_KEYBOARD, -#if HAVE_KMOD - UDEV_BUILTIN_KMOD, -#endif - UDEV_BUILTIN_NET_ID, - UDEV_BUILTIN_NET_LINK, - UDEV_BUILTIN_PATH_ID, - UDEV_BUILTIN_USB_ID, -#if HAVE_ACL - UDEV_BUILTIN_UACCESS, -#endif - UDEV_BUILTIN_MAX -}; -struct udev_builtin { - const char *name; - int (*cmd)(struct udev_device *dev, int argc, char *argv[], bool test); - const char *help; - int (*init)(void); - void (*exit)(void); - bool (*validate)(void); - bool run_once; -}; -#if HAVE_BLKID -extern const struct udev_builtin udev_builtin_blkid; -#endif -extern const struct udev_builtin udev_builtin_btrfs; -extern const struct udev_builtin udev_builtin_hwdb; -extern const struct udev_builtin udev_builtin_input_id; -extern const struct udev_builtin udev_builtin_keyboard; -#if HAVE_KMOD -extern const struct udev_builtin udev_builtin_kmod; -#endif -extern const struct udev_builtin udev_builtin_net_id; -extern const struct udev_builtin udev_builtin_net_setup_link; -extern const struct udev_builtin udev_builtin_path_id; -extern const struct udev_builtin udev_builtin_usb_id; -extern const struct udev_builtin udev_builtin_uaccess; -void udev_builtin_init(void); -void udev_builtin_exit(void); -enum udev_builtin_cmd udev_builtin_lookup(const char *command); -const char *udev_builtin_name(enum udev_builtin_cmd cmd); -bool udev_builtin_run_once(enum udev_builtin_cmd cmd); -int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const char *command, bool test); -void udev_builtin_list(void); -bool udev_builtin_validate(void); -int udev_builtin_add_property(struct udev_device *dev, bool test, const char *key, const char *val); -int udev_builtin_hwdb_lookup(struct udev_device *dev, const char *prefix, const char *modalias, - const char *filter, bool test); - /* Cleanup functions */ DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref); DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref); diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c index 940d691dd7..d516492ade 100644 --- a/src/udev/udevadm-test-builtin.c +++ b/src/udev/udevadm-test-builtin.c @@ -6,9 +6,11 @@ #include #include +#include "libudev-private.h" #include "path-util.h" #include "string-util.h" -#include "udev.h" +#include "strxcpyx.h" +#include "udev-builtin.h" #include "udevadm.h" static const char *arg_command = NULL; diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index 462c5818f4..89d51c7775 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -13,6 +13,7 @@ #include #include "string-util.h" +#include "udev-builtin.h" #include "udev.h" #include "udevadm.h" diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 8f8a2fcaa8..ea1476e7dd 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -52,6 +52,7 @@ #include "socket-util.h" #include "string-util.h" #include "terminal-util.h" +#include "udev-builtin.h" #include "udev-ctrl.h" #include "udev-util.h" #include "udev-watch.h"