logging_init("udev");
if (devnull < 0)
- err("fatal, could not open /dev/null");
+ err("fatal, could not open /dev/null: %s", strerror(errno));
udev_init_config();
dbg("version %s", UDEV_VERSION);
}
if (unlink(file) != 0)
- dbg("unlink(%s) failed with error '%s'", file, strerror(errno));
+ dbg("unlink(%s) failed: %s", file, strerror(errno));
else
dbg("already present file '%s' unlinked", file);
retval = mknod(file, mode, devt);
selinux_resetfscreatecon();
if (retval != 0) {
- err("mknod(%s, %#o, %u, %u) failed with error '%s'",
+ err("mknod(%s, %#o, %u, %u) failed: %s",
file, mode, major(devt), minor(devt), strerror(errno));
goto exit;
}
perms:
dbg("chmod(%s, %#o)", file, mode);
if (chmod(file, mode) != 0) {
- dbg("chmod(%s, %#o) failed with error '%s'", file, mode, strerror(errno));
+ dbg("chmod(%s, %#o) failed: %s", file, mode, strerror(errno));
goto exit;
}
if (uid != 0 || gid != 0) {
dbg("chown(%s, %u, %u)", file, uid, gid);
if (chown(file, uid, gid) != 0) {
- dbg("chown(%s, %u, %u) failed with error '%s'",
+ dbg("chown(%s, %u, %u) failed: %s",
file, uid, gid, strerror(errno));
goto exit;
}
retval = symlink(linktarget, filename);
selinux_resetfscreatecon();
if (retval != 0)
- dbg("symlink(%s, %s) failed with error '%s'",
+ dbg("symlink(%s, %s) failed: %s",
linktarget, filename, strerror(errno));
}
}
sk = socket(PF_INET, SOCK_DGRAM, 0);
if (sk < 0) {
- dbg("error opening socket");
+ dbg("error opening socket: %s", strerror(errno));
return -1;
}
retval = ioctl(sk, SIOCSIFNAME, &ifr);
if (retval != 0)
- dbg("error changing net interface name");
+ dbg("error changing net interface name: %s", strerror(errno));
close(sk);
return retval;
int retval = 0;
if (file_map(udev_config_filename, &buf, &bufsize) != 0) {
- err("can't open '%s' as config file", udev_config_filename);
+ err("can't open '%s' as config file: %s", udev_config_filename, strerror(errno));
return -ENODEV;
}
create_path(filename);
f = fopen(filename, "w");
if (f == NULL) {
- err("unable to create db file '%s'", filename);
+ err("unable to create db file '%s': %s", filename, strerror(errno));
return -1;
}
dbg("storing data for device '%s' in '%s'", udev->devpath, filename);
devpath_to_db_path(devpath, filename, sizeof(filename));
if (file_map(filename, &buf, &bufsize) != 0) {
- dbg("no db file to read '%s'", filename);
+ dbg("no db file to read %s: %s", filename, strerror(errno));
return -1;
}
dir = opendir(udev_db_path);
if (dir == NULL) {
- err("unable to open udev_db '%s'", udev_db_path);
+ err("unable to open udev_db '%s': %s", udev_db_path, strerror(errno));
return -1;
}
dbg("looking at '%s'", filename);
if (file_map(filename, &buf, &bufsize) != 0) {
- err("unable to read db file '%s'", filename);
+ err("unable to read db file '%s': %s", filename, strerror(errno));
continue;
}
dir = opendir(udev_db_path);
if (dir == NULL) {
- err("unable to open udev_db '%s'", udev_db_path);
+ err("unable to open udev_db '%s': %s", udev_db_path, strerror(errno));
return -1;
}
char *tail;
if (file_map(dbfile, &buf, &bufsize) != 0) {
- dbg("can't open '%s' as db file", dbfile);
+ dbg("can't open '%s' as db file: %s", dbfile, strerror(errno));
return 0;
}
dbg("search '%s' in '%s'", uname, dbfile);
if (retval) {
if (errno == ENOTEMPTY)
return 0;
- dbg("rmdir(%s) failed with error '%s'",
- path, strerror(errno));
+ dbg("rmdir(%s) failed: %s", path, strerror(errno));
break;
}
dbg("removed '%s'", path);
dbg("remove name='%s'", udev->name);
udev_db_delete_device(udev);
} else {
- dbg("'%s' not found in database, using kernel name '%s'", udev->devpath, udev->kernel_name);
- strlcpy(udev->name, udev->kernel_name, sizeof(udev->name));
+ dbg("'%s' not found in database, don't remove anything", udev->devpath);
+ return -1;
}
return delete_node(udev);
size_t bufsize;
if (file_map(filename, &buf, &bufsize) != 0) {
- err("can't open '%s'", filename);
+ err("can't open '%s': %s", filename, strerror(errno));
return -1;
}
import_keys_into_env(udev, buf, bufsize);
int retval = 0;
if (file_map(filename, &buf, &bufsize) != 0) {
- err("can't open '%s' as rules file", filename);
+ err("can't open '%s' as rules file: %s", filename, strerror(errno));
return -1;
}
dbg("reading '%s' as rules file", filename);
}
if (setfilecon(file, scontext) < 0)
- dbg("setfilecon %s failed with error '%s'", file, strerror(errno));
+ dbg("setfilecon %s failed: %s", file, strerror(errno));
freecon(scontext);
}
}
if (setfscreatecon(scontext) < 0)
- dbg("setfscreatecon %s failed with error '%s'", file, strerror(errno));
+ dbg("setfscreatecon %s failed: %s", file, strerror(errno));
freecon(scontext);
}
{
if (is_selinux_running()) {
if (setfscreatecon(prev_scontext) < 0)
- dbg("setfscreatecon %s failed with error '%s'", file, strerror(errno));
+ dbg("setfscreatecon failed: %s", strerror(errno));
}
}
dbg("open directory '%s'", dirname);
dir = opendir(dirname);
if (dir == NULL) {
- dbg("unable to open '%s'", dirname);
+ dbg("unable to open '%s': %s", dirname, strerror(errno));
return -1;
}
retval = chown(filename, 0, 0);
if (retval)
- dbg("chown(%s, 0, 0) failed with error '%s'", filename, strerror(errno));
+ dbg("chown(%s, 0, 0) failed: %s", filename, strerror(errno));
retval = chmod(filename, 0000);
if (retval)
- dbg("chmod(%s, 0000) failed with error '%s'", filename, strerror(errno));
+ dbg("chmod(%s, 0000) failed: %s", filename, strerror(errno));
retval = unlink(filename);
if (errno == ENOENT)
retval = 0;
if (retval)
- dbg("unlink(%s) failed with error '%s'", filename, strerror(errno));
+ dbg("unlink(%s) failed: %s", filename, strerror(errno));
return retval;
}
/* prepare pipes from child to parent */
if (result || log) {
if (pipe(outpipe) != 0) {
- err("pipe failed");
+ err("pipe failed: %s", strerror(errno));
return -1;
}
}
if (log) {
if (pipe(errpipe) != 0) {
- err("pipe failed");
+ err("pipe failed: %s", strerror(errno));
return -1;
}
}
dup2(devnull, STDERR_FILENO);
close(devnull);
} else
- err("open /dev/null failed");
+ err("open /dev/null failed: %s", strerror(errno));
if (outpipe[WRITE_END] > 0)
dup2(outpipe[WRITE_END], STDOUT_FILENO);
if (errpipe[WRITE_END] > 0)
err("exec of program '%s' failed", argv[0]);
_exit(1);
case -1:
- err("fork of '%s' failed", argv[0]);
+ err("fork of '%s' failed: %s", argv[0], strerror(errno));
return -1;
default:
/* read from child if requested */
close(outpipe[READ_END]);
outpipe[READ_END] = -1;
if (count < 0) {
- err("stdin read failed with '%s'", strerror(errno));
+ err("stdin read failed: %s", strerror(errno));
retval = -1;
}
continue;
close(errpipe[READ_END]);
errpipe[READ_END] = -1;
if (count < 0)
- err("stderr read failed with '%s'", strerror(errno));
+ err("stderr read failed: %s", strerror(errno));
continue;
}
errbuf[count] = '\0';
sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (sock == -1) {
- err("error getting socket");
+ err("error getting socket: %s", strerror(errno));
goto exit;
}
retval = sendto(sock, &usend_msg, sizeof(usend_msg), 0, (struct sockaddr *)&saddr, addrlen);
if (retval == -1) {
- info("error sending message (%s)", strerror(errno));
+ err("error sending message: %s", strerror(errno));
retval = 1;
} else {
dbg("sent message type=0x%02x, %u bytes sent", usend_msg.type, retval);
logging_close();
exit(0);
case -1:
- err("fork of child failed");
+ err("fork of child failed: %s", strerror(errno));
msg_queue_delete(msg);
break;
default:
size = recvmsg(udevd_sock, &smsg, 0);
if (size < 0) {
if (errno != EINTR)
- err("unable to receive udevd message");
+ err("unable to receive udevd message: %s", strerror(errno));
return NULL;
}
cmsg = CMSG_FIRSTHDR(&smsg);
size = recv(uevent_netlink_sock, &buffer, sizeof(buffer), 0);
if (size < 0) {
if (errno != EINTR)
- err("unable to receive udevd message");
+ err("unable to receive udevd message: %s", strerror(errno));
return NULL;
}
udevd_sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (udevd_sock == -1) {
- err("error getting socket, %s", strerror(errno));
+ err("error getting socket: %s", strerror(errno));
return -1;
}
/* the bind takes care of ensuring only one copy running */
retval = bind(udevd_sock, (struct sockaddr *) &saddr, addrlen);
if (retval < 0) {
- err("bind failed, %s", strerror(errno));
+ err("bind failed: %s", strerror(errno));
return -1;
}
uevent_netlink_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
if (uevent_netlink_sock == -1) {
- err("error getting socket, %s", strerror(errno));
+ err("error getting socket: %s", strerror(errno));
return -1;
}
retval = bind(uevent_netlink_sock, (struct sockaddr *) &snl, sizeof(struct sockaddr_nl));
if (retval < 0) {
- err("bind failed, %s", strerror(errno));
+ err("bind failed: %s", strerror(errno));
close(uevent_netlink_sock);
uevent_netlink_sock = -1;
return -1;
logging_init("udevd");
if (fd < 0)
- err("fatal, could not open /dev/null");
+ err("fatal, could not open /dev/null: %s", strerror(errno));
udev_init_config();
dbg("version %s", UDEV_VERSION);
dbg("daemonized fork running");
break;
case -1:
- err("fork of daemon failed");
+ err("fork of daemon failed: %s", strerror(errno));
rc = 4;
goto exit;
default:
/* OOM_DISABLE == -17 */
fd = open("/proc/self/oom_adj", O_RDWR);
if (fd < 0)
- err("error disabling OOM");
+ err("error disabling OOM: %s", strerror(errno));
else {
write(fd, "-17", 3);
close(fd);
snprintf(buf, FNSIZE, "/events/debug.%05lu.%s.%s.%u", seq, argv[1], a ? a : "", getpid());
if ((fd = open(buf, O_CREAT | O_WRONLY | O_TRUNC, 0644)) < 0) {
- err("error creating '%s'", buf);
+ err("error creating '%s': %s", buf, strerror(errno));
goto error;
}
free(buf);
udev_monitor_sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (udev_monitor_sock == -1) {
- fprintf(stderr, "error getting socket, %s\n", strerror(errno));
+ fprintf(stderr, "error getting socket: %s\n", strerror(errno));
return -1;
}
/* the bind takes care of ensuring only one copy running */
retval = bind(udev_monitor_sock, (struct sockaddr *) &saddr, addrlen);
if (retval < 0) {
- fprintf(stderr, "bind failed, %s\n", strerror(errno));
+ fprintf(stderr, "bind failed: %s\n", strerror(errno));
close(udev_monitor_sock);
udev_monitor_sock = -1;
return -1;
uevent_netlink_sock = socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT);
if (uevent_netlink_sock == -1) {
- fprintf(stderr, "error getting socket, %s\n", strerror(errno));
+ fprintf(stderr, "error getting socket: %s\n", strerror(errno));
return -1;
}
retval = bind(uevent_netlink_sock, (struct sockaddr *) &snl,
sizeof(struct sockaddr_nl));
if (retval < 0) {
- fprintf(stderr, "bind failed, %s\n", strerror(errno));
+ fprintf(stderr, "bind failed: %s\n", strerror(errno));
close(uevent_netlink_sock);
uevent_netlink_sock = -1;
return -1;
fdcount = select(UDEV_MAX(uevent_netlink_sock, udev_monitor_sock)+1, &readfds, NULL, NULL, NULL);
if (fdcount < 0) {
if (errno != EINTR)
- fprintf(stderr, "error receiving uevent message\n");
+ fprintf(stderr, "error receiving uevent message: %s\n", strerror(errno));
continue;
}
if ((uevent_netlink_sock > 0) && FD_ISSET(uevent_netlink_sock, &readfds)) {
buflen = recv(uevent_netlink_sock, &buf, sizeof(buf), 0);
if (buflen <= 0) {
- fprintf(stderr, "error receiving uevent message\n");
+ fprintf(stderr, "error receiving uevent message: %s\n", strerror(errno));
continue;
}
printf("UEVENT[%s] %s\n", timestr, buf);
if ((udev_monitor_sock > 0) && FD_ISSET(udev_monitor_sock, &readfds)) {
buflen = recv(udev_monitor_sock, &buf, sizeof(buf), 0);
if (buflen <= 0) {
- fprintf(stderr, "error receiving udev message\n");
+ fprintf(stderr, "error receiving udev message: %s\n", strerror(errno));
continue;
}
printf("UDEV [%s] %s\n", timestr, buf);
/* daemon with empty environment */
close(sock);
execve(UDEVD_BIN, argv, envp);
- err("exec of daemon failed");
+ err("exec of daemon failed: %s", strerror(errno));
_exit(1);
case -1:
- err("fork of daemon failed");
+ err("fork of daemon failed: %s", strerror(errno));
return -1;
default:
exit(0);
}
break;
case -1:
- err("fork of helper failed");
+ err("fork of helper failed: %s", strerror(errno));
return -1;
default:
waitpid(pid, NULL, 0);
sock = socket(AF_LOCAL, SOCK_DGRAM, 0);
if (sock == -1) {
- err("error getting socket");
+ err("error getting socket: %s", strerror(errno));
goto exit;
}
}
if (errno != ECONNREFUSED) {
- err("error sending message (%s)", strerror(errno));
+ err("error sending message: %s", strerror(errno));
goto exit;
}