X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=udev%2Fudev-builtin.c;h=cf62d57e23283b07e244abe624cb1f9046c9db9e;hb=57f4ef67aa4e517e4ee1b79360169f5544f72379;hp=36821702c1b3193f20424fa756150efc6d696cbc;hpb=81dadce58f80edae4dc45ba55a2c41cb0f26570b;p=elogind.git diff --git a/udev/udev-builtin.c b/udev/udev-builtin.c index 36821702c..cf62d57e2 100644 --- a/udev/udev-builtin.c +++ b/udev/udev-builtin.c @@ -26,13 +26,34 @@ #include "udev.h" static const struct udev_builtin *builtins[] = { - [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id, - [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id, - [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id, [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid, + [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware, + [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id, [UDEV_BUILTIN_KMOD] = &udev_builtin_kmod, + [UDEV_BUILTIN_PATH_ID] = &udev_builtin_path_id, + [UDEV_BUILTIN_USB_ID] = &udev_builtin_usb_id, }; +int udev_builtin_init(struct udev *udev) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(builtins); i++) + if (builtins[i]->init) + builtins[i]->init(udev); + return 0; +} + +int udev_builtin_exit(struct udev *udev) +{ + unsigned int i; + + for (i = 0; i < ARRAY_SIZE(builtins); i++) + if (builtins[i]->exit) + builtins[i]->exit(udev); + return 0; +} + int udev_builtin_list(struct udev *udev) { unsigned int i; @@ -70,10 +91,17 @@ enum udev_builtin_cmd udev_builtin_lookup(const char *command) int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const char *command, bool test) { - return builtins[cmd]->cmd(dev, command, test); + char arg[UTIL_PATH_SIZE]; + int argc; + char *argv[128]; + + optind = 0; + util_strscpy(arg, sizeof(arg), command); + udev_build_argv(udev_device_get_udev(dev), arg, &argc, argv); + return builtins[cmd]->cmd(dev, argc, argv, test); } -int udev_builtin_add_property(struct udev_device *dev, bool test, const char *key, const char *val, ...) +int udev_builtin_add_property(struct udev_device *dev, bool test, const char *key, const char *val) { struct udev_list_entry *entry;