X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udev.c;h=ac29ec6f4424909fcd9799ec1db1fbeb3dc421ce;hp=8d650c2561ddaa1f5d11bfb8d0340d59b1761810;hb=4af58c70571c5c63edaff20d2032c8eeb59678b6;hpb=c056c5141b16fe95485eeb233fe8b90954686a60 diff --git a/udev.c b/udev.c index 8d650c256..ac29ec6f4 100644 --- a/udev.c +++ b/udev.c @@ -27,9 +27,11 @@ #include #include #include +#include #include "udev.h" #include "udev_version.h" +#include "udev_dbus.h" #include "namedev.h" #include "udevdb.h" #include "libsysfs/libsysfs.h" @@ -38,14 +40,6 @@ char **main_argv; char **main_envp; -char sysfs_path[SYSFS_PATH_MAX]; -char *udev_config_dir; -char *udev_root; -char udev_db_filename[PATH_MAX+NAME_MAX]; -char udev_config_permission_filename[PATH_MAX+NAME_MAX]; -char udev_config_filename[PATH_MAX+NAME_MAX]; - - static inline char *get_action(void) { char *action; @@ -70,40 +64,6 @@ static inline char *get_seqnum(void) return seqnum; } -static void get_dirs(void) -{ - char *udev_test; - char *temp; - int retval; - - udev_test = getenv("UDEV_TEST"); - if (udev_test == NULL) { - /* normal operation, use the compiled in defaults */ - udev_config_dir = UDEV_CONFIG_DIR; - udev_root = UDEV_ROOT; - retval = sysfs_get_mnt_path(sysfs_path, SYSFS_PATH_MAX); - dbg("sysfs_path = %s", sysfs_path); - if (retval) - dbg("sysfs_get_mnt_path failed"); - - } else { - /* hm testing is happening, use the specified values */ - temp = getenv("UDEV_SYSFS_PATH"); - strncpy(sysfs_path, temp, sizeof(sysfs_path)); - udev_config_dir = getenv("UDEV_CONFIG_DIR"); - udev_root = getenv("UDEV_ROOT"); - } - - strncpy(udev_db_filename, udev_config_dir, sizeof(udev_db_filename)); - strncat(udev_db_filename, UDEV_DB, sizeof(udev_db_filename)); - - strncpy(udev_config_filename, udev_config_dir, sizeof(udev_config_filename)); - strncat(udev_config_filename, NAMEDEV_CONFIG_FILE, sizeof(udev_config_filename)); - - strncpy(udev_config_permission_filename, udev_config_dir, sizeof(udev_config_permission_filename)); - strncat(udev_config_permission_filename, NAMEDEV_CONFIG_PERMISSION_FILE, sizeof(udev_config_permission_filename)); -} - int main(int argc, char **argv, char **envp) { char *action; @@ -128,12 +88,12 @@ int main(int argc, char **argv, char **envp) dbg ("no devpath?"); goto exit; } - dbg("looking at %s", devpath); + dbg("looking at '%s'", devpath); /* we only care about class devices and block stuff */ if (!strstr(devpath, "class") && !strstr(devpath, "block")) { - dbg("not block or class"); + dbg("not a block or class device"); goto exit; } @@ -149,11 +109,16 @@ int main(int argc, char **argv, char **envp) goto exit; } + /* initialize our configuration */ + udev_init_config(); + + /* connect to the system message bus */ + sysbus_connect(); + /* initialize udev database */ - get_dirs(); retval = udevdb_init(UDEVDB_DEFAULT); if (retval != 0) { - dbg("Unable to initialize database."); + dbg("unable to initialize database"); goto exit; } @@ -167,12 +132,14 @@ int main(int argc, char **argv, char **envp) retval = udev_remove_device(devpath, subsystem); else { - dbg("Unknown action: %s", action); + dbg("unknown action '%s'", action); retval = -EINVAL; } udevdb_exit(); -exit: + /* disconnect from the system message bus */ + sysbus_disconnect(); + +exit: return retval; } -