{ "debug-trace", 0, NULL, 't' },
{ "verbose", 0, NULL, 'v' },
{ "help", 0, NULL, 'h' },
+ { "version", 0, NULL, 'V' },
{}
};
int rc = 1;
/* parse commandline options */
while (1) {
- option = getopt_long(argc, argv, "dtvh", options, NULL);
+ option = getopt_long(argc, argv, "dtvhV", options, NULL);
if (option == -1)
break;
udev_log_priority = LOG_INFO;
break;
case 'h':
- printf("Usage: udevd [--help] [--daemon] [--debug-trace] [--verbose]\n");
+ printf("Usage: udevd [--help] [--daemon] [--debug-trace] [--verbose] [--version]\n");
+ goto exit;
+ case 'V':
+ printf("%s\n", UDEV_VERSION);
goto exit;
default:
goto exit;
goto exit;
}
+ /* setup signal handler pipe */
+ retval = pipe(signal_pipe);
+ if (retval < 0) {
+ err("error getting pipes: %s", strerror(errno));
+ goto exit;
+ }
+
+ retval = fcntl(signal_pipe[READ_END], F_GETFL, 0);
+ if (retval < 0) {
+ err("error fcntl on read pipe: %s", strerror(errno));
+ goto exit;
+ }
+ retval = fcntl(signal_pipe[READ_END], F_SETFL, retval | O_NONBLOCK);
+ if (retval < 0) {
+ err("error fcntl on read pipe: %s", strerror(errno));
+ goto exit;
+ }
+
+ retval = fcntl(signal_pipe[WRITE_END], F_GETFL, 0);
+ if (retval < 0) {
+ err("error fcntl on write pipe: %s", strerror(errno));
+ goto exit;
+ }
+ retval = fcntl(signal_pipe[WRITE_END], F_SETFL, retval | O_NONBLOCK);
+ if (retval < 0) {
+ err("error fcntl on write pipe: %s", strerror(errno));
+ goto exit;
+ }
+
/* parse the rules and keep them in memory */
sysfs_init();
udev_rules_init(&rules, 1);
close(fd);
}
- /* setup signal handler pipe */
- retval = pipe(signal_pipe);
- if (retval < 0) {
- err("error getting pipes: %s", strerror(errno));
- goto exit;
- }
-
- retval = fcntl(signal_pipe[READ_END], F_GETFL, 0);
- if (retval < 0) {
- err("error fcntl on read pipe: %s", strerror(errno));
- goto exit;
- }
- retval = fcntl(signal_pipe[READ_END], F_SETFL, retval | O_NONBLOCK);
- if (retval < 0) {
- err("error fcntl on read pipe: %s", strerror(errno));
- goto exit;
- }
-
- retval = fcntl(signal_pipe[WRITE_END], F_GETFL, 0);
- if (retval < 0) {
- err("error fcntl on write pipe: %s", strerror(errno));
- goto exit;
- }
- retval = fcntl(signal_pipe[WRITE_END], F_SETFL, retval | O_NONBLOCK);
- if (retval < 0) {
- err("error fcntl on write pipe: %s", strerror(errno));
- goto exit;
- }
-
/* set signal handlers */
memset(&act, 0x00, sizeof(struct sigaction));
act.sa_handler = (void (*)(int)) sig_handler;
/* watch rules directory */
inotify_fd = inotify_init();
if (inotify_fd >= 0)
- inotify_add_watch(inotify_fd, udev_rules_filename, IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
+ inotify_add_watch(inotify_fd, udev_rules_dir, IN_CREATE | IN_DELETE | IN_MOVE | IN_CLOSE_WRITE);
else if (errno == ENOSYS)
err("the kernel does not support inotify, udevd can't monitor configuration file changes");
else