X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fudev%2Fudevd.c;h=23351aebd5685b9c02e51af23e0ad2a34d30036b;hb=dbf61afb29e016fe1b4ac48312a782df1d60a3e6;hp=e635795fb6575729d5469c0260905c9e86cde7d7;hpb=72a2af7aa9d9f64f320b3f2cc21e78f11b811f1e;p=elogind.git diff --git a/src/udev/udevd.c b/src/udev/udevd.c index e635795fb..23351aebd 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -806,8 +806,8 @@ static void static_dev_create_from_modules(struct udev *udev) FILE *f; uname(&kernel); - util_strscpyl(modules, sizeof(modules), "/lib/modules/", kernel.release, "/modules.devname", NULL); - f = fopen(modules, "r"); + util_strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL); + f = fopen(modules, "re"); if (f == NULL) return; @@ -845,10 +845,11 @@ static void static_dev_create_from_modules(struct udev *udev) if (sscanf(devno, "%c%u:%u", &type, &maj, &min) != 3) continue; + mode = 0600; if (type == 'c') - mode = S_IFCHR; + mode |= S_IFCHR; else if (type == 'b') - mode = S_IFBLK; + mode |= S_IFBLK; else continue; @@ -870,7 +871,7 @@ static int mem_size_mb(void) char buf[4096]; long int memsize = -1; - f = fopen("/proc/meminfo", "r"); + f = fopen("/proc/meminfo", "re"); if (f == NULL) return -1; @@ -890,7 +891,6 @@ static int mem_size_mb(void) static int convert_db(struct udev *udev) { char filename[UTIL_PATH_SIZE]; - FILE *f; struct udev_enumerate *udev_enumerate; struct udev_list_entry *list_entry; @@ -899,19 +899,14 @@ static int convert_db(struct udev *udev) return 0; /* make sure we do not get here again */ - mkdir_parents("/run/udev/data", 0755); - mkdir(filename, 0755); + mkdir_p("/run/udev/data", 0755); /* old database */ util_strscpyl(filename, sizeof(filename), "/dev/.udev/db", NULL); if (access(filename, F_OK) < 0) return 0; - f = fopen("/dev/kmsg", "w"); - if (f != NULL) { - fprintf(f, "<30>systemd-udevd[%u]: converting old udev database\n", getpid()); - fclose(f); - } + print_kmsg("converting old udev database\n"); udev_enumerate = udev_enumerate_new(udev); if (udev_enumerate == NULL) @@ -1040,14 +1035,17 @@ static void kernel_cmdline_options(struct udev *udev) else opt = s; - if (startswith(opt, "udev.log-priority=")) - udev_set_log_priority(udev, util_log_priority(opt + 18)); + if (startswith(opt, "udev.log-priority=")) { + int prio; - if (startswith(opt, "udev.children-max=")) + prio = util_log_priority(opt + 18); + log_set_max_level(prio); + udev_set_log_priority(udev, prio); + } else if (startswith(opt, "udev.children-max=")) { children_max = strtoul(opt + 18, NULL, 0); - - if (startswith(opt, "udev.exec-delay=")) + } else if (startswith(opt, "udev.exec-delay=")) { exec_delay = strtoul(opt + 16, NULL, 0); + } free(s); } @@ -1058,7 +1056,6 @@ static void kernel_cmdline_options(struct udev *udev) int main(int argc, char *argv[]) { struct udev *udev; - FILE *f; sigset_t mask; int daemonize = false; int resolve_names = 1; @@ -1083,8 +1080,9 @@ int main(int argc, char *argv[]) if (udev == NULL) goto exit; - log_open(); + log_set_target(LOG_TARGET_AUTO); log_parse_environment(); + log_open(); udev_set_log_fn(udev, udev_main_log); log_debug("version %s\n", VERSION); label_init("/dev"); @@ -1109,7 +1107,7 @@ int main(int argc, char *argv[]) case 'D': debug = true; log_set_max_level(LOG_DEBUG); - udev_set_log_priority(udev, LOG_INFO); + udev_set_log_priority(udev, LOG_DEBUG); break; case 'N': if (strcmp (optarg, "early") == 0) { @@ -1264,11 +1262,7 @@ int main(int argc, char *argv[]) sd_notify(1, "READY=1"); } - f = fopen("/dev/kmsg", "w"); - if (f != NULL) { - fprintf(f, "<30>systemd-udevd[%u]: starting version " VERSION "\n", getpid()); - fclose(f); - } + print_kmsg("starting version " VERSION "\n"); if (!debug) { int fd; @@ -1492,7 +1486,7 @@ int main(int argc, char *argv[]) worker_kill(udev); rules = udev_rules_unref(rules); udev_builtin_exit(udev); - reload = 0; + reload = false; } /* event has finished */ @@ -1512,6 +1506,7 @@ int main(int argc, char *argv[]) /* start new events */ if (!udev_list_node_is_empty(&event_list) && !udev_exit && !stop_exec_queue) { + udev_builtin_init(udev); if (rules == NULL) rules = udev_rules_new(udev, resolve_names); if (rules != NULL)