Thanks to: Marco d'Itri <md@Linux.IT> for the initial patch.
Signed-off-by: Kay Sievers <kay.sievers@suse.de>
strncpy(&usend_msg.envbuf[bufpos],ls,(ch - ls) + 1);
bufpos += (ch - ls) + 1;
if (ch[1] == '\'' && le[-1] == '\'') {
strncpy(&usend_msg.envbuf[bufpos],ls,(ch - ls) + 1);
bufpos += (ch - ls) + 1;
if (ch[1] == '\'' && le[-1] == '\'') {
retval = sendto(sock, &usend_msg, usend_msg_len, 0, (struct sockaddr *)&saddr, addrlen);
if (retval < 0) {
dbg("error sending message (%s)", strerror(errno));
retval = sendto(sock, &usend_msg, usend_msg_len, 0, (struct sockaddr *)&saddr, addrlen);
if (retval < 0) {
dbg("error sending message (%s)", strerror(errno));
char *event_file = NULL;
DIR *dirstream;
struct dirent *direntry;
char *event_file = NULL;
DIR *dirstream;
struct dirent *direntry;
int disable_loop_detection = 0;
int sock;
const char *env;
int disable_loop_detection = 0;
int sock;
const char *env;
if (!dirstream) {
info("error opening directory %s: %s\n",
event_dir, strerror(errno));
if (!dirstream) {
info("error opening directory %s: %s\n",
event_dir, strerror(errno));
}
chdir(event_dir);
while ((direntry = readdir(dirstream)) != NULL) {
}
chdir(event_dir);
while ((direntry = readdir(dirstream)) != NULL) {
if (sock != -1)
close(sock);
if (sock != -1)
close(sock);
+ if (retval)
+ return 3;
+ return 0;
if (retval < 0) {
fprintf(stderr, "bind failed, %s\n", strerror(errno));
close(udev_monitor_sock);
if (retval < 0) {
fprintf(stderr, "bind failed, %s\n", strerror(errno));
close(udev_monitor_sock);
+ udev_monitor_sock = -1;
if (getuid() != 0) {
fprintf(stderr, "need to be root, exit\n\n");
if (getuid() != 0) {
fprintf(stderr, "need to be root, exit\n\n");
}
retval = init_udev_monitor_socket();
if (retval)
goto out;
}
retval = init_udev_monitor_socket();
if (retval)
goto out;
- init_uevent_netlink_sock();
+ retval = init_uevent_netlink_sock();
+ if (retval)
+ goto out;
printf("udevmonitor prints the received event from the kernel [UEVENT]\n"
"and the event which udev sends out after rule processing [UDEV]\n\n");
printf("udevmonitor prints the received event from the kernel [UEVENT]\n"
"and the event which udev sends out after rule processing [UDEV]\n\n");
if (udev_monitor_sock > 0)
close(udev_monitor_sock);
if (udev_monitor_sock > 0)
close(udev_monitor_sock);
+ if (retval)
+ return 3;
+ return 0;