util_strscpy(&udev_monitor->sun.sun_path[1], sizeof(udev_monitor->sun.sun_path)-1, socket_path);
udev_monitor->addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(socket_path)+1;
}
- udev_monitor->sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
+ udev_monitor->sock = socket(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0);
if (udev_monitor->sock == -1) {
err(udev, "error getting socket: %m\n");
free(udev_monitor);
return NULL;
}
- util_set_fd_cloexec(udev_monitor->sock);
dbg(udev, "monitor %p created with '%s'\n", udev_monitor, socket_path);
return udev_monitor;
if (udev_monitor == NULL)
return NULL;
- udev_monitor->sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
+ udev_monitor->sock = socket(PF_NETLINK, SOCK_DGRAM|SOCK_CLOEXEC, NETLINK_KOBJECT_UEVENT);
if (udev_monitor->sock == -1) {
err(udev, "error getting socket: %m\n");
free(udev_monitor);
return NULL;
}
- util_set_fd_cloexec(udev_monitor->sock);
udev_monitor->snl.nl_family = AF_NETLINK;
udev_monitor->snl.nl_groups = group;
/*
* get the address the kernel has assigned us
- * it is usually, but not neccessarily the pid
+ * it is usually, but not necessarily the pid
*/
addrlen = sizeof(struct sockaddr_nl);
err = getsockname(udev_monitor->sock, (struct sockaddr *)&snl, &addrlen);
int action_set = 0;
int maj = 0;
int min = 0;
- int is_kernel = 0;
retry:
if (udev_monitor == NULL)
}
} else if (snl.nl_groups == UDEV_MONITOR_KERNEL) {
if (snl.nl_pid > 0) {
- info(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n", snl.nl_pid);
+ info(udev_monitor->udev, "multicast kernel netlink message from pid %d ignored\n",
+ snl.nl_pid);
return NULL;
}
- is_kernel = 1;
}
}
}
udev_device = udev_device_new(udev_monitor->udev);
- if (udev_device == NULL) {
+ if (udev_device == NULL)
return NULL;
- }
while (bufpos < buflen) {
char *key;
} else if (strncmp(key, "DEVTYPE=", 8) == 0) {
udev_device_set_devtype(udev_device, &key[8]);
} else if (strncmp(key, "DEVNAME=", 8) == 0) {
- if (is_kernel)
- udev_device_set_knodename(udev_device, &key[8]);
- else
+ if (key[8] == '/')
udev_device_set_devnode(udev_device, &key[8]);
+ else
+ udev_device_set_knodename(udev_device, &key[8]);
} else if (strncmp(key, "DEVLINKS=", 9) == 0) {
char devlinks[UTIL_PATH_SIZE];
char *slink;
next = strchr(slink, ' ');
while (next != NULL) {
next[0] = '\0';
- udev_device_add_devlink(udev_device, slink);
+ udev_device_add_devlink(udev_device, slink, 0);
slink = &next[1];
next = strchr(slink, ' ');
}
if (slink[0] != '\0')
- udev_device_add_devlink(udev_device, slink);
+ udev_device_add_devlink(udev_device, slink, 0);
} else if (strncmp(key, "DRIVER=", 7) == 0) {
udev_device_set_driver(udev_device, &key[7]);
} else if (strncmp(key, "ACTION=", 7) == 0) {
/*
* Use custom address for target, or the default one.
*
- * If we send to a muticast group, we will get
+ * If we send to a multicast group, we will get
* ECONNREFUSED, which is expected.
*/
if (destination != NULL)
* udev_monitor_filter_add_match_subsystem_devtype:
* @udev_monitor: the monitor
* @subsystem: the subsystem value to match the incoming devices against
- * @devtype: the devtype value to matvh the incoming devices against
+ * @devtype: the devtype value to match the incoming devices against
*
* The filter must be installed before the monitor is switched to listening mode.
*