sysfs_init();
/* defaults */
- config_file = NULL;
udev->refcount = 1;
udev->log_fn = log_stderr;
udev->log_priority = LOG_ERR;
udev->sys_path = strdup("/sys");
config_file = strdup(SYSCONFDIR "/udev/udev.conf");
- if (udev->dev_path == NULL || udev->sys_path == NULL)
+ if (udev->dev_path == NULL ||
+ udev->sys_path == NULL ||
+ config_file == NULL)
goto err;
/* settings by environment and config file */
}
fclose(f);
}
- free(config_file);
env = getenv("UDEV_ROOT");
if (env != NULL) {
info(udev, "context %p created\n", udev);
info(udev, "log_priority=%d\n", udev->log_priority);
+ info(udev, "config_file='%s'\n", config_file);
info(udev, "dev_path='%s'\n", udev->dev_path);
+ info(udev, "sys_path='%s'\n", udev->sys_path);
if (udev->rules_path != NULL)
info(udev, "rules_path='%s'\n", udev->rules_path);
+ free(config_file);
return udev;
err:
+ free(config_file);
err(udev, "context creation failed\n");
udev_unref(udev);
return NULL;
sysfs_cleanup();
free(udev->dev_path);
free(udev->sys_path);
+ free(udev->rules_path);
info(udev, "context %p released\n", udev);
free(udev);
}
dbg(udev, "version %s\n", VERSION);
selinux_init(udev);
- /* set std fd's to /dev/null, /sbin/hotplug forks us, we don't have them at all */
- devnull = open("/dev/null", O_RDWR);
- if (devnull >= 0) {
- if (devnull != STDIN_FILENO)
- dup2(devnull, STDIN_FILENO);
- if (devnull != STDOUT_FILENO)
- dup2(devnull, STDOUT_FILENO);
- if (devnull != STDERR_FILENO)
- dup2(devnull, STDERR_FILENO);
- if (devnull > STDERR_FILENO)
- close(devnull);
- } else {
- err(udev, "open /dev/null failed: %s\n", strerror(errno));
- }
-
/* set signal handlers */
memset(&act, 0x00, sizeof(act));
act.sa_handler = (void (*)(int)) sig_handler;
udev_rules_cleanup(&rules);
sysfs_cleanup();
selinux_exit(udev);
-
exit:
+ udev_unref(udev);
if (retval != 0)
return 1;
return 0;