X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=udevstart.c;h=2d5553e95529c8870aa21c622d361e69c5a5abaa;hp=6f90de7d18450be31db3b65ee6d7bef676256183;hb=2410242aa4d21335026d3b90116078c9146a32f3;hpb=0e306d087daa0f6c5517c41743b948457013252c diff --git a/udevstart.c b/udevstart.c index 6f90de7d1..2d5553e95 100644 --- a/udevstart.c +++ b/udevstart.c @@ -36,25 +36,12 @@ #include "logging.h" #include "udev_lib.h" #include "list.h" - - -#ifdef LOG -unsigned char logname[LOGNAME_SIZE]; -void log_message(int level, const char *format, ...) -{ - va_list args; - - va_start(args, format); - vsyslog(level, format, args); - va_end(args); -} -#endif +#include "udev.h" #define MAX_PATHLEN 1024 #define SYSBLOCK "/sys/block" #define SYSCLASS "/sys/class" -#define UDEV_BIN "/sbin/udev" struct device { struct list_head list; @@ -88,29 +75,10 @@ static int device_list_insert(char *path, char *subsystem, struct list_head *dev static void udev_exec(const char *path, const char* subsystem) { - pid_t pid; - char action[] = "ACTION=add"; - char devpath[MAX_PATHLEN]; - char nosleep[] = "UDEV_NO_SLEEP=1"; - char *env[] = { action, devpath, nosleep, NULL }; - - return; - strcpy(devpath, "DEVPATH="); - strfieldcat(devpath, path); - - pid = fork(); - switch (pid) { - case 0: - /* child */ - execle(UDEV_BIN, "udev", subsystem, NULL, env); - dbg("exec of child failed"); + /* Now call __udev_hotplug(). */ + if (__udev_hotplug("add", path, subsystem)) { + dbg("Calling of udev_hotplug failed"); exit(1); - break; - case -1: - dbg("fork of child failed"); - break; - default: - wait(NULL); } } @@ -229,7 +197,7 @@ static void udev_scan_class(void) continue; snprintf(dirname, MAX_PATHLEN, "%s/%s", SYSCLASS, dent->d_name); - dirname[MAX_PATHLEN] = '\0'; + dirname[MAX_PATHLEN-1] = '\0'; dir2 = opendir(dirname); if (dir2 != NULL) { for (dent2 = readdir(dir2); dent2 != NULL; dent2 = readdir(dir2)) { @@ -268,12 +236,9 @@ static void udev_scan_class(void) exec_list(&device_list); } -int main(int argc, char *argv[], char *envp[]) +int udev_start(void) { - init_logging("udevstart"); - udev_scan_class(); udev_scan_block(); - return 0; }