log: log_error() and friends add a newline after each line anyway, so avoid including it in the log strings

This commit is contained in:
Lennart Poettering 2013-12-24 16:39:37 +01:00
parent ae98841e63
commit 9f6445e34a
35 changed files with 432 additions and 432 deletions

View File

@ -95,7 +95,7 @@ static int apply_file(const char *path, bool ignore_enoent) {
return r; return r;
} }
log_debug("apply: %s\n", path); log_debug("apply: %s", path);
for (;;) { for (;;) {
char l[LINE_MAX], *p; char l[LINE_MAX], *p;
int k; int k;

View File

@ -261,12 +261,12 @@ static void do_journal_append(char *file) {
f = open(file, O_RDONLY); f = open(file, O_RDONLY);
if (f < 0) { if (f < 0) {
log_error("Failed to read bootchart data: %m\n"); log_error("Failed to read bootchart data: %m");
return; return;
} }
n = loop_read(f, p + 10, BOOTCHART_MAX, false); n = loop_read(f, p + 10, BOOTCHART_MAX, false);
if (n < 0) { if (n < 0) {
log_error("Failed to read bootchart data: %s\n", strerror(-n)); log_error("Failed to read bootchart data: %s", strerror(-n));
close(f); close(f);
return; return;
} }

View File

@ -767,7 +767,7 @@ static int connect_bus(Context *c) {
r = sd_bus_request_name(c->bus, "org.freedesktop.DBus", 0); r = sd_bus_request_name(c->bus, "org.freedesktop.DBus", 0);
if (r < 0) { if (r < 0) {
log_error("Unable to request name: %s\n", strerror(-r)); log_error("Unable to request name: %s", strerror(-r));
return r; return r;
} }

View File

@ -384,7 +384,7 @@ int main(int argc, char *argv[]) {
in_fd = SD_LISTEN_FDS_START; in_fd = SD_LISTEN_FDS_START;
out_fd = SD_LISTEN_FDS_START; out_fd = SD_LISTEN_FDS_START;
} else { } else {
log_error("Illegal number of file descriptors passed\n"); log_error("Illegal number of file descriptors passed");
goto finish; goto finish;
} }

View File

@ -416,7 +416,7 @@ static int dump_core(sd_journal* j) {
r = sd_journal_previous(j); r = sd_journal_previous(j);
if (r >= 0) if (r >= 0)
log_warning("More than one entry matches, ignoring rest.\n"); log_warning("More than one entry matches, ignoring rest.");
return 0; return 0;
} }

View File

@ -60,7 +60,7 @@ int journal_file_append_tag(JournalFile *f) {
o->tag.seqnum = htole64(journal_file_tag_seqnum(f)); o->tag.seqnum = htole64(journal_file_tag_seqnum(f));
o->tag.epoch = htole64(FSPRG_GetEpoch(f->fsprg_state)); o->tag.epoch = htole64(FSPRG_GetEpoch(f->fsprg_state));
log_debug("Writing tag %"PRIu64" for epoch %"PRIu64"\n", log_debug("Writing tag %"PRIu64" for epoch %"PRIu64"",
le64toh(o->tag.seqnum), le64toh(o->tag.seqnum),
FSPRG_GetEpoch(f->fsprg_state)); FSPRG_GetEpoch(f->fsprg_state));

View File

@ -118,7 +118,7 @@ static int load_module(struct kmod_ctx *ctx, const char *m) {
struct kmod_list *itr, *modlist = NULL; struct kmod_list *itr, *modlist = NULL;
int r = 0; int r = 0;
log_debug("load: %s\n", m); log_debug("load: %s", m);
r = kmod_module_new_from_lookup(ctx, m, &modlist); r = kmod_module_new_from_lookup(ctx, m, &modlist);
if (r < 0) { if (r < 0) {
@ -186,7 +186,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent
return r; return r;
} }
log_debug("apply: %s\n", path); log_debug("apply: %s", path);
for (;;) { for (;;) {
char line[LINE_MAX], *l; char line[LINE_MAX], *l;
int k; int k;

View File

@ -486,7 +486,7 @@ bool paths_check_timestamp(char **paths, usec_t *timestamp, bool update) {
if (*timestamp >= u) if (*timestamp >= u)
continue; continue;
log_debug("timestamp of '%s' changed\n", *i); log_debug("timestamp of '%s' changed", *i);
/* update timestamp */ /* update timestamp */
if (update) { if (update) {

View File

@ -132,7 +132,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
return r; return r;
} }
log_debug("parse: %s\n", path); log_debug("parse: %s", path);
while (!feof(f)) { while (!feof(f)) {
char l[LINE_MAX], *p, *value, *new_value, *property, *existing; char l[LINE_MAX], *p, *value, *new_value, *property, *existing;
void *v; void *v;

View File

@ -100,20 +100,20 @@ int main(int argc, char *argv[]) {
if (udev == NULL) if (udev == NULL)
return EXIT_FAILURE; return EXIT_FAILURE;
log_debug("version %s\n", VERSION); log_debug("version %s", VERSION);
label_init("/dev"); label_init("/dev");
sigprocmask(SIG_SETMASK, NULL, &sigmask_orig); sigprocmask(SIG_SETMASK, NULL, &sigmask_orig);
action = argv[1]; action = argv[1];
if (action == NULL) { if (action == NULL) {
log_error("action missing\n"); log_error("action missing");
goto out; goto out;
} }
devpath = argv[2]; devpath = argv[2];
if (devpath == NULL) { if (devpath == NULL) {
log_error("devpath missing\n"); log_error("devpath missing");
goto out; goto out;
} }
@ -122,7 +122,7 @@ int main(int argc, char *argv[]) {
strscpyl(syspath, sizeof(syspath), "/sys", devpath, NULL); strscpyl(syspath, sizeof(syspath), "/sys", devpath, NULL);
dev = udev_device_new_from_syspath(udev, syspath); dev = udev_device_new_from_syspath(udev, syspath);
if (dev == NULL) { if (dev == NULL) {
log_debug("unknown device '%s'\n", devpath); log_debug("unknown device '%s'", devpath);
goto out; goto out;
} }

View File

@ -360,7 +360,7 @@ static int dir_cleanup(
continue; continue;
if (i->type != IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) { if (i->type != IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) {
log_debug("rmdir '%s'\n", sub_path); log_debug("rmdir '%s'", sub_path);
if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) { if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) {
if (errno != ENOENT && errno != ENOTEMPTY) { if (errno != ENOENT && errno != ENOTEMPTY) {
@ -408,7 +408,7 @@ static int dir_cleanup(
if (age >= cutoff) if (age >= cutoff)
continue; continue;
log_debug("unlink '%s'\n", sub_path); log_debug("unlink '%s'", sub_path);
if (unlinkat(dirfd(d), dent->d_name, 0) < 0) { if (unlinkat(dirfd(d), dent->d_name, 0) < 0) {
if (errno != ENOENT) { if (errno != ENOENT) {

View File

@ -335,7 +335,7 @@ int main (int argc, char** argv)
return 0; return 0;
} }
log_debug("opening accelerometer device %s\n", devnode); log_debug("opening accelerometer device %s", devnode);
test_orientation(udev, dev, devnode); test_orientation(udev, dev, devnode);
free(devnode); free(devnode);
log_close(); log_close();

View File

@ -463,14 +463,14 @@ int main(int argc, char *argv[])
node = argv[optind]; node = argv[optind];
if (node == NULL) { if (node == NULL) {
log_error("no node specified\n"); log_error("no node specified");
rc = 1; rc = 1;
goto exit; goto exit;
} }
fd = open(node, O_RDONLY|O_NONBLOCK); fd = open(node, O_RDONLY|O_NONBLOCK);
if (fd < 0) { if (fd < 0) {
log_error("unable to open '%s'\n", node); log_error("unable to open '%s'", node);
rc = 1; rc = 1;
goto exit; goto exit;
} }
@ -502,7 +502,7 @@ int main(int argc, char *argv[])
} else { } else {
/* If this fails, then try HDIO_GET_IDENTITY */ /* If this fails, then try HDIO_GET_IDENTITY */
if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) { if (ioctl(fd, HDIO_GET_IDENTITY, &id) != 0) {
log_debug("HDIO_GET_IDENTITY failed for '%s': %m\n", node); log_debug("HDIO_GET_IDENTITY failed for '%s': %m", node);
rc = 2; rc = 2;
goto close; goto close;
} }

View File

@ -138,10 +138,10 @@ static bool is_mounted(const char *device)
static void info_scsi_cmd_err(struct udev *udev, const char *cmd, int err) static void info_scsi_cmd_err(struct udev *udev, const char *cmd, int err)
{ {
if (err == -1) { if (err == -1) {
log_debug("%s failed\n", cmd); log_debug("%s failed", cmd);
return; return;
} }
log_debug("%s failed with SK=%Xh/ASC=%02Xh/ACQ=%02Xh\n", cmd, SK(err), ASC(err), ASCQ(err)); log_debug("%s failed with SK=%Xh/ASC=%02Xh/ACQ=%02Xh", cmd, SK(err), ASC(err), ASCQ(err));
} }
struct scsi_cmd { struct scsi_cmd {
@ -206,11 +206,11 @@ static int media_lock(struct udev *udev, int fd, bool lock)
/* disable the kernel's lock logic */ /* disable the kernel's lock logic */
err = ioctl(fd, CDROM_CLEAR_OPTIONS, CDO_LOCK); err = ioctl(fd, CDROM_CLEAR_OPTIONS, CDO_LOCK);
if (err < 0) if (err < 0)
log_debug("CDROM_CLEAR_OPTIONS, CDO_LOCK failed\n"); log_debug("CDROM_CLEAR_OPTIONS, CDO_LOCK failed");
err = ioctl(fd, CDROM_LOCKDOOR, lock ? 1 : 0); err = ioctl(fd, CDROM_LOCKDOOR, lock ? 1 : 0);
if (err < 0) if (err < 0)
log_debug("CDROM_LOCKDOOR failed\n"); log_debug("CDROM_LOCKDOOR failed");
return err; return err;
} }
@ -238,7 +238,7 @@ static int cd_capability_compat(struct udev *udev, int fd)
capability = ioctl(fd, CDROM_GET_CAPABILITY, NULL); capability = ioctl(fd, CDROM_GET_CAPABILITY, NULL);
if (capability < 0) { if (capability < 0) {
log_debug("CDROM_GET_CAPABILITY failed\n"); log_debug("CDROM_GET_CAPABILITY failed");
return -1; return -1;
} }
@ -262,7 +262,7 @@ static int cd_capability_compat(struct udev *udev, int fd)
static int cd_media_compat(struct udev *udev, int fd) static int cd_media_compat(struct udev *udev, int fd)
{ {
if (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) { if (ioctl(fd, CDROM_DRIVE_STATUS, CDSL_CURRENT) != CDS_DISC_OK) {
log_debug("CDROM_DRIVE_STATUS != CDS_DISC_OK\n"); log_debug("CDROM_DRIVE_STATUS != CDS_DISC_OK");
return -1; return -1;
} }
cd_media = 1; cd_media = 1;
@ -286,11 +286,11 @@ static int cd_inquiry(struct udev *udev, int fd)
} }
if ((inq[0] & 0x1F) != 5) { if ((inq[0] & 0x1F) != 5) {
log_debug("not an MMC unit\n"); log_debug("not an MMC unit");
return -1; return -1;
} }
log_debug("INQUIRY: [%.8s][%.16s][%.4s]\n", inq + 8, inq + 16, inq + 32); log_debug("INQUIRY: [%.8s][%.16s][%.4s]", inq + 8, inq + 16, inq + 32);
return 0; return 0;
} }
@ -300,105 +300,105 @@ static void feature_profile_media(struct udev *udev, int cur_profile)
case 0x03: case 0x03:
case 0x04: case 0x04:
case 0x05: case 0x05:
log_debug("profile 0x%02x \n", cur_profile); log_debug("profile 0x%02x ", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_mo = 1; cd_media_mo = 1;
break; break;
case 0x08: case 0x08:
log_debug("profile 0x%02x media_cd_rom\n", cur_profile); log_debug("profile 0x%02x media_cd_rom", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_cd_rom = 1; cd_media_cd_rom = 1;
break; break;
case 0x09: case 0x09:
log_debug("profile 0x%02x media_cd_r\n", cur_profile); log_debug("profile 0x%02x media_cd_r", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_cd_r = 1; cd_media_cd_r = 1;
break; break;
case 0x0a: case 0x0a:
log_debug("profile 0x%02x media_cd_rw\n", cur_profile); log_debug("profile 0x%02x media_cd_rw", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_cd_rw = 1; cd_media_cd_rw = 1;
break; break;
case 0x10: case 0x10:
log_debug("profile 0x%02x media_dvd_ro\n", cur_profile); log_debug("profile 0x%02x media_dvd_ro", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_rom = 1; cd_media_dvd_rom = 1;
break; break;
case 0x11: case 0x11:
log_debug("profile 0x%02x media_dvd_r\n", cur_profile); log_debug("profile 0x%02x media_dvd_r", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_r = 1; cd_media_dvd_r = 1;
break; break;
case 0x12: case 0x12:
log_debug("profile 0x%02x media_dvd_ram\n", cur_profile); log_debug("profile 0x%02x media_dvd_ram", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_ram = 1; cd_media_dvd_ram = 1;
break; break;
case 0x13: case 0x13:
log_debug("profile 0x%02x media_dvd_rw_ro\n", cur_profile); log_debug("profile 0x%02x media_dvd_rw_ro", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_rw = 1; cd_media_dvd_rw = 1;
cd_media_dvd_rw_ro = 1; cd_media_dvd_rw_ro = 1;
break; break;
case 0x14: case 0x14:
log_debug("profile 0x%02x media_dvd_rw_seq\n", cur_profile); log_debug("profile 0x%02x media_dvd_rw_seq", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_rw = 1; cd_media_dvd_rw = 1;
cd_media_dvd_rw_seq = 1; cd_media_dvd_rw_seq = 1;
break; break;
case 0x1B: case 0x1B:
log_debug("profile 0x%02x media_dvd_plus_r\n", cur_profile); log_debug("profile 0x%02x media_dvd_plus_r", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_plus_r = 1; cd_media_dvd_plus_r = 1;
break; break;
case 0x1A: case 0x1A:
log_debug("profile 0x%02x media_dvd_plus_rw\n", cur_profile); log_debug("profile 0x%02x media_dvd_plus_rw", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_plus_rw = 1; cd_media_dvd_plus_rw = 1;
break; break;
case 0x2A: case 0x2A:
log_debug("profile 0x%02x media_dvd_plus_rw_dl\n", cur_profile); log_debug("profile 0x%02x media_dvd_plus_rw_dl", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_plus_rw_dl = 1; cd_media_dvd_plus_rw_dl = 1;
break; break;
case 0x2B: case 0x2B:
log_debug("profile 0x%02x media_dvd_plus_r_dl\n", cur_profile); log_debug("profile 0x%02x media_dvd_plus_r_dl", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_dvd_plus_r_dl = 1; cd_media_dvd_plus_r_dl = 1;
break; break;
case 0x40: case 0x40:
log_debug("profile 0x%02x media_bd\n", cur_profile); log_debug("profile 0x%02x media_bd", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_bd = 1; cd_media_bd = 1;
break; break;
case 0x41: case 0x41:
case 0x42: case 0x42:
log_debug("profile 0x%02x media_bd_r\n", cur_profile); log_debug("profile 0x%02x media_bd_r", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_bd_r = 1; cd_media_bd_r = 1;
break; break;
case 0x43: case 0x43:
log_debug("profile 0x%02x media_bd_re\n", cur_profile); log_debug("profile 0x%02x media_bd_re", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_bd_re = 1; cd_media_bd_re = 1;
break; break;
case 0x50: case 0x50:
log_debug("profile 0x%02x media_hddvd\n", cur_profile); log_debug("profile 0x%02x media_hddvd", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_hddvd = 1; cd_media_hddvd = 1;
break; break;
case 0x51: case 0x51:
log_debug("profile 0x%02x media_hddvd_r\n", cur_profile); log_debug("profile 0x%02x media_hddvd_r", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_hddvd_r = 1; cd_media_hddvd_r = 1;
break; break;
case 0x52: case 0x52:
log_debug("profile 0x%02x media_hddvd_rw\n", cur_profile); log_debug("profile 0x%02x media_hddvd_rw", cur_profile);
cd_media = 1; cd_media = 1;
cd_media_hddvd_rw = 1; cd_media_hddvd_rw = 1;
break; break;
default: default:
log_debug("profile 0x%02x <ignored>\n", cur_profile); log_debug("profile 0x%02x <ignored>", cur_profile);
break; break;
} }
} }
@ -415,77 +415,77 @@ static int feature_profiles(struct udev *udev, const unsigned char *profiles, si
case 0x03: case 0x03:
case 0x04: case 0x04:
case 0x05: case 0x05:
log_debug("profile 0x%02x mo\n", profile); log_debug("profile 0x%02x mo", profile);
cd_mo = 1; cd_mo = 1;
break; break;
case 0x08: case 0x08:
log_debug("profile 0x%02x cd_rom\n", profile); log_debug("profile 0x%02x cd_rom", profile);
cd_cd_rom = 1; cd_cd_rom = 1;
break; break;
case 0x09: case 0x09:
log_debug("profile 0x%02x cd_r\n", profile); log_debug("profile 0x%02x cd_r", profile);
cd_cd_r = 1; cd_cd_r = 1;
break; break;
case 0x0A: case 0x0A:
log_debug("profile 0x%02x cd_rw\n", profile); log_debug("profile 0x%02x cd_rw", profile);
cd_cd_rw = 1; cd_cd_rw = 1;
break; break;
case 0x10: case 0x10:
log_debug("profile 0x%02x dvd_rom\n", profile); log_debug("profile 0x%02x dvd_rom", profile);
cd_dvd_rom = 1; cd_dvd_rom = 1;
break; break;
case 0x12: case 0x12:
log_debug("profile 0x%02x dvd_ram\n", profile); log_debug("profile 0x%02x dvd_ram", profile);
cd_dvd_ram = 1; cd_dvd_ram = 1;
break; break;
case 0x13: case 0x13:
case 0x14: case 0x14:
log_debug("profile 0x%02x dvd_rw\n", profile); log_debug("profile 0x%02x dvd_rw", profile);
cd_dvd_rw = 1; cd_dvd_rw = 1;
break; break;
case 0x1B: case 0x1B:
log_debug("profile 0x%02x dvd_plus_r\n", profile); log_debug("profile 0x%02x dvd_plus_r", profile);
cd_dvd_plus_r = 1; cd_dvd_plus_r = 1;
break; break;
case 0x1A: case 0x1A:
log_debug("profile 0x%02x dvd_plus_rw\n", profile); log_debug("profile 0x%02x dvd_plus_rw", profile);
cd_dvd_plus_rw = 1; cd_dvd_plus_rw = 1;
break; break;
case 0x2A: case 0x2A:
log_debug("profile 0x%02x dvd_plus_rw_dl\n", profile); log_debug("profile 0x%02x dvd_plus_rw_dl", profile);
cd_dvd_plus_rw_dl = 1; cd_dvd_plus_rw_dl = 1;
break; break;
case 0x2B: case 0x2B:
log_debug("profile 0x%02x dvd_plus_r_dl\n", profile); log_debug("profile 0x%02x dvd_plus_r_dl", profile);
cd_dvd_plus_r_dl = 1; cd_dvd_plus_r_dl = 1;
break; break;
case 0x40: case 0x40:
cd_bd = 1; cd_bd = 1;
log_debug("profile 0x%02x bd\n", profile); log_debug("profile 0x%02x bd", profile);
break; break;
case 0x41: case 0x41:
case 0x42: case 0x42:
cd_bd_r = 1; cd_bd_r = 1;
log_debug("profile 0x%02x bd_r\n", profile); log_debug("profile 0x%02x bd_r", profile);
break; break;
case 0x43: case 0x43:
cd_bd_re = 1; cd_bd_re = 1;
log_debug("profile 0x%02x bd_re\n", profile); log_debug("profile 0x%02x bd_re", profile);
break; break;
case 0x50: case 0x50:
cd_hddvd = 1; cd_hddvd = 1;
log_debug("profile 0x%02x hddvd\n", profile); log_debug("profile 0x%02x hddvd", profile);
break; break;
case 0x51: case 0x51:
cd_hddvd_r = 1; cd_hddvd_r = 1;
log_debug("profile 0x%02x hddvd_r\n", profile); log_debug("profile 0x%02x hddvd_r", profile);
break; break;
case 0x52: case 0x52:
cd_hddvd_rw = 1; cd_hddvd_rw = 1;
log_debug("profile 0x%02x hddvd_rw\n", profile); log_debug("profile 0x%02x hddvd_rw", profile);
break; break;
default: default:
log_debug("profile 0x%02x <ignored>\n", profile); log_debug("profile 0x%02x <ignored>", profile);
break; break;
} }
} }
@ -508,13 +508,13 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd)
if ((err != 0)) { if ((err != 0)) {
info_scsi_cmd_err(udev, "READ DISC INFORMATION", err); info_scsi_cmd_err(udev, "READ DISC INFORMATION", err);
if (cd_media == 1) { if (cd_media == 1) {
log_debug("no current profile, but disc is present; assuming CD-ROM\n"); log_debug("no current profile, but disc is present; assuming CD-ROM");
cd_media_cd_rom = 1; cd_media_cd_rom = 1;
cd_media_track_count = 1; cd_media_track_count = 1;
cd_media_track_count_data = 1; cd_media_track_count_data = 1;
return 0; return 0;
} else { } else {
log_debug("no current profile, assuming no media\n"); log_debug("no current profile, assuming no media");
return -1; return -1;
} }
}; };
@ -523,13 +523,13 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd)
if (header[2] & 16) { if (header[2] & 16) {
cd_media_cd_rw = 1; cd_media_cd_rw = 1;
log_debug("profile 0x0a media_cd_rw\n"); log_debug("profile 0x0a media_cd_rw");
} else if ((header[2] & 3) < 2 && cd_cd_r) { } else if ((header[2] & 3) < 2 && cd_cd_r) {
cd_media_cd_r = 1; cd_media_cd_r = 1;
log_debug("profile 0x09 media_cd_r\n"); log_debug("profile 0x09 media_cd_r");
} else { } else {
cd_media_cd_rom = 1; cd_media_cd_rom = 1;
log_debug("profile 0x08 media_cd_rom\n"); log_debug("profile 0x08 media_cd_rom");
} }
return 0; return 0;
} }
@ -557,8 +557,8 @@ static int cd_profiles(struct udev *udev, int fd)
info_scsi_cmd_err(udev, "GET CONFIGURATION", err); info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
/* handle pre-MMC2 drives which do not support GET CONFIGURATION */ /* handle pre-MMC2 drives which do not support GET CONFIGURATION */
if (SK(err) == 0x5 && ASC(err) == 0x20) { if (SK(err) == 0x5 && ASC(err) == 0x20) {
log_debug("drive is pre-MMC2 and does not support 46h get configuration command\n"); log_debug("drive is pre-MMC2 and does not support 46h get configuration command");
log_debug("trying to work around the problem\n"); log_debug("trying to work around the problem");
ret = cd_profiles_old_mmc(udev, fd); ret = cd_profiles_old_mmc(udev, fd);
} }
goto out; goto out;
@ -566,18 +566,18 @@ static int cd_profiles(struct udev *udev, int fd)
cur_profile = features[6] << 8 | features[7]; cur_profile = features[6] << 8 | features[7];
if (cur_profile > 0) { if (cur_profile > 0) {
log_debug("current profile 0x%02x\n", cur_profile); log_debug("current profile 0x%02x", cur_profile);
feature_profile_media (udev, cur_profile); feature_profile_media (udev, cur_profile);
ret = 0; /* we have media */ ret = 0; /* we have media */
} else { } else {
log_debug("no current profile, assuming no media\n"); log_debug("no current profile, assuming no media");
} }
len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3]; len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3];
log_debug("GET CONFIGURATION: size of features buffer 0x%04x\n", len); log_debug("GET CONFIGURATION: size of features buffer 0x%04x", len);
if (len > sizeof(features)) { if (len > sizeof(features)) {
log_debug("can not get features in a single query, truncating\n"); log_debug("can not get features in a single query, truncating");
len = sizeof(features); len = sizeof(features);
} else if (len <= 8) { } else if (len <= 8) {
len = sizeof(features); len = sizeof(features);
@ -597,10 +597,10 @@ static int cd_profiles(struct udev *udev, int fd)
/* parse the length once more, in case the drive decided to have other features suddenly :) */ /* parse the length once more, in case the drive decided to have other features suddenly :) */
len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3]; len = features[0] << 24 | features[1] << 16 | features[2] << 8 | features[3];
log_debug("GET CONFIGURATION: size of features buffer 0x%04x\n", len); log_debug("GET CONFIGURATION: size of features buffer 0x%04x", len);
if (len > sizeof(features)) { if (len > sizeof(features)) {
log_debug("can not get features in a single query, truncating\n"); log_debug("can not get features in a single query, truncating");
len = sizeof(features); len = sizeof(features);
} }
@ -612,11 +612,11 @@ static int cd_profiles(struct udev *udev, int fd)
switch (feature) { switch (feature) {
case 0x00: case 0x00:
log_debug("GET CONFIGURATION: feature 'profiles', with %i entries\n", features[i+3] / 4); log_debug("GET CONFIGURATION: feature 'profiles', with %i entries", features[i+3] / 4);
feature_profiles(udev, &features[i]+4, features[i+3]); feature_profiles(udev, &features[i]+4, features[i+3]);
break; break;
default: default:
log_debug("GET CONFIGURATION: feature 0x%04x <ignored>, with 0x%02x bytes\n", feature, features[i+3]); log_debug("GET CONFIGURATION: feature 0x%04x <ignored>, with 0x%02x bytes", feature, features[i+3]);
break; break;
} }
} }
@ -647,8 +647,8 @@ static int cd_media_info(struct udev *udev, int fd)
}; };
cd_media = 1; cd_media = 1;
log_debug("disk type %02x\n", header[8]); log_debug("disk type %02x", header[8]);
log_debug("hardware reported media status: %s\n", media_status[header[2] & 3]); log_debug("hardware reported media status: %s", media_status[header[2] & 3]);
/* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */ /* exclude plain CDROM, some fake cdroms return 0 for "blank" media here */
if (!cd_media_cd_rom) if (!cd_media_cd_rom)
@ -686,7 +686,7 @@ static int cd_media_info(struct udev *udev, int fd)
} }
if (dvdstruct[4] & 0x02) { if (dvdstruct[4] & 0x02) {
cd_media_state = media_status[2]; cd_media_state = media_status[2];
log_debug("write-protected DVD-RAM media inserted\n"); log_debug("write-protected DVD-RAM media inserted");
goto determined; goto determined;
} }
@ -703,13 +703,13 @@ static int cd_media_info(struct udev *udev, int fd)
len = format[3]; len = format[3];
if (len & 7 || len < 16) { if (len & 7 || len < 16) {
log_debug("invalid format capacities length\n"); log_debug("invalid format capacities length");
return -1; return -1;
} }
switch(format[8] & 3) { switch(format[8] & 3) {
case 1: case 1:
log_debug("unformatted DVD-RAM media inserted\n"); log_debug("unformatted DVD-RAM media inserted");
/* This means that last format was interrupted /* This means that last format was interrupted
* or failed, blank dvd-ram discs are factory * or failed, blank dvd-ram discs are factory
* formatted. Take no action here as it takes * formatted. Take no action here as it takes
@ -718,12 +718,12 @@ static int cd_media_info(struct udev *udev, int fd)
goto determined; goto determined;
case 2: case 2:
log_debug("formatted DVD-RAM media inserted\n"); log_debug("formatted DVD-RAM media inserted");
break; break;
case 3: case 3:
cd_media = 0; //return no media cd_media = 0; //return no media
log_debug("format capacities returned no media\n"); log_debug("format capacities returned no media");
return -1; return -1;
} }
} }
@ -759,9 +759,9 @@ static int cd_media_info(struct udev *udev, int fd)
if (!result) { if (!result) {
cd_media_state = media_status[0]; cd_media_state = media_status[0];
log_debug("no data in blocks 0 or 16, assuming blank\n"); log_debug("no data in blocks 0 or 16, assuming blank");
} else { } else {
log_debug("data in blocks 0 or 16, assuming complete\n"); log_debug("data in blocks 0 or 16, assuming complete");
} }
} }
@ -797,7 +797,7 @@ static int cd_media_toc(struct udev *udev, int fd)
} }
len = (header[0] << 8 | header[1]) + 2; len = (header[0] << 8 | header[1]) + 2;
log_debug("READ TOC: len: %d, start track: %d, end track: %d\n", len, header[2], header[3]); log_debug("READ TOC: len: %d, start track: %d, end track: %d", len, header[2], header[3]);
if (len > sizeof(toc)) if (len > sizeof(toc))
return -1; return -1;
if (len < 2) if (len < 2)
@ -831,7 +831,7 @@ static int cd_media_toc(struct udev *udev, int fd)
is_data_track = (p[1] & 0x04) != 0; is_data_track = (p[1] & 0x04) != 0;
block = p[4] << 24 | p[5] << 16 | p[6] << 8 | p[7]; block = p[4] << 24 | p[5] << 16 | p[6] << 8 | p[7];
log_debug("track=%u info=0x%x(%s) start_block=%u\n", log_debug("track=%u info=0x%x(%s) start_block=%u",
p[2], p[1] & 0x0f, is_data_track ? "data":"audio", block); p[2], p[1] & 0x0f, is_data_track ? "data":"audio", block);
if (is_data_track) if (is_data_track)
@ -851,7 +851,7 @@ static int cd_media_toc(struct udev *udev, int fd)
return -1; return -1;
} }
len = header[4+4] << 24 | header[4+5] << 16 | header[4+6] << 8 | header[4+7]; len = header[4+4] << 24 | header[4+5] << 16 | header[4+6] << 8 | header[4+7];
log_debug("last track %u starts at block %u\n", header[4+2], len); log_debug("last track %u starts at block %u", header[4+2], len);
cd_media_session_last_offset = (unsigned long long int)len * 2048; cd_media_session_last_offset = (unsigned long long int)len * 2048;
return 0; return 0;
} }
@ -920,7 +920,7 @@ int main(int argc, char *argv[])
node = argv[optind]; node = argv[optind];
if (!node) { if (!node) {
log_error("no device\n"); log_error("no device");
fprintf(stderr, "no device\n"); fprintf(stderr, "no device\n");
rc = 1; rc = 1;
goto exit; goto exit;
@ -938,12 +938,12 @@ int main(int argc, char *argv[])
nanosleep(&duration, NULL); nanosleep(&duration, NULL);
} }
if (fd < 0) { if (fd < 0) {
log_debug("unable to open '%s'\n", node); log_debug("unable to open '%s'", node);
fprintf(stderr, "unable to open '%s'\n", node); fprintf(stderr, "unable to open '%s'\n", node);
rc = 1; rc = 1;
goto exit; goto exit;
} }
log_debug("probing: '%s'\n", node); log_debug("probing: '%s'", node);
/* same data as original cdrom_id */ /* same data as original cdrom_id */
if (cd_capability_compat(udev, fd) < 0) { if (cd_capability_compat(udev, fd) < 0) {
@ -974,19 +974,19 @@ int main(int argc, char *argv[])
work: work:
/* lock the media, so we enable eject button events */ /* lock the media, so we enable eject button events */
if (lock && cd_media) { if (lock && cd_media) {
log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (lock)\n"); log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (lock)");
media_lock(udev, fd, true); media_lock(udev, fd, true);
} }
if (unlock && cd_media) { if (unlock && cd_media) {
log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)\n"); log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)");
media_lock(udev, fd, false); media_lock(udev, fd, false);
} }
if (eject) { if (eject) {
log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)\n"); log_debug("PREVENT_ALLOW_MEDIUM_REMOVAL (unlock)");
media_lock(udev, fd, false); media_lock(udev, fd, false);
log_debug("START_STOP_UNIT (eject)\n"); log_debug("START_STOP_UNIT (eject)");
media_eject(udev, fd); media_eject(udev, fd);
} }

View File

@ -86,7 +86,7 @@ int link_config_ctx_new(link_config_ctx **ret) {
} }
if (!path_strv_canonicalize_uniq(ctx->link_dirs)) { if (!path_strv_canonicalize_uniq(ctx->link_dirs)) {
log_error("failed to canonicalize link config directories\n"); log_error("failed to canonicalize link config directories");
return -ENOMEM; return -ENOMEM;
} }

View File

@ -184,7 +184,7 @@ static int get_file_options(struct udev *udev,
if (errno == ENOENT) if (errno == ENOENT)
return 1; return 1;
else { else {
log_error("can't open %s: %m\n", config_file); log_error("can't open %s: %m", config_file);
return -1; return -1;
} }
} }
@ -208,7 +208,7 @@ static int get_file_options(struct udev *udev,
break; break;
lineno++; lineno++;
if (buf[strlen(buffer) - 1] != '\n') { if (buf[strlen(buffer) - 1] != '\n') {
log_error("Config file line %d too long\n", lineno); log_error("Config file line %d too long", lineno);
break; break;
} }
@ -257,7 +257,7 @@ static int get_file_options(struct udev *udev,
* Only allow: [vendor=foo[,model=bar]]options=stuff * Only allow: [vendor=foo[,model=bar]]options=stuff
*/ */
if (!options_in || (!vendor_in && model_in)) { if (!options_in || (!vendor_in && model_in)) {
log_error("Error parsing config file line %d '%s'\n", lineno, buffer); log_error("Error parsing config file line %d '%s'", lineno, buffer);
retval = -1; retval = -1;
break; break;
} }
@ -372,7 +372,7 @@ static int set_options(struct udev *udev,
else if (streq(optarg, "pre-spc3-83")) else if (streq(optarg, "pre-spc3-83"))
default_page_code = PAGE_83_PRE_SPC3; default_page_code = PAGE_83_PRE_SPC3;
else { else {
log_error("Unknown page code '%s'\n", optarg); log_error("Unknown page code '%s'", optarg);
return -1; return -1;
} }
break; break;
@ -380,7 +380,7 @@ static int set_options(struct udev *udev,
case 's': case 's':
sg_version = atoi(optarg); sg_version = atoi(optarg);
if (sg_version < 3 || sg_version > 4) { if (sg_version < 3 || sg_version > 4) {
log_error("Unknown SG version '%s'\n", optarg); log_error("Unknown SG version '%s'", optarg);
return -1; return -1;
} }
break; break;
@ -453,13 +453,13 @@ static int per_dev_options(struct udev *udev,
} else if (streq(optarg, "pre-spc3-83")) { } else if (streq(optarg, "pre-spc3-83")) {
*page_code = PAGE_83_PRE_SPC3; *page_code = PAGE_83_PRE_SPC3;
} else { } else {
log_error("Unknown page code '%s'\n", optarg); log_error("Unknown page code '%s'", optarg);
retval = -1; retval = -1;
} }
break; break;
default: default:
log_error("Unknown or bad option '%c' (0x%x)\n", option, option); log_error("Unknown or bad option '%c' (0x%x)", option, option);
retval = -1; retval = -1;
break; break;
} }
@ -615,7 +615,7 @@ int main(int argc, char **argv)
exit(1); exit(1);
if (!dev_specified) { if (!dev_specified) {
log_error("no device specified\n"); log_error("no device specified");
retval = 1; retval = 1;
goto exit; goto exit;
} }

View File

@ -197,7 +197,7 @@ static int scsi_dump_sense(struct udev *udev,
*/ */
if (sb_len < 1) { if (sb_len < 1) {
log_debug("%s: sense buffer empty\n", dev_scsi->kernel); log_debug("%s: sense buffer empty", dev_scsi->kernel);
return -1; return -1;
} }
@ -210,7 +210,7 @@ static int scsi_dump_sense(struct udev *udev,
*/ */
s = sense_buffer[7] + 8; s = sense_buffer[7] + 8;
if (sb_len < s) { if (sb_len < s) {
log_debug("%s: sense buffer too small %d bytes, %d bytes too short\n", log_debug("%s: sense buffer too small %d bytes, %d bytes too short",
dev_scsi->kernel, sb_len, s - sb_len); dev_scsi->kernel, sb_len, s - sb_len);
return -1; return -1;
} }
@ -220,7 +220,7 @@ static int scsi_dump_sense(struct udev *udev,
/* /*
* Possible? * Possible?
*/ */
log_debug("%s: sense result too" " small %d bytes\n", log_debug("%s: sense result too" " small %d bytes",
dev_scsi->kernel, s); dev_scsi->kernel, s);
return -1; return -1;
} }
@ -231,25 +231,25 @@ static int scsi_dump_sense(struct udev *udev,
asc = sense_buffer[2]; asc = sense_buffer[2];
ascq = sense_buffer[3]; ascq = sense_buffer[3];
} else { } else {
log_debug("%s: invalid sense code 0x%x\n", log_debug("%s: invalid sense code 0x%x",
dev_scsi->kernel, code); dev_scsi->kernel, code);
return -1; return -1;
} }
log_debug("%s: sense key 0x%x ASC 0x%x ASCQ 0x%x\n", log_debug("%s: sense key 0x%x ASC 0x%x ASCQ 0x%x",
dev_scsi->kernel, sense_key, asc, ascq); dev_scsi->kernel, sense_key, asc, ascq);
} else { } else {
if (sb_len < 4) { if (sb_len < 4) {
log_debug("%s: sense buffer too small %d bytes, %d bytes too short\n", log_debug("%s: sense buffer too small %d bytes, %d bytes too short",
dev_scsi->kernel, sb_len, 4 - sb_len); dev_scsi->kernel, sb_len, 4 - sb_len);
return -1; return -1;
} }
if (sense_buffer[0] < 15) if (sense_buffer[0] < 15)
log_debug("%s: old sense key: 0x%x\n", dev_scsi->kernel, sense_buffer[0] & 0x0f); log_debug("%s: old sense key: 0x%x", dev_scsi->kernel, sense_buffer[0] & 0x0f);
else else
log_debug("%s: sense = %2x %2x\n", log_debug("%s: sense = %2x %2x",
dev_scsi->kernel, sense_buffer[0], sense_buffer[2]); dev_scsi->kernel, sense_buffer[0], sense_buffer[2]);
log_debug("%s: non-extended sense class %d code 0x%0x\n", log_debug("%s: non-extended sense class %d code 0x%0x",
dev_scsi->kernel, sense_class, code); dev_scsi->kernel, sense_class, code);
} }
@ -261,8 +261,8 @@ static int scsi_dump_sense(struct udev *udev,
out_buffer[j++] = ' '; out_buffer[j++] = ' ';
} }
out_buffer[j] = '\0'; out_buffer[j] = '\0';
log_debug("%s: sense dump:\n", dev_scsi->kernel); log_debug("%s: sense dump:", dev_scsi->kernel);
log_debug("%s: %s\n", dev_scsi->kernel, out_buffer); log_debug("%s: %s", dev_scsi->kernel, out_buffer);
#endif #endif
return -1; return -1;
@ -276,11 +276,11 @@ static int scsi_dump(struct udev *udev,
/* /*
* Impossible, should not be called. * Impossible, should not be called.
*/ */
log_debug("%s: called with no error\n", __FUNCTION__); log_debug("%s: called with no error", __FUNCTION__);
return -1; return -1;
} }
log_debug("%s: sg_io failed status 0x%x 0x%x 0x%x 0x%x\n", log_debug("%s: sg_io failed status 0x%x 0x%x 0x%x 0x%x",
dev_scsi->kernel, io->driver_status, io->host_status, io->msg_status, io->status); dev_scsi->kernel, io->driver_status, io->host_status, io->msg_status, io->status);
if (io->status == SCSI_CHECK_CONDITION) if (io->status == SCSI_CHECK_CONDITION)
return scsi_dump_sense(udev, dev_scsi, io->sbp, io->sb_len_wr); return scsi_dump_sense(udev, dev_scsi, io->sbp, io->sb_len_wr);
@ -296,11 +296,11 @@ static int scsi_dump_v4(struct udev *udev,
/* /*
* Impossible, should not be called. * Impossible, should not be called.
*/ */
log_debug("%s: called with no error\n", __FUNCTION__); log_debug("%s: called with no error", __FUNCTION__);
return -1; return -1;
} }
log_debug("%s: sg_io failed status 0x%x 0x%x 0x%x\n", log_debug("%s: sg_io failed status 0x%x 0x%x 0x%x",
dev_scsi->kernel, io->driver_status, io->transport_status, dev_scsi->kernel, io->driver_status, io->transport_status,
io->device_status); io->device_status);
if (io->device_status == SCSI_CHECK_CONDITION) if (io->device_status == SCSI_CHECK_CONDITION)
@ -325,7 +325,7 @@ static int scsi_inquiry(struct udev *udev,
int retval; int retval;
if (buflen > SCSI_INQ_BUFF_LEN) { if (buflen > SCSI_INQ_BUFF_LEN) {
log_debug("buflen %d too long\n", buflen); log_debug("buflen %d too long", buflen);
return -1; return -1;
} }
@ -362,7 +362,7 @@ resend:
dev_scsi->use_sg = 3; dev_scsi->use_sg = 3;
goto resend; goto resend;
} }
log_debug("%s: ioctl failed: %m\n", dev_scsi->kernel); log_debug("%s: ioctl failed: %m", dev_scsi->kernel);
goto error; goto error;
} }
@ -397,7 +397,7 @@ resend:
error: error:
if (retval < 0) if (retval < 0)
log_debug("%s: Unable to get INQUIRY vpd %d page 0x%x.\n", log_debug("%s: Unable to get INQUIRY vpd %d page 0x%x.",
dev_scsi->kernel, evpd, page); dev_scsi->kernel, evpd, page);
return retval; return retval;
@ -416,11 +416,11 @@ static int do_scsi_page0_inquiry(struct udev *udev,
return 1; return 1;
if (buffer[1] != 0) { if (buffer[1] != 0) {
log_debug("%s: page 0 not available.\n", dev_scsi->kernel); log_debug("%s: page 0 not available.", dev_scsi->kernel);
return 1; return 1;
} }
if (buffer[3] > len) { if (buffer[3] > len) {
log_debug("%s: page 0 buffer too long %d\n", dev_scsi->kernel, buffer[3]); log_debug("%s: page 0 buffer too long %d", dev_scsi->kernel, buffer[3]);
return 1; return 1;
} }
@ -437,7 +437,7 @@ static int do_scsi_page0_inquiry(struct udev *udev,
* invalid. * invalid.
*/ */
if (strneq((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) { if (strneq((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) {
log_debug("%s: invalid page0 data\n", dev_scsi->kernel); log_debug("%s: invalid page0 data", dev_scsi->kernel);
return 1; return 1;
} }
} }
@ -462,7 +462,7 @@ static int prepend_vendor_model(struct udev *udev,
* above, ind will never be too large. * above, ind will never be too large.
*/ */
if (ind != (VENDOR_LENGTH + MODEL_LENGTH)) { if (ind != (VENDOR_LENGTH + MODEL_LENGTH)) {
log_debug("%s: expected length %d, got length %d\n", log_debug("%s: expected length %d, got length %d",
dev_scsi->kernel, (VENDOR_LENGTH + MODEL_LENGTH), ind); dev_scsi->kernel, (VENDOR_LENGTH + MODEL_LENGTH), ind);
return -1; return -1;
} }
@ -528,7 +528,7 @@ static int check_fill_0x83_id(struct udev *udev,
len += VENDOR_LENGTH + MODEL_LENGTH; len += VENDOR_LENGTH + MODEL_LENGTH;
if (max_len < len) { if (max_len < len) {
log_debug("%s: length %d too short - need %d\n", log_debug("%s: length %d too short - need %d",
dev_scsi->kernel, max_len, len); dev_scsi->kernel, max_len, len);
return 1; return 1;
} }
@ -629,7 +629,7 @@ static int do_scsi_page83_inquiry(struct udev *udev,
return 1; return 1;
if (page_83[1] != PAGE_83) { if (page_83[1] != PAGE_83) {
log_debug("%s: Invalid page 0x83\n", dev_scsi->kernel); log_debug("%s: Invalid page 0x83", dev_scsi->kernel);
return 1; return 1;
} }
@ -715,7 +715,7 @@ static int do_scsi_page83_prespc3_inquiry(struct udev *udev,
return 1; return 1;
if (page_83[1] != PAGE_83) { if (page_83[1] != PAGE_83) {
log_debug("%s: Invalid page 0x83\n", dev_scsi->kernel); log_debug("%s: Invalid page 0x83", dev_scsi->kernel);
return 1; return 1;
} }
/* /*
@ -779,13 +779,13 @@ static int do_scsi_page80_inquiry(struct udev *udev,
return retval; return retval;
if (buf[1] != PAGE_80) { if (buf[1] != PAGE_80) {
log_debug("%s: Invalid page 0x80\n", dev_scsi->kernel); log_debug("%s: Invalid page 0x80", dev_scsi->kernel);
return 1; return 1;
} }
len = 1 + VENDOR_LENGTH + MODEL_LENGTH + buf[3]; len = 1 + VENDOR_LENGTH + MODEL_LENGTH + buf[3];
if (max_len < len) { if (max_len < len) {
log_debug("%s: length %d too short - need %d\n", log_debug("%s: length %d too short - need %d",
dev_scsi->kernel, max_len, len); dev_scsi->kernel, max_len, len);
return 1; return 1;
} }
@ -820,12 +820,12 @@ int scsi_std_inquiry(struct udev *udev,
fd = open(devname, O_RDONLY | O_NONBLOCK); fd = open(devname, O_RDONLY | O_NONBLOCK);
if (fd < 0) { if (fd < 0) {
log_debug("scsi_id: cannot open %s: %m\n", devname); log_debug("scsi_id: cannot open %s: %m", devname);
return 1; return 1;
} }
if (fstat(fd, &statbuf) < 0) { if (fstat(fd, &statbuf) < 0) {
log_debug("scsi_id: cannot stat %s: %m\n", devname); log_debug("scsi_id: cannot stat %s: %m", devname);
err = 2; err = 2;
goto out; goto out;
} }
@ -918,7 +918,7 @@ int scsi_get_serial(struct udev *udev,
goto completed; goto completed;
} }
} else if (page_code != 0x00) { } else if (page_code != 0x00) {
log_debug("%s: unsupported page code 0x%d\n", dev_scsi->kernel, page_code); log_debug("%s: unsupported page code 0x%d", dev_scsi->kernel, page_code);
retval = 1; retval = 1;
goto completed; goto completed;
} }

View File

@ -190,7 +190,7 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t
if (err < 0) if (err < 0)
goto out; goto out;
log_debug("probe %s %sraid offset=%llu\n", log_debug("probe %s %sraid offset=%llu",
udev_device_get_devnode(dev), udev_device_get_devnode(dev),
noraid ? "no" : "", (unsigned long long) offset); noraid ? "no" : "", (unsigned long long) offset);

View File

@ -33,7 +33,7 @@ static bool set_loading(struct udev *udev, char *loadpath, const char *state)
ldfile = fopen(loadpath, "we"); ldfile = fopen(loadpath, "we");
if (ldfile == NULL) { if (ldfile == NULL) {
log_error("error: can not open '%s'\n", loadpath); log_error("error: can not open '%s'", loadpath);
return false; return false;
}; };
fprintf(ldfile, "%s\n", state); fprintf(ldfile, "%s\n", state);
@ -53,7 +53,7 @@ static bool copy_firmware(struct udev *udev, const char *source, const char *tar
return false; return false;
} }
log_debug("writing '%s' (%zi) to '%s'\n", source, size, target); log_debug("writing '%s' (%zi) to '%s'", source, size, target);
fsource = fopen(source, "re"); fsource = fopen(source, "re");
if (fsource == NULL) if (fsource == NULL)
@ -90,7 +90,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo
firmware = udev_device_get_property_value(dev, "FIRMWARE"); firmware = udev_device_get_property_value(dev, "FIRMWARE");
if (firmware == NULL) { if (firmware == NULL) {
log_error("firmware parameter missing\n\n"); log_error("firmware parameter missing");
rc = EXIT_FAILURE; rc = EXIT_FAILURE;
goto exit; goto exit;
} }
@ -112,7 +112,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo
strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL); strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL);
if (fwfile == NULL) { if (fwfile == NULL) {
log_debug("did not find firmware file '%s'\n", firmware); log_debug("did not find firmware file '%s'", firmware);
rc = EXIT_FAILURE; rc = EXIT_FAILURE;
/* /*
* Do not cancel the request in the initrd, the real root might have * Do not cancel the request in the initrd, the real root might have
@ -136,7 +136,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo
strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL); strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL);
if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) { if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) {
log_error("error sending firmware '%s' to device\n", firmware); log_error("error sending firmware '%s' to device", firmware);
set_loading(udev, loadpath, "-1"); set_loading(udev, loadpath, "-1");
rc = EXIT_FAILURE; rc = EXIT_FAILURE;
goto exit; goto exit;

View File

@ -57,7 +57,7 @@ static void get_cap_mask(struct udev_device *dev,
unsigned long val; unsigned long val;
snprintf(text, sizeof(text), "%s", udev_device_get_sysattr_value(pdev, attr)); snprintf(text, sizeof(text), "%s", udev_device_get_sysattr_value(pdev, attr));
log_debug("%s raw kernel attribute: %s\n", attr, text); log_debug("%s raw kernel attribute: %s", attr, text);
memset (bitmask, 0, bitmask_size); memset (bitmask, 0, bitmask_size);
i = 0; i = 0;
@ -66,7 +66,7 @@ static void get_cap_mask(struct udev_device *dev,
if (i < bitmask_size/sizeof(unsigned long)) if (i < bitmask_size/sizeof(unsigned long))
bitmask[i] = val; bitmask[i] = val;
else else
log_debug("ignoring %s block %lX which is larger than maximum size\n", attr, val); log_debug("ignoring %s block %lX which is larger than maximum size", attr, val);
*word = '\0'; *word = '\0';
++i; ++i;
} }
@ -74,12 +74,12 @@ static void get_cap_mask(struct udev_device *dev,
if (i < bitmask_size / sizeof(unsigned long)) if (i < bitmask_size / sizeof(unsigned long))
bitmask[i] = val; bitmask[i] = val;
else else
log_debug("ignoring %s block %lX which is larger than maximum size\n", attr, val); log_debug("ignoring %s block %lX which is larger than maximum size", attr, val);
if (test) { if (test) {
/* printf pattern with the right unsigned long number of hex chars */ /* printf pattern with the right unsigned long number of hex chars */
snprintf(text, sizeof(text), " bit %%4u: %%0%zilX\n", 2 * sizeof(unsigned long)); snprintf(text, sizeof(text), " bit %%4u: %%0%zilX\n", 2 * sizeof(unsigned long));
log_debug("%s decoded bit map:\n", attr); log_debug("%s decoded bit map:", attr);
val = bitmask_size / sizeof (unsigned long); val = bitmask_size / sizeof (unsigned long);
/* skip over leading zeros */ /* skip over leading zeros */
while (bitmask[val-1] == 0 && val > 0) while (bitmask[val-1] == 0 && val > 0)
@ -151,7 +151,7 @@ static void test_key (struct udev_device *dev,
/* do we have any KEY_* capability? */ /* do we have any KEY_* capability? */
if (!test_bit (EV_KEY, bitmask_ev)) { if (!test_bit (EV_KEY, bitmask_ev)) {
log_debug("test_key: no EV_KEY capability\n"); log_debug("test_key: no EV_KEY capability");
return; return;
} }
@ -159,13 +159,13 @@ static void test_key (struct udev_device *dev,
found = 0; found = 0;
for (i = 0; i < BTN_MISC/BITS_PER_LONG; ++i) { for (i = 0; i < BTN_MISC/BITS_PER_LONG; ++i) {
found |= bitmask_key[i]; found |= bitmask_key[i];
log_debug("test_key: checking bit block %lu for any keys; found=%i\n", (unsigned long)i*BITS_PER_LONG, found > 0); log_debug("test_key: checking bit block %lu for any keys; found=%i", (unsigned long)i*BITS_PER_LONG, found > 0);
} }
/* If there are no keys in the lower block, check the higher block */ /* If there are no keys in the lower block, check the higher block */
if (!found) { if (!found) {
for (i = KEY_OK; i < BTN_TRIGGER_HAPPY; ++i) { for (i = KEY_OK; i < BTN_TRIGGER_HAPPY; ++i) {
if (test_bit (i, bitmask_key)) { if (test_bit (i, bitmask_key)) {
log_debug("test_key: Found key %x in high block\n", i); log_debug("test_key: Found key %x in high block", i);
found = 1; found = 1;
break; break;
} }

View File

@ -59,7 +59,7 @@ static int install_force_release(struct udev_device *dev, const unsigned int *re
for (i = 0; i < release_count; i++) for (i = 0; i < release_count; i++)
l = strpcpyf(&s, l, ",%d", release[i]); l = strpcpyf(&s, l, ",%d", release[i]);
log_debug("keyboard: updating force-release list with '%s'\n", codes); log_debug("keyboard: updating force-release list with '%s'", codes);
ret = udev_device_set_sysattr_value(atkbd, "force_release", codes); ret = udev_device_set_sysattr_value(atkbd, "force_release", codes);
if (ret < 0) if (ret < 0)
log_error("Error writing force-release attribute: %s", strerror(-ret)); log_error("Error writing force-release attribute: %s", strerror(-ret));
@ -90,7 +90,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
/* KEYBOARD_KEY_<hex scan code>=<key identifier string> */ /* KEYBOARD_KEY_<hex scan code>=<key identifier string> */
scancode = strtoul(key + 13, &endptr, 16); scancode = strtoul(key + 13, &endptr, 16);
if (endptr[0] != '\0') { if (endptr[0] != '\0') {
log_error("Error, unable to parse scan code from '%s'\n", key); log_error("Error, unable to parse scan code from '%s'", key);
continue; continue;
} }
@ -111,7 +111,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
/* translate identifier to key code */ /* translate identifier to key code */
k = keyboard_lookup_key(keycode, strlen(keycode)); k = keyboard_lookup_key(keycode, strlen(keycode));
if (!k) { if (!k) {
log_error("Error, unknown key identifier '%s'\n", keycode); log_error("Error, unknown key identifier '%s'", keycode);
continue; continue;
} }
@ -128,22 +128,22 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
node = udev_device_get_devnode(dev); node = udev_device_get_devnode(dev);
if (!node) { if (!node) {
log_error("Error, no device node for '%s'\n", udev_device_get_syspath(dev)); log_error("Error, no device node for '%s'", udev_device_get_syspath(dev));
return EXIT_FAILURE; return EXIT_FAILURE;
} }
fd = open(udev_device_get_devnode(dev), O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY); fd = open(udev_device_get_devnode(dev), O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
if (fd < 0) { if (fd < 0) {
log_error("Error, opening device '%s': %m\n", node); log_error("Error, opening device '%s': %m", node);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
/* install list of map codes */ /* install list of map codes */
for (i = 0; i < map_count; i++) { for (i = 0; i < map_count; i++) {
log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)\n", log_debug("keyboard: mapping scan code %d (0x%x) to key code %d (0x%x)",
map[i].scan, map[i].scan, map[i].key, map[i].key); map[i].scan, map[i].scan, map[i].key, map[i].key);
if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0) if (ioctl(fd, EVIOCSKEYCODE, &map[i]) < 0)
log_error("Error calling EVIOCSKEYCODE (scan code 0x%x, key code %d): %m\n", map[i].scan, map[i].key); log_error("Error calling EVIOCSKEYCODE (scan code 0x%x, key code %d): %m", map[i].scan, map[i].key);
} }
/* install list of force-release codes */ /* install list of force-release codes */

View File

@ -44,18 +44,18 @@ static int load_module(struct udev *udev, const char *alias)
return err; return err;
if (list == NULL) if (list == NULL)
log_debug("no module matches '%s'\n", alias); log_debug("no module matches '%s'", alias);
kmod_list_foreach(l, list) { kmod_list_foreach(l, list) {
struct kmod_module *mod = kmod_module_get_module(l); struct kmod_module *mod = kmod_module_get_module(l);
err = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL); err = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL);
if (err == KMOD_PROBE_APPLY_BLACKLIST) if (err == KMOD_PROBE_APPLY_BLACKLIST)
log_debug("module '%s' is blacklisted\n", kmod_module_get_name(mod)); log_debug("module '%s' is blacklisted", kmod_module_get_name(mod));
else if (err == 0) else if (err == 0)
log_debug("inserted '%s'\n", kmod_module_get_name(mod)); log_debug("inserted '%s'", kmod_module_get_name(mod));
else else
log_debug("failed to insert '%s'\n", kmod_module_get_name(mod)); log_debug("failed to insert '%s'", kmod_module_get_name(mod));
kmod_module_unref(mod); kmod_module_unref(mod);
} }
@ -80,12 +80,12 @@ static int builtin_kmod(struct udev_device *dev, int argc, char *argv[], bool te
return 0; return 0;
if (argc < 3 || !streq(argv[1], "load")) { if (argc < 3 || !streq(argv[1], "load")) {
log_error("expect: %s load <module>\n", argv[0]); log_error("expect: %s load <module>", argv[0]);
return EXIT_FAILURE; return EXIT_FAILURE;
} }
for (i = 2; argv[i]; i++) { for (i = 2; argv[i]; i++) {
log_debug("execute '%s' '%s'\n", argv[1], argv[i]); log_debug("execute '%s' '%s'", argv[1], argv[i]);
load_module(udev, argv[i]); load_module(udev, argv[i]);
} }
@ -102,7 +102,7 @@ static int builtin_kmod_init(struct udev *udev)
if (!ctx) if (!ctx)
return -ENOMEM; return -ENOMEM;
log_debug("load module index\n"); log_debug("load module index");
kmod_set_log_fn(ctx, udev_kmod_log, udev); kmod_set_log_fn(ctx, udev_kmod_log, udev);
kmod_load_resources(ctx); kmod_load_resources(ctx);
return 0; return 0;
@ -111,14 +111,14 @@ static int builtin_kmod_init(struct udev *udev)
/* called on udev shutdown and reload request */ /* called on udev shutdown and reload request */
static void builtin_kmod_exit(struct udev *udev) static void builtin_kmod_exit(struct udev *udev)
{ {
log_debug("unload module index\n"); log_debug("unload module index");
ctx = kmod_unref(ctx); ctx = kmod_unref(ctx);
} }
/* called every couple of seconds during event activity; 'true' if config has changed */ /* called every couple of seconds during event activity; 'true' if config has changed */
static bool builtin_kmod_validate(struct udev *udev) static bool builtin_kmod_validate(struct udev *udev)
{ {
log_debug("validate module index\n"); log_debug("validate module index");
if (!ctx) if (!ctx)
return false; return false;
return (kmod_validate_resources(ctx) != KMOD_RESOURCES_OK); return (kmod_validate_resources(ctx) != KMOD_RESOURCES_OK);

View File

@ -275,7 +275,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
/* usb interface directory */ /* usb interface directory */
dev_interface = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface"); dev_interface = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface");
if (dev_interface == NULL) { if (dev_interface == NULL) {
log_debug("unable to access usb_interface device of '%s'\n", log_debug("unable to access usb_interface device of '%s'",
udev_device_get_syspath(dev)); udev_device_get_syspath(dev));
return EXIT_FAILURE; return EXIT_FAILURE;
} }
@ -285,7 +285,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
if_class = udev_device_get_sysattr_value(dev_interface, "bInterfaceClass"); if_class = udev_device_get_sysattr_value(dev_interface, "bInterfaceClass");
if (!if_class) { if (!if_class) {
log_debug("%s: cannot get bInterfaceClass attribute\n", log_debug("%s: cannot get bInterfaceClass attribute",
udev_device_get_sysname(dev)); udev_device_get_sysname(dev));
return EXIT_FAILURE; return EXIT_FAILURE;
} }
@ -300,13 +300,13 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
set_usb_iftype(type_str, if_class_num, sizeof(type_str)-1); set_usb_iftype(type_str, if_class_num, sizeof(type_str)-1);
} }
log_debug("%s: if_class %d protocol %d\n", log_debug("%s: if_class %d protocol %d",
udev_device_get_syspath(dev_interface), if_class_num, protocol); udev_device_get_syspath(dev_interface), if_class_num, protocol);
/* usb device directory */ /* usb device directory */
dev_usb = udev_device_get_parent_with_subsystem_devtype(dev_interface, "usb", "usb_device"); dev_usb = udev_device_get_parent_with_subsystem_devtype(dev_interface, "usb", "usb_device");
if (!dev_usb) { if (!dev_usb) {
log_debug("unable to find parent 'usb' device of '%s'\n", log_debug("unable to find parent 'usb' device of '%s'",
udev_device_get_syspath(dev)); udev_device_get_syspath(dev));
return EXIT_FAILURE; return EXIT_FAILURE;
} }
@ -323,19 +323,19 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
/* get scsi device */ /* get scsi device */
dev_scsi = udev_device_get_parent_with_subsystem_devtype(dev, "scsi", "scsi_device"); dev_scsi = udev_device_get_parent_with_subsystem_devtype(dev, "scsi", "scsi_device");
if (dev_scsi == NULL) { if (dev_scsi == NULL) {
log_debug("unable to find parent 'scsi' device of '%s'\n", log_debug("unable to find parent 'scsi' device of '%s'",
udev_device_get_syspath(dev)); udev_device_get_syspath(dev));
goto fallback; goto fallback;
} }
if (sscanf(udev_device_get_sysname(dev_scsi), "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4) { if (sscanf(udev_device_get_sysname(dev_scsi), "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4) {
log_debug("invalid scsi device '%s'\n", udev_device_get_sysname(dev_scsi)); log_debug("invalid scsi device '%s'", udev_device_get_sysname(dev_scsi));
goto fallback; goto fallback;
} }
/* Generic SPC-2 device */ /* Generic SPC-2 device */
scsi_vendor = udev_device_get_sysattr_value(dev_scsi, "vendor"); scsi_vendor = udev_device_get_sysattr_value(dev_scsi, "vendor");
if (!scsi_vendor) { if (!scsi_vendor) {
log_debug("%s: cannot get SCSI vendor attribute\n", log_debug("%s: cannot get SCSI vendor attribute",
udev_device_get_sysname(dev_scsi)); udev_device_get_sysname(dev_scsi));
goto fallback; goto fallback;
} }
@ -345,7 +345,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
scsi_model = udev_device_get_sysattr_value(dev_scsi, "model"); scsi_model = udev_device_get_sysattr_value(dev_scsi, "model");
if (!scsi_model) { if (!scsi_model) {
log_debug("%s: cannot get SCSI model attribute\n", log_debug("%s: cannot get SCSI model attribute",
udev_device_get_sysname(dev_scsi)); udev_device_get_sysname(dev_scsi));
goto fallback; goto fallback;
} }
@ -355,7 +355,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
scsi_type = udev_device_get_sysattr_value(dev_scsi, "type"); scsi_type = udev_device_get_sysattr_value(dev_scsi, "type");
if (!scsi_type) { if (!scsi_type) {
log_debug("%s: cannot get SCSI type attribute\n", log_debug("%s: cannot get SCSI type attribute",
udev_device_get_sysname(dev_scsi)); udev_device_get_sysname(dev_scsi));
goto fallback; goto fallback;
} }
@ -363,7 +363,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool
scsi_rev = udev_device_get_sysattr_value(dev_scsi, "rev"); scsi_rev = udev_device_get_sysattr_value(dev_scsi, "rev");
if (!scsi_rev) { if (!scsi_rev) {
log_debug("%s: cannot get SCSI revision attribute\n", log_debug("%s: cannot get SCSI revision attribute",
udev_device_get_sysname(dev_scsi)); udev_device_get_sysname(dev_scsi));
goto fallback; goto fallback;
} }
@ -389,7 +389,7 @@ fallback:
if (!usb_vendor) if (!usb_vendor)
usb_vendor = vendor_id; usb_vendor = vendor_id;
if (!usb_vendor) { if (!usb_vendor) {
log_debug("No USB vendor information available\n"); log_debug("No USB vendor information available");
return EXIT_FAILURE; return EXIT_FAILURE;
} }
udev_util_encode_string(usb_vendor, vendor_str_enc, sizeof(vendor_str_enc)); udev_util_encode_string(usb_vendor, vendor_str_enc, sizeof(vendor_str_enc));

View File

@ -84,7 +84,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd)
if (fd < 0) { if (fd < 0) {
uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0); uctrl->sock = socket(AF_LOCAL, SOCK_SEQPACKET|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
if (uctrl->sock < 0) { if (uctrl->sock < 0) {
log_error("error getting socket: %m\n"); log_error("error getting socket: %m");
udev_ctrl_unref(uctrl); udev_ctrl_unref(uctrl);
return NULL; return NULL;
} }
@ -118,14 +118,14 @@ int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl)
if (err < 0) { if (err < 0) {
err = -errno; err = -errno;
log_error("bind failed: %m\n"); log_error("bind failed: %m");
return err; return err;
} }
err = listen(uctrl->sock, 0); err = listen(uctrl->sock, 0);
if (err < 0) { if (err < 0) {
err = -errno; err = -errno;
log_error("listen failed: %m\n"); log_error("listen failed: %m");
return err; return err;
} }
@ -193,7 +193,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl)
conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK); conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
if (conn->sock < 0) { if (conn->sock < 0) {
if (errno != EINTR) if (errno != EINTR)
log_error("unable to receive ctrl connection: %m\n"); log_error("unable to receive ctrl connection: %m");
goto err; goto err;
} }
@ -204,7 +204,7 @@ struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl)
goto err; goto err;
} }
if (ucred.uid > 0) { if (ucred.uid > 0) {
log_error("sender uid=%i, message ignored\n", ucred.uid); log_error("sender uid=%i, message ignored", ucred.uid);
goto err; goto err;
} }
@ -372,11 +372,11 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn)
continue; continue;
goto err; goto err;
} else if (r == 0) { } else if (r == 0) {
log_error("timeout waiting for ctrl message\n"); log_error("timeout waiting for ctrl message");
goto err; goto err;
} else { } else {
if (!(pfd[0].revents & POLLIN)) { if (!(pfd[0].revents & POLLIN)) {
log_error("ctrl connection error: %m\n"); log_error("ctrl connection error: %m");
goto err; goto err;
} }
} }
@ -389,24 +389,24 @@ struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn)
size = recvmsg(conn->sock, &smsg, 0); size = recvmsg(conn->sock, &smsg, 0);
if (size < 0) { if (size < 0) {
log_error("unable to receive ctrl message: %m\n"); log_error("unable to receive ctrl message: %m");
goto err; goto err;
} }
cmsg = CMSG_FIRSTHDR(&smsg); cmsg = CMSG_FIRSTHDR(&smsg);
cred = (struct ucred *) CMSG_DATA(cmsg); cred = (struct ucred *) CMSG_DATA(cmsg);
if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) { if (cmsg == NULL || cmsg->cmsg_type != SCM_CREDENTIALS) {
log_error("no sender credentials received, message ignored\n"); log_error("no sender credentials received, message ignored");
goto err; goto err;
} }
if (cred->uid != 0) { if (cred->uid != 0) {
log_error("sender uid=%i, message ignored\n", cred->uid); log_error("sender uid=%i, message ignored", cred->uid);
goto err; goto err;
} }
if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) { if (uctrl_msg->ctrl_msg_wire.magic != UDEV_CTRL_MAGIC) {
log_error("message magic 0x%08x doesn't match, ignore it\n", uctrl_msg->ctrl_msg_wire.magic); log_error("message magic 0x%08x doesn't match, ignore it", uctrl_msg->ctrl_msg_wire.magic);
goto err; goto err;
} }

View File

@ -175,7 +175,7 @@ subst:
from++; from++;
for (i = 0; from[i] != '}'; i++) { for (i = 0; from[i] != '}'; i++) {
if (from[i] == '\0') { if (from[i] == '\0') {
log_error("missing closing brace for format '%s'\n", src); log_error("missing closing brace for format '%s'", src);
goto out; goto out;
} }
} }
@ -256,7 +256,7 @@ subst:
cpos++; cpos++;
} }
if (i > 0) { if (i > 0) {
log_error("requested part of result string not found\n"); log_error("requested part of result string not found");
break; break;
} }
strscpy(tmp, sizeof(tmp), cpos); strscpy(tmp, sizeof(tmp), cpos);
@ -279,7 +279,7 @@ subst:
int count; int count;
if (attr == NULL) { if (attr == NULL) {
log_error("missing file parameter for attr\n"); log_error("missing file parameter for attr");
break; break;
} }
@ -306,7 +306,7 @@ subst:
vbuf[len] = '\0'; vbuf[len] = '\0';
count = util_replace_chars(vbuf, UDEV_ALLOWED_CHARS_INPUT); count = util_replace_chars(vbuf, UDEV_ALLOWED_CHARS_INPUT);
if (count > 0) if (count > 0)
log_debug("%i character(s) replaced\n" , count); log_debug("%i character(s) replaced" , count);
l = strpcpy(&s, l, vbuf); l = strpcpy(&s, l, vbuf);
break; break;
} }
@ -364,7 +364,7 @@ subst:
break; break;
} }
default: default:
log_error("unknown substitution type=%i\n", type); log_error("unknown substitution type=%i", type);
break; break;
} }
} }
@ -391,7 +391,7 @@ static int spawn_exec(struct udev_event *event,
dup2(fd, STDERR_FILENO); dup2(fd, STDERR_FILENO);
close(fd); close(fd);
} else { } else {
log_error("open /dev/null failed: %m\n"); log_error("open /dev/null failed: %m");
} }
/* connect pipes to std{out,err} */ /* connect pipes to std{out,err} */
@ -415,7 +415,7 @@ static int spawn_exec(struct udev_event *event,
/* exec failed */ /* exec failed */
err = -errno; err = -errno;
log_error("failed to execute '%s' '%s': %m\n", argv[0], cmd); log_error("failed to execute '%s' '%s': %m", argv[0], cmd);
return err; return err;
} }
@ -434,7 +434,7 @@ static void spawn_read(struct udev_event *event,
fd_ep = epoll_create1(EPOLL_CLOEXEC); fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) { if (fd_ep < 0) {
log_error("error creating epoll fd: %m\n"); log_error("error creating epoll fd: %m");
goto out; goto out;
} }
@ -443,7 +443,7 @@ static void spawn_read(struct udev_event *event,
ep_outpipe.events = EPOLLIN; ep_outpipe.events = EPOLLIN;
ep_outpipe.data.ptr = &fd_stdout; ep_outpipe.data.ptr = &fd_stdout;
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_stdout, &ep_outpipe) < 0) { if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_stdout, &ep_outpipe) < 0) {
log_error("fail to add fd to epoll: %m\n"); log_error("fail to add fd to epoll: %m");
goto out; goto out;
} }
} }
@ -453,7 +453,7 @@ static void spawn_read(struct udev_event *event,
ep_errpipe.events = EPOLLIN; ep_errpipe.events = EPOLLIN;
ep_errpipe.data.ptr = &fd_stderr; ep_errpipe.data.ptr = &fd_stderr;
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_stderr, &ep_errpipe) < 0) { if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_stderr, &ep_errpipe) < 0) {
log_error("fail to add fd to epoll: %m\n"); log_error("fail to add fd to epoll: %m");
goto out; goto out;
} }
} }
@ -470,7 +470,7 @@ static void spawn_read(struct udev_event *event,
age_usec = now(CLOCK_MONOTONIC) - event->birth_usec; age_usec = now(CLOCK_MONOTONIC) - event->birth_usec;
if (age_usec >= event->timeout_usec) { if (age_usec >= event->timeout_usec) {
log_error("timeout '%s'\n", cmd); log_error("timeout '%s'", cmd);
goto out; goto out;
} }
timeout = ((event->timeout_usec - age_usec) / 1000) + 1000; timeout = ((event->timeout_usec - age_usec) / 1000) + 1000;
@ -482,11 +482,11 @@ static void spawn_read(struct udev_event *event,
if (fdcount < 0) { if (fdcount < 0) {
if (errno == EINTR) if (errno == EINTR)
continue; continue;
log_error("failed to poll: %m\n"); log_error("failed to poll: %m");
goto out; goto out;
} }
if (fdcount == 0) { if (fdcount == 0) {
log_error("timeout '%s'\n", cmd); log_error("timeout '%s'", cmd);
goto out; goto out;
} }
@ -508,7 +508,7 @@ static void spawn_read(struct udev_event *event,
memcpy(&result[respos], buf, count); memcpy(&result[respos], buf, count);
respos += count; respos += count;
} else { } else {
log_error("'%s' ressize %zd too short\n", cmd, ressize); log_error("'%s' ressize %zd too short", cmd, ressize);
} }
} }
@ -520,12 +520,12 @@ static void spawn_read(struct udev_event *event,
pos = buf; pos = buf;
while ((line = strsep(&pos, "\n"))) { while ((line = strsep(&pos, "\n"))) {
if (pos != NULL || line[0] != '\0') if (pos != NULL || line[0] != '\0')
log_debug("'%s'(%s) '%s'\n", cmd, *fd == fd_stdout ? "out" : "err" , line); log_debug("'%s'(%s) '%s'", cmd, *fd == fd_stdout ? "out" : "err" , line);
} }
} }
} else if (ev[i].events & EPOLLHUP) { } else if (ev[i].events & EPOLLHUP) {
if (epoll_ctl(fd_ep, EPOLL_CTL_DEL, *fd, NULL) < 0) { if (epoll_ctl(fd_ep, EPOLL_CTL_DEL, *fd, NULL) < 0) {
log_error("failed to remove fd from epoll: %m\n"); log_error("failed to remove fd from epoll: %m");
goto out; goto out;
} }
*fd = -1; *fd = -1;
@ -570,11 +570,11 @@ static int spawn_wait(struct udev_event *event, const char *cmd, pid_t pid)
if (errno == EINTR) if (errno == EINTR)
continue; continue;
err = -errno; err = -errno;
log_error("failed to poll: %m\n"); log_error("failed to poll: %m");
goto out; goto out;
} }
if (fdcount == 0) { if (fdcount == 0) {
log_error("timeout: killing '%s' [%u]\n", cmd, pid); log_error("timeout: killing '%s' [%u]", cmd, pid);
kill(pid, SIGKILL); kill(pid, SIGKILL);
} }
@ -595,20 +595,20 @@ static int spawn_wait(struct udev_event *event, const char *cmd, pid_t pid)
if (waitpid(pid, &status, WNOHANG) < 0) if (waitpid(pid, &status, WNOHANG) < 0)
break; break;
if (WIFEXITED(status)) { if (WIFEXITED(status)) {
log_debug("'%s' [%u] exit with return code %i\n", cmd, pid, WEXITSTATUS(status)); log_debug("'%s' [%u] exit with return code %i", cmd, pid, WEXITSTATUS(status));
if (WEXITSTATUS(status) != 0) if (WEXITSTATUS(status) != 0)
err = -1; err = -1;
} else if (WIFSIGNALED(status)) { } else if (WIFSIGNALED(status)) {
log_error("'%s' [%u] terminated by signal %i (%s)\n", cmd, pid, WTERMSIG(status), strsignal(WTERMSIG(status))); log_error("'%s' [%u] terminated by signal %i (%s)", cmd, pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
err = -1; err = -1;
} else if (WIFSTOPPED(status)) { } else if (WIFSTOPPED(status)) {
log_error("'%s' [%u] stopped\n", cmd, pid); log_error("'%s' [%u] stopped", cmd, pid);
err = -1; err = -1;
} else if (WIFCONTINUED(status)) { } else if (WIFCONTINUED(status)) {
log_error("'%s' [%u] continued\n", cmd, pid); log_error("'%s' [%u] continued", cmd, pid);
err = -1; err = -1;
} else { } else {
log_error("'%s' [%u] exit with status 0x%04x\n", cmd, pid, status); log_error("'%s' [%u] exit with status 0x%04x", cmd, pid, status);
err = -1; err = -1;
} }
pid = 0; pid = 0;
@ -674,14 +674,14 @@ int udev_event_spawn(struct udev_event *event,
if (result != NULL || udev_get_log_priority(udev) >= LOG_INFO) { if (result != NULL || udev_get_log_priority(udev) >= LOG_INFO) {
if (pipe2(outpipe, O_NONBLOCK) != 0) { if (pipe2(outpipe, O_NONBLOCK) != 0) {
err = -errno; err = -errno;
log_error("pipe failed: %m\n"); log_error("pipe failed: %m");
goto out; goto out;
} }
} }
if (udev_get_log_priority(udev) >= LOG_INFO) { if (udev_get_log_priority(udev) >= LOG_INFO) {
if (pipe2(errpipe, O_NONBLOCK) != 0) { if (pipe2(errpipe, O_NONBLOCK) != 0) {
err = -errno; err = -errno;
log_error("pipe failed: %m\n"); log_error("pipe failed: %m");
goto out; goto out;
} }
} }
@ -705,14 +705,14 @@ int udev_event_spawn(struct udev_event *event,
errpipe[READ_END] = -1; errpipe[READ_END] = -1;
} }
log_debug("starting '%s'\n", cmd); log_debug("starting '%s'", cmd);
spawn_exec(event, cmd, argv, envp, sigmask, spawn_exec(event, cmd, argv, envp, sigmask,
outpipe[WRITE_END], errpipe[WRITE_END]); outpipe[WRITE_END], errpipe[WRITE_END]);
_exit(2 ); _exit(2 );
case -1: case -1:
log_error("fork of '%s' failed: %m\n", cmd); log_error("fork of '%s' failed: %m", cmd);
err = -1; err = -1;
goto out; goto out;
default: default:
@ -755,7 +755,7 @@ static int rename_netif(struct udev_event *event)
oldname = udev_device_get_sysname(dev); oldname = udev_device_get_sysname(dev);
log_debug("changing net interface name from '%s' to '%s'\n", log_debug("changing net interface name from '%s' to '%s'",
oldname, event->name); oldname, event->name);
strscpy(name, IFNAMSIZ, event->name); strscpy(name, IFNAMSIZ, event->name);
@ -817,7 +817,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules,
err = rename_netif(event); err = rename_netif(event);
if (err == 0) { if (err == 0) {
log_debug("renamed netif to '%s'\n", event->name); log_debug("renamed netif to '%s'", event->name);
/* remember old name */ /* remember old name */
udev_device_add_property(dev, "INTERFACE_OLD", udev_device_get_sysname(dev)); udev_device_add_property(dev, "INTERFACE_OLD", udev_device_get_sysname(dev));
@ -830,7 +830,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules,
strscpy(pos, sizeof(syspath) - (pos - syspath), event->name); strscpy(pos, sizeof(syspath) - (pos - syspath), event->name);
udev_device_set_syspath(event->dev, syspath); udev_device_set_syspath(event->dev, syspath);
udev_device_add_property(dev, "INTERFACE", udev_device_get_sysname(dev)); udev_device_add_property(dev, "INTERFACE", udev_device_get_sysname(dev));
log_debug("changed devpath to '%s'\n", udev_device_get_devpath(dev)); log_debug("changed devpath to '%s'", udev_device_get_devpath(dev));
} }
} }
} }
@ -900,7 +900,7 @@ void udev_event_execute_run(struct udev_event *event, const sigset_t *sigmask)
char **envp; char **envp;
if (event->exec_delay > 0) { if (event->exec_delay > 0) {
log_debug("delay execution of '%s'\n", program); log_debug("delay execution of '%s'", program);
sleep(event->exec_delay); sleep(event->exec_delay);
} }

View File

@ -66,7 +66,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
/* preserve link with correct target, do not replace node of other device */ /* preserve link with correct target, do not replace node of other device */
if (lstat(slink, &stats) == 0) { if (lstat(slink, &stats) == 0) {
if (S_ISBLK(stats.st_mode) || S_ISCHR(stats.st_mode)) { if (S_ISBLK(stats.st_mode) || S_ISCHR(stats.st_mode)) {
log_error("conflicting device node '%s' found, link to '%s' will not be created\n", slink, node); log_error("conflicting device node '%s' found, link to '%s' will not be created", slink, node);
goto exit; goto exit;
} else if (S_ISLNK(stats.st_mode)) { } else if (S_ISLNK(stats.st_mode)) {
char buf[UTIL_PATH_SIZE]; char buf[UTIL_PATH_SIZE];
@ -76,7 +76,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
if (len > 0 && len < (int)sizeof(buf)) { if (len > 0 && len < (int)sizeof(buf)) {
buf[len] = '\0'; buf[len] = '\0';
if (streq(target, buf)) { if (streq(target, buf)) {
log_debug("preserve already existing symlink '%s' to '%s'\n", slink, target); log_debug("preserve already existing symlink '%s' to '%s'", slink, target);
label_fix(slink, true, false); label_fix(slink, true, false);
utimensat(AT_FDCWD, slink, NULL, AT_SYMLINK_NOFOLLOW); utimensat(AT_FDCWD, slink, NULL, AT_SYMLINK_NOFOLLOW);
goto exit; goto exit;
@ -84,7 +84,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
} }
} }
} else { } else {
log_debug("creating symlink '%s' to '%s'\n", slink, target); log_debug("creating symlink '%s' to '%s'", slink, target);
do { do {
err = mkdir_parents_label(slink, 0755); err = mkdir_parents_label(slink, 0755);
if (err != 0 && err != -ENOENT) if (err != 0 && err != -ENOENT)
@ -99,7 +99,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
goto exit; goto exit;
} }
log_debug("atomically replace '%s'\n", slink); log_debug("atomically replace '%s'", slink);
strscpyl(slink_tmp, sizeof(slink_tmp), slink, ".tmp-", udev_device_get_id_filename(dev), NULL); strscpyl(slink_tmp, sizeof(slink_tmp), slink, ".tmp-", udev_device_get_id_filename(dev), NULL);
unlink(slink_tmp); unlink(slink_tmp);
do { do {
@ -113,12 +113,12 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s
label_context_clear(); label_context_clear();
} while (err == -ENOENT); } while (err == -ENOENT);
if (err != 0) { if (err != 0) {
log_error("symlink '%s' '%s' failed: %m\n", target, slink_tmp); log_error("symlink '%s' '%s' failed: %m", target, slink_tmp);
goto exit; goto exit;
} }
err = rename(slink_tmp, slink); err = rename(slink_tmp, slink);
if (err != 0) { if (err != 0) {
log_error("rename '%s' '%s' failed: %m\n", slink_tmp, slink); log_error("rename '%s' '%s' failed: %m", slink_tmp, slink);
unlink(slink_tmp); unlink(slink_tmp);
} }
exit: exit:
@ -152,7 +152,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons
if (dent->d_name[0] == '.') if (dent->d_name[0] == '.')
continue; continue;
log_debug("found '%s' claiming '%s'\n", dent->d_name, stackdir); log_debug("found '%s' claiming '%s'", dent->d_name, stackdir);
/* did we find ourself? */ /* did we find ourself? */
if (streq(dent->d_name, udev_device_get_id_filename(dev))) if (streq(dent->d_name, udev_device_get_id_filename(dev)))
@ -165,7 +165,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons
devnode = udev_device_get_devnode(dev_db); devnode = udev_device_get_devnode(dev_db);
if (devnode != NULL) { if (devnode != NULL) {
if (target == NULL || udev_device_get_devlink_priority(dev_db) > priority) { if (target == NULL || udev_device_get_devlink_priority(dev_db) > priority) {
log_debug("'%s' claims priority %i for '%s'\n", log_debug("'%s' claims priority %i for '%s'",
udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir); udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir);
priority = udev_device_get_devlink_priority(dev_db); priority = udev_device_get_devlink_priority(dev_db);
strscpy(buf, bufsize, devnode); strscpy(buf, bufsize, devnode);
@ -198,11 +198,11 @@ static void link_update(struct udev_device *dev, const char *slink, bool add)
target = link_find_prioritized(dev, add, dirname, buf, sizeof(buf)); target = link_find_prioritized(dev, add, dirname, buf, sizeof(buf));
if (target == NULL) { if (target == NULL) {
log_debug("no reference left, remove '%s'\n", slink); log_debug("no reference left, remove '%s'", slink);
if (unlink(slink) == 0) if (unlink(slink) == 0)
util_delete_path(udev, slink); util_delete_path(udev, slink);
} else { } else {
log_debug("creating link '%s' to '%s'\n", slink, target); log_debug("creating link '%s' to '%s'", slink, target);
node_symlink(dev, target, slink); node_symlink(dev, target, slink);
} }
@ -247,7 +247,7 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev
if (found) if (found)
continue; continue;
log_debug("update old name, '%s' no longer belonging to '%s'\n", log_debug("update old name, '%s' no longer belonging to '%s'",
name, udev_device_get_devpath(dev)); name, udev_device_get_devpath(dev));
link_update(dev, name, false); link_update(dev, name, false);
} }
@ -269,13 +269,13 @@ static int node_permissions_apply(struct udev_device *dev, bool apply,
if (lstat(devnode, &stats) != 0) { if (lstat(devnode, &stats) != 0) {
err = -errno; err = -errno;
log_debug("can not stat() node '%s' (%m)\n", devnode); log_debug("can not stat() node '%s' (%m)", devnode);
goto out; goto out;
} }
if (((stats.st_mode & S_IFMT) != (mode & S_IFMT)) || (stats.st_rdev != devnum)) { if (((stats.st_mode & S_IFMT) != (mode & S_IFMT)) || (stats.st_rdev != devnum)) {
err = -EEXIST; err = -EEXIST;
log_debug("found node '%s' with non-matching devnum %s, skip handling\n", log_debug("found node '%s' with non-matching devnum %s, skip handling",
udev_device_get_devnode(dev), udev_device_get_id_filename(dev)); udev_device_get_devnode(dev), udev_device_get_id_filename(dev));
goto out; goto out;
} }
@ -285,11 +285,11 @@ static int node_permissions_apply(struct udev_device *dev, bool apply,
bool smack = false; bool smack = false;
if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) { if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) {
log_debug("set permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); log_debug("set permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
chmod(devnode, mode); chmod(devnode, mode);
chown(devnode, uid, gid); chown(devnode, uid, gid);
} else { } else {
log_debug("preserve permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); log_debug("preserve permissions %s, %#o, uid=%u, gid=%u", devnode, mode, uid, gid);
} }
/* apply SECLABEL{$module}=$label */ /* apply SECLABEL{$module}=$label */
@ -336,7 +336,7 @@ void udev_node_add(struct udev_device *dev, bool apply,
char filename[UTIL_PATH_SIZE]; char filename[UTIL_PATH_SIZE];
struct udev_list_entry *list_entry; struct udev_list_entry *list_entry;
log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d\n", log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d",
udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid); udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid);
if (node_permissions_apply(dev, apply, mode, uid, gid, seclabel_list) < 0) if (node_permissions_apply(dev, apply, mode, uid, gid, seclabel_list) < 0)

View File

@ -324,7 +324,7 @@ static void dump_token(struct udev_rules *rules, struct token *token)
const char *tk_ptr = (char *)token; const char *tk_ptr = (char *)token;
unsigned int idx = (tk_ptr - tks_ptr) / sizeof(struct token); unsigned int idx = (tk_ptr - tks_ptr) / sizeof(struct token);
log_debug("* RULE %s:%u, token: %u, count: %u, label: '%s'\n", log_debug("* RULE %s:%u, token: %u, count: %u, label: '%s'",
&rules->buf[token->rule.filename_off], token->rule.filename_line, &rules->buf[token->rule.filename_off], token->rule.filename_line,
idx, token->rule.token_count, idx, token->rule.token_count,
&rules->buf[token->rule.label_off]); &rules->buf[token->rule.label_off]);
@ -356,68 +356,68 @@ static void dump_token(struct udev_rules *rules, struct token *token)
case TK_A_MODE: case TK_A_MODE:
case TK_A_RUN_BUILTIN: case TK_A_RUN_BUILTIN:
case TK_A_RUN_PROGRAM: case TK_A_RUN_PROGRAM:
log_debug("%s %s '%s'(%s)\n", log_debug("%s %s '%s'(%s)",
token_str(type), operation_str(op), value, string_glob_str(glob)); token_str(type), operation_str(op), value, string_glob_str(glob));
break; break;
case TK_M_IMPORT_BUILTIN: case TK_M_IMPORT_BUILTIN:
log_debug("%s %i '%s'\n", token_str(type), token->key.builtin_cmd, value); log_debug("%s %i '%s'", token_str(type), token->key.builtin_cmd, value);
break; break;
case TK_M_ATTR: case TK_M_ATTR:
case TK_M_ATTRS: case TK_M_ATTRS:
case TK_M_ENV: case TK_M_ENV:
case TK_A_ATTR: case TK_A_ATTR:
case TK_A_ENV: case TK_A_ENV:
log_debug("%s %s '%s' '%s'(%s)\n", log_debug("%s %s '%s' '%s'(%s)",
token_str(type), operation_str(op), attr, value, string_glob_str(glob)); token_str(type), operation_str(op), attr, value, string_glob_str(glob));
break; break;
case TK_M_TAG: case TK_M_TAG:
case TK_A_TAG: case TK_A_TAG:
log_debug("%s %s '%s'\n", token_str(type), operation_str(op), value); log_debug("%s %s '%s'", token_str(type), operation_str(op), value);
break; break;
case TK_A_STRING_ESCAPE_NONE: case TK_A_STRING_ESCAPE_NONE:
case TK_A_STRING_ESCAPE_REPLACE: case TK_A_STRING_ESCAPE_REPLACE:
case TK_A_DB_PERSIST: case TK_A_DB_PERSIST:
log_debug("%s\n", token_str(type)); log_debug("%s", token_str(type));
break; break;
case TK_M_TEST: case TK_M_TEST:
log_debug("%s %s '%s'(%s) %#o\n", log_debug("%s %s '%s'(%s) %#o",
token_str(type), operation_str(op), value, string_glob_str(glob), token->key.mode); token_str(type), operation_str(op), value, string_glob_str(glob), token->key.mode);
break; break;
case TK_A_INOTIFY_WATCH: case TK_A_INOTIFY_WATCH:
log_debug("%s %u\n", token_str(type), token->key.watch); log_debug("%s %u", token_str(type), token->key.watch);
break; break;
case TK_A_DEVLINK_PRIO: case TK_A_DEVLINK_PRIO:
log_debug("%s %u\n", token_str(type), token->key.devlink_prio); log_debug("%s %u", token_str(type), token->key.devlink_prio);
break; break;
case TK_A_OWNER_ID: case TK_A_OWNER_ID:
log_debug("%s %s %u\n", token_str(type), operation_str(op), token->key.uid); log_debug("%s %s %u", token_str(type), operation_str(op), token->key.uid);
break; break;
case TK_A_GROUP_ID: case TK_A_GROUP_ID:
log_debug("%s %s %u\n", token_str(type), operation_str(op), token->key.gid); log_debug("%s %s %u", token_str(type), operation_str(op), token->key.gid);
break; break;
case TK_A_MODE_ID: case TK_A_MODE_ID:
log_debug("%s %s %#o\n", token_str(type), operation_str(op), token->key.mode); log_debug("%s %s %#o", token_str(type), operation_str(op), token->key.mode);
break; break;
case TK_A_STATIC_NODE: case TK_A_STATIC_NODE:
log_debug("%s '%s'\n", token_str(type), value); log_debug("%s '%s'", token_str(type), value);
break; break;
case TK_A_SECLABEL: case TK_A_SECLABEL:
log_debug("%s %s '%s' '%s'\n", token_str(type), operation_str(op), attr, value); log_debug("%s %s '%s' '%s'", token_str(type), operation_str(op), attr, value);
break; break;
case TK_M_EVENT_TIMEOUT: case TK_M_EVENT_TIMEOUT:
log_debug("%s %u\n", token_str(type), token->key.event_timeout); log_debug("%s %u", token_str(type), token->key.event_timeout);
break; break;
case TK_A_GOTO: case TK_A_GOTO:
log_debug("%s '%s' %u\n", token_str(type), value, token->key.rule_goto); log_debug("%s '%s' %u", token_str(type), value, token->key.rule_goto);
break; break;
case TK_END: case TK_END:
log_debug("* %s\n", token_str(type)); log_debug("* %s", token_str(type));
break; break;
case TK_M_PARENTS_MIN: case TK_M_PARENTS_MIN:
case TK_M_PARENTS_MAX: case TK_M_PARENTS_MAX:
case TK_M_MAX: case TK_M_MAX:
case TK_UNSET: case TK_UNSET:
log_debug("unknown type %u\n", type); log_debug("unknown type %u", type);
break; break;
} }
} }
@ -426,7 +426,7 @@ static void dump_rules(struct udev_rules *rules)
{ {
unsigned int i; unsigned int i;
log_debug("dumping %u (%zu bytes) tokens, %u (%zu bytes) strings\n", log_debug("dumping %u (%zu bytes) tokens, %u (%zu bytes) strings",
rules->token_cur, rules->token_cur,
rules->token_cur * sizeof(struct token), rules->token_cur * sizeof(struct token),
rules->buf_count, rules->buf_count,
@ -595,7 +595,7 @@ static int import_property_from_string(struct udev_device *dev, char *line)
/* unquote */ /* unquote */
if (val[0] == '"' || val[0] == '\'') { if (val[0] == '"' || val[0] == '\'') {
if (val[len-1] != val[0]) { if (val[len-1] != val[0]) {
log_debug("inconsistent quoting: '%s', skip\n", line); log_debug("inconsistent quoting: '%s', skip", line);
return -1; return -1;
} }
val[len-1] = '\0'; val[len-1] = '\0';
@ -698,18 +698,18 @@ static int wait_for_file(struct udev_device *dev, const char *file, int timeout)
/* lookup file */ /* lookup file */
if (stat(file, &stats) == 0) { if (stat(file, &stats) == 0) {
log_debug("file '%s' appeared after %i loops\n", file, (timeout * WAIT_LOOP_PER_SECOND) - loop-1); log_debug("file '%s' appeared after %i loops", file, (timeout * WAIT_LOOP_PER_SECOND) - loop-1);
return 0; return 0;
} }
/* make sure, the device did not disappear in the meantime */ /* make sure, the device did not disappear in the meantime */
if (devicepath[0] != '\0' && stat(devicepath, &stats) != 0) { if (devicepath[0] != '\0' && stat(devicepath, &stats) != 0) {
log_debug("device disappeared while waiting for '%s'\n", file); log_debug("device disappeared while waiting for '%s'", file);
return -2; return -2;
} }
log_debug("wait for '%s' for %i mseconds\n", file, 1000 / WAIT_LOOP_PER_SECOND); log_debug("wait for '%s' for %i mseconds", file, 1000 / WAIT_LOOP_PER_SECOND);
nanosleep(&duration, NULL); nanosleep(&duration, NULL);
} }
log_debug("waiting for '%s' failed\n", file); log_debug("waiting for '%s' failed", file);
return -1; return -1;
} }
@ -849,7 +849,7 @@ static const char *get_key_attribute(struct udev *udev, char *str)
attr++; attr++;
pos = strchr(attr, '}'); pos = strchr(attr, '}');
if (pos == NULL) { if (pos == NULL) {
log_error("missing closing brace for format\n"); log_error("missing closing brace for format");
return NULL; return NULL;
} }
pos[0] = '\0'; pos[0] = '\0';
@ -950,7 +950,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type,
case TK_M_MAX: case TK_M_MAX:
case TK_END: case TK_END:
case TK_UNSET: case TK_UNSET:
log_error("wrong type %u\n", type); log_error("wrong type %u", type);
return -1; return -1;
} }
@ -1001,7 +1001,7 @@ static int rule_add_key(struct rule_tmp *rule_tmp, enum token_type type,
token->key.op = op; token->key.op = op;
rule_tmp->token_cur++; rule_tmp->token_cur++;
if (rule_tmp->token_cur >= ELEMENTSOF(rule_tmp->token)) { if (rule_tmp->token_cur >= ELEMENTSOF(rule_tmp->token)) {
log_error("temporary rule array too small\n"); log_error("temporary rule array too small");
return -1; return -1;
} }
return 0; return 0;
@ -1088,7 +1088,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "ACTION")) { if (streq(key, "ACTION")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid ACTION operation\n"); log_error("invalid ACTION operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_ACTION, op, value, NULL); rule_add_key(&rule_tmp, TK_M_ACTION, op, value, NULL);
@ -1097,7 +1097,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "DEVPATH")) { if (streq(key, "DEVPATH")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid DEVPATH operation\n"); log_error("invalid DEVPATH operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_DEVPATH, op, value, NULL); rule_add_key(&rule_tmp, TK_M_DEVPATH, op, value, NULL);
@ -1106,7 +1106,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "KERNEL")) { if (streq(key, "KERNEL")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid KERNEL operation\n"); log_error("invalid KERNEL operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_KERNEL, op, value, NULL); rule_add_key(&rule_tmp, TK_M_KERNEL, op, value, NULL);
@ -1115,7 +1115,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "SUBSYSTEM")) { if (streq(key, "SUBSYSTEM")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid SUBSYSTEM operation\n"); log_error("invalid SUBSYSTEM operation");
goto invalid; goto invalid;
} }
/* bus, class, subsystem events should all be the same */ /* bus, class, subsystem events should all be the same */
@ -1123,7 +1123,7 @@ static int add_rule(struct udev_rules *rules, char *line,
streq(value, "bus") || streq(value, "bus") ||
streq(value, "class")) { streq(value, "class")) {
if (streq(value, "bus") || streq(value, "class")) if (streq(value, "bus") || streq(value, "class"))
log_error("'%s' must be specified as 'subsystem' \n" log_error("'%s' must be specified as 'subsystem' "
"please fix it in %s:%u", value, filename, lineno); "please fix it in %s:%u", value, filename, lineno);
rule_add_key(&rule_tmp, TK_M_SUBSYSTEM, op, "subsystem|class|bus", NULL); rule_add_key(&rule_tmp, TK_M_SUBSYSTEM, op, "subsystem|class|bus", NULL);
} else } else
@ -1133,7 +1133,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "DRIVER")) { if (streq(key, "DRIVER")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid DRIVER operation\n"); log_error("invalid DRIVER operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_DRIVER, op, value, NULL); rule_add_key(&rule_tmp, TK_M_DRIVER, op, value, NULL);
@ -1143,7 +1143,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (startswith(key, "ATTR{")) { if (startswith(key, "ATTR{")) {
attr = get_key_attribute(rules->udev, key + sizeof("ATTR")-1); attr = get_key_attribute(rules->udev, key + sizeof("ATTR")-1);
if (attr == NULL) { if (attr == NULL) {
log_error("error parsing ATTR attribute\n"); log_error("error parsing ATTR attribute");
goto invalid; goto invalid;
} }
if (op < OP_MATCH_MAX) { if (op < OP_MATCH_MAX) {
@ -1157,7 +1157,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (startswith(key, "SECLABEL{")) { if (startswith(key, "SECLABEL{")) {
attr = get_key_attribute(rules->udev, key + sizeof("SECLABEL")-1); attr = get_key_attribute(rules->udev, key + sizeof("SECLABEL")-1);
if (!attr) { if (!attr) {
log_error("error parsing SECLABEL attribute\n"); log_error("error parsing SECLABEL attribute");
goto invalid; goto invalid;
} }
@ -1167,7 +1167,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "KERNELS")) { if (streq(key, "KERNELS")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid KERNELS operation\n"); log_error("invalid KERNELS operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_KERNELS, op, value, NULL); rule_add_key(&rule_tmp, TK_M_KERNELS, op, value, NULL);
@ -1176,7 +1176,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "SUBSYSTEMS")) { if (streq(key, "SUBSYSTEMS")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid SUBSYSTEMS operation\n"); log_error("invalid SUBSYSTEMS operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_SUBSYSTEMS, op, value, NULL); rule_add_key(&rule_tmp, TK_M_SUBSYSTEMS, op, value, NULL);
@ -1185,7 +1185,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "DRIVERS")) { if (streq(key, "DRIVERS")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid DRIVERS operation\n"); log_error("invalid DRIVERS operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_DRIVERS, op, value, NULL); rule_add_key(&rule_tmp, TK_M_DRIVERS, op, value, NULL);
@ -1194,12 +1194,12 @@ static int add_rule(struct udev_rules *rules, char *line,
if (startswith(key, "ATTRS{")) { if (startswith(key, "ATTRS{")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid ATTRS operation\n"); log_error("invalid ATTRS operation");
goto invalid; goto invalid;
} }
attr = get_key_attribute(rules->udev, key + sizeof("ATTRS")-1); attr = get_key_attribute(rules->udev, key + sizeof("ATTRS")-1);
if (attr == NULL) { if (attr == NULL) {
log_error("error parsing ATTRS attribute\n"); log_error("error parsing ATTRS attribute");
goto invalid; goto invalid;
} }
if (startswith(attr, "device/")) if (startswith(attr, "device/"))
@ -1214,7 +1214,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "TAGS")) { if (streq(key, "TAGS")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid TAGS operation\n"); log_error("invalid TAGS operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_TAGS, op, value, NULL); rule_add_key(&rule_tmp, TK_M_TAGS, op, value, NULL);
@ -1224,7 +1224,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (startswith(key, "ENV{")) { if (startswith(key, "ENV{")) {
attr = get_key_attribute(rules->udev, key + sizeof("ENV")-1); attr = get_key_attribute(rules->udev, key + sizeof("ENV")-1);
if (attr == NULL) { if (attr == NULL) {
log_error("error parsing ENV attribute\n"); log_error("error parsing ENV attribute");
goto invalid; goto invalid;
} }
if (op < OP_MATCH_MAX) { if (op < OP_MATCH_MAX) {
@ -1249,7 +1249,7 @@ static int add_rule(struct udev_rules *rules, char *line,
for (i = 0; i < ELEMENTSOF(blacklist); i++) { for (i = 0; i < ELEMENTSOF(blacklist); i++) {
if (!streq(attr, blacklist[i])) if (!streq(attr, blacklist[i]))
continue; continue;
log_error("invalid ENV attribute, '%s' can not be set %s:%u\n", attr, filename, lineno); log_error("invalid ENV attribute, '%s' can not be set %s:%u", attr, filename, lineno);
goto invalid; goto invalid;
} }
if (rule_add_key(&rule_tmp, TK_A_ENV, op, value, attr) != 0) if (rule_add_key(&rule_tmp, TK_A_ENV, op, value, attr) != 0)
@ -1273,7 +1273,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (streq(key, "RESULT")) { if (streq(key, "RESULT")) {
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid RESULT operation\n"); log_error("invalid RESULT operation");
goto invalid; goto invalid;
} }
rule_add_key(&rule_tmp, TK_M_RESULT, op, value, NULL); rule_add_key(&rule_tmp, TK_M_RESULT, op, value, NULL);
@ -1283,7 +1283,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (startswith(key, "IMPORT")) { if (startswith(key, "IMPORT")) {
attr = get_key_attribute(rules->udev, key + sizeof("IMPORT")-1); attr = get_key_attribute(rules->udev, key + sizeof("IMPORT")-1);
if (attr == NULL) { if (attr == NULL) {
log_error("IMPORT{} type missing, ignoring IMPORT %s:%u\n", filename, lineno); log_error("IMPORT{} type missing, ignoring IMPORT %s:%u", filename, lineno);
continue; continue;
} }
if (streq(attr, "program")) { if (streq(attr, "program")) {
@ -1293,7 +1293,7 @@ static int add_rule(struct udev_rules *rules, char *line,
cmd = udev_builtin_lookup(value); cmd = udev_builtin_lookup(value);
if (cmd < UDEV_BUILTIN_MAX) { if (cmd < UDEV_BUILTIN_MAX) {
log_debug("IMPORT found builtin '%s', replacing %s:%u\n", log_debug("IMPORT found builtin '%s', replacing %s:%u",
value, filename, lineno); value, filename, lineno);
rule_add_key(&rule_tmp, TK_M_IMPORT_BUILTIN, op, value, &cmd); rule_add_key(&rule_tmp, TK_M_IMPORT_BUILTIN, op, value, &cmd);
continue; continue;
@ -1306,7 +1306,7 @@ static int add_rule(struct udev_rules *rules, char *line,
if (cmd < UDEV_BUILTIN_MAX) if (cmd < UDEV_BUILTIN_MAX)
rule_add_key(&rule_tmp, TK_M_IMPORT_BUILTIN, op, value, &cmd); rule_add_key(&rule_tmp, TK_M_IMPORT_BUILTIN, op, value, &cmd);
else else
log_error("IMPORT{builtin}: '%s' unknown %s:%u\n", value, filename, lineno); log_error("IMPORT{builtin}: '%s' unknown %s:%u", value, filename, lineno);
} else if (streq(attr, "file")) { } else if (streq(attr, "file")) {
rule_add_key(&rule_tmp, TK_M_IMPORT_FILE, op, value, NULL); rule_add_key(&rule_tmp, TK_M_IMPORT_FILE, op, value, NULL);
} else if (streq(attr, "db")) { } else if (streq(attr, "db")) {
@ -1316,7 +1316,7 @@ static int add_rule(struct udev_rules *rules, char *line,
} else if (streq(attr, "parent")) { } else if (streq(attr, "parent")) {
rule_add_key(&rule_tmp, TK_M_IMPORT_PARENT, op, value, NULL); rule_add_key(&rule_tmp, TK_M_IMPORT_PARENT, op, value, NULL);
} else } else
log_error("IMPORT{} unknown type, ignoring IMPORT %s:%u\n", filename, lineno); log_error("IMPORT{} unknown type, ignoring IMPORT %s:%u", filename, lineno);
continue; continue;
} }
@ -1324,7 +1324,7 @@ static int add_rule(struct udev_rules *rules, char *line,
mode_t mode = 0; mode_t mode = 0;
if (op > OP_MATCH_MAX) { if (op > OP_MATCH_MAX) {
log_error("invalid TEST operation\n"); log_error("invalid TEST operation");
goto invalid; goto invalid;
} }
attr = get_key_attribute(rules->udev, key + sizeof("TEST")-1); attr = get_key_attribute(rules->udev, key + sizeof("TEST")-1);
@ -1348,13 +1348,13 @@ static int add_rule(struct udev_rules *rules, char *line,
if (cmd < UDEV_BUILTIN_MAX) if (cmd < UDEV_BUILTIN_MAX)
rule_add_key(&rule_tmp, TK_A_RUN_BUILTIN, op, value, &cmd); rule_add_key(&rule_tmp, TK_A_RUN_BUILTIN, op, value, &cmd);
else else
log_error("IMPORT{builtin}: '%s' unknown %s:%u\n", value, filename, lineno); log_error("IMPORT{builtin}: '%s' unknown %s:%u", value, filename, lineno);
} else if (streq(attr, "program")) { } else if (streq(attr, "program")) {
enum udev_builtin_cmd cmd = UDEV_BUILTIN_MAX; enum udev_builtin_cmd cmd = UDEV_BUILTIN_MAX;
rule_add_key(&rule_tmp, TK_A_RUN_PROGRAM, op, value, &cmd); rule_add_key(&rule_tmp, TK_A_RUN_PROGRAM, op, value, &cmd);
} else { } else {
log_error("RUN{} unknown type, ignoring RUN %s:%u\n", filename, lineno); log_error("RUN{} unknown type, ignoring RUN %s:%u", filename, lineno);
} }
continue; continue;
@ -1504,7 +1504,7 @@ static int add_rule(struct udev_rules *rules, char *line,
continue; continue;
} }
log_error("unknown key '%s' in %s:%u\n", key, filename, lineno); log_error("unknown key '%s' in %s:%u", key, filename, lineno);
goto invalid; goto invalid;
} }
@ -1519,7 +1519,7 @@ static int add_rule(struct udev_rules *rules, char *line,
return 0; return 0;
invalid: invalid:
log_error("invalid rule '%s:%u'\n", filename, lineno); log_error("invalid rule '%s:%u'", filename, lineno);
return -1; return -1;
} }
@ -1533,10 +1533,10 @@ static int parse_file(struct udev_rules *rules, const char *filename)
unsigned int i; unsigned int i;
if (null_or_empty_path(filename)) { if (null_or_empty_path(filename)) {
log_debug("skip empty file: %s\n", filename); log_debug("skip empty file: %s", filename);
return 0; return 0;
} }
log_debug("read rules file: %s\n", filename); log_debug("read rules file: %s", filename);
f = fopen(filename, "re"); f = fopen(filename, "re");
if (f == NULL) if (f == NULL)
@ -1574,7 +1574,7 @@ static int parse_file(struct udev_rules *rules, const char *filename)
} }
if (len+1 >= sizeof(line)) { if (len+1 >= sizeof(line)) {
log_error("line too long '%s':%u, ignored\n", filename, line_nr); log_error("line too long '%s':%u, ignored", filename, line_nr);
continue; continue;
} }
add_rule(rules, key, filename, filename_off, line_nr); add_rule(rules, key, filename, filename_off, line_nr);
@ -1598,7 +1598,7 @@ static int parse_file(struct udev_rules *rules, const char *filename)
break; break;
} }
if (rules->tokens[i].key.rule_goto == 0) if (rules->tokens[i].key.rule_goto == 0)
log_error("GOTO '%s' has no matching label in: '%s'\n", label, filename); log_error("GOTO '%s' has no matching label in: '%s'", label, filename);
} }
} }
return 0; return 0;
@ -1638,7 +1638,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
return udev_rules_unref(rules); return udev_rules_unref(rules);
} }
if (!path_strv_canonicalize(rules->dirs)) { if (!path_strv_canonicalize(rules->dirs)) {
log_error("failed to canonicalize config directories\n"); log_error("failed to canonicalize config directories");
return udev_rules_unref(rules); return udev_rules_unref(rules);
} }
strv_uniq(rules->dirs); strv_uniq(rules->dirs);
@ -1647,7 +1647,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
r = conf_files_list_strv(&files, ".rules", NULL, (const char **)rules->dirs); r = conf_files_list_strv(&files, ".rules", NULL, (const char **)rules->dirs);
if (r < 0) { if (r < 0) {
log_error("failed to enumerate rules files: %s\n", strerror(-r)); log_error("failed to enumerate rules files: %s", strerror(-r));
return udev_rules_unref(rules); return udev_rules_unref(rules);
} }
@ -1666,11 +1666,11 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
memset(&end_token, 0x00, sizeof(struct token)); memset(&end_token, 0x00, sizeof(struct token));
end_token.type = TK_END; end_token.type = TK_END;
add_token(rules, &end_token); add_token(rules, &end_token);
log_debug("rules contain %zu bytes tokens (%u * %zu bytes), %zu bytes strings\n", log_debug("rules contain %zu bytes tokens (%u * %zu bytes), %zu bytes strings",
rules->token_max * sizeof(struct token), rules->token_max, sizeof(struct token), rules->strbuf->len); rules->token_max * sizeof(struct token), rules->token_max, sizeof(struct token), rules->strbuf->len);
/* cleanup temporary strbuf data */ /* cleanup temporary strbuf data */
log_debug("%zu strings (%zu bytes), %zu de-duplicated (%zu bytes), %zu trie nodes used\n", log_debug("%zu strings (%zu bytes), %zu de-duplicated (%zu bytes), %zu trie nodes used",
rules->strbuf->in_count, rules->strbuf->in_len, rules->strbuf->in_count, rules->strbuf->in_len,
rules->strbuf->dedup_count, rules->strbuf->dedup_len, rules->strbuf->nodes_count); rules->strbuf->dedup_count, rules->strbuf->dedup_len, rules->strbuf->nodes_count);
strbuf_complete(rules->strbuf); strbuf_complete(rules->strbuf);
@ -2035,7 +2035,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
break; break;
} }
case TK_M_EVENT_TIMEOUT: case TK_M_EVENT_TIMEOUT:
log_debug("OPTIONS event_timeout=%u\n", cur->key.event_timeout); log_debug("OPTIONS event_timeout=%u", cur->key.event_timeout);
event->timeout_usec = cur->key.event_timeout * 1000 * 1000; event->timeout_usec = cur->key.event_timeout * 1000 * 1000;
break; break;
case TK_M_PROGRAM: { case TK_M_PROGRAM: {
@ -2047,7 +2047,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
event->program_result = NULL; event->program_result = NULL;
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), program, sizeof(program)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), program, sizeof(program));
envp = udev_device_get_properties_envp(event->dev); envp = udev_device_get_properties_envp(event->dev);
log_debug("PROGRAM '%s' %s:%u\n", log_debug("PROGRAM '%s' %s:%u",
program, program,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2062,7 +2062,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) { if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) {
count = util_replace_chars(result, UDEV_ALLOWED_CHARS_INPUT); count = util_replace_chars(result, UDEV_ALLOWED_CHARS_INPUT);
if (count > 0) if (count > 0)
log_debug("%i character(s) replaced\n" , count); log_debug("%i character(s) replaced" , count);
} }
event->program_result = strdup(result); event->program_result = strdup(result);
if (cur->key.op == OP_NOMATCH) if (cur->key.op == OP_NOMATCH)
@ -2083,7 +2083,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
char import[UTIL_PATH_SIZE]; char import[UTIL_PATH_SIZE];
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), import, sizeof(import)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), import, sizeof(import));
log_debug("IMPORT '%s' %s:%u\n", log_debug("IMPORT '%s' %s:%u",
import, import,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2099,7 +2099,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
if (udev_builtin_run_once(cur->key.builtin_cmd)) { if (udev_builtin_run_once(cur->key.builtin_cmd)) {
/* check if we ran already */ /* check if we ran already */
if (event->builtin_run & (1 << cur->key.builtin_cmd)) { if (event->builtin_run & (1 << cur->key.builtin_cmd)) {
log_debug("IMPORT builtin skip '%s' %s:%u\n", log_debug("IMPORT builtin skip '%s' %s:%u",
udev_builtin_name(cur->key.builtin_cmd), udev_builtin_name(cur->key.builtin_cmd),
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2114,14 +2114,14 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
} }
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), command, sizeof(command)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), command, sizeof(command));
log_debug("IMPORT builtin '%s' %s:%u\n", log_debug("IMPORT builtin '%s' %s:%u",
udev_builtin_name(cur->key.builtin_cmd), udev_builtin_name(cur->key.builtin_cmd),
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
if (udev_builtin_run(event->dev, cur->key.builtin_cmd, command, false) != 0) { if (udev_builtin_run(event->dev, cur->key.builtin_cmd, command, false) != 0) {
/* remember failure */ /* remember failure */
log_debug("IMPORT builtin '%s' returned non-zero\n", log_debug("IMPORT builtin '%s' returned non-zero",
udev_builtin_name(cur->key.builtin_cmd)); udev_builtin_name(cur->key.builtin_cmd));
event->builtin_ret |= (1 << cur->key.builtin_cmd); event->builtin_ret |= (1 << cur->key.builtin_cmd);
if (cur->key.op != OP_NOMATCH) if (cur->key.op != OP_NOMATCH)
@ -2229,7 +2229,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), owner, sizeof(owner)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), owner, sizeof(owner));
event->owner_set = true; event->owner_set = true;
event->uid = util_lookup_user(event->udev, owner); event->uid = util_lookup_user(event->udev, owner);
log_debug("OWNER %u %s:%u\n", log_debug("OWNER %u %s:%u",
event->uid, event->uid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2245,7 +2245,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), group, sizeof(group)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), group, sizeof(group));
event->group_set = true; event->group_set = true;
event->gid = util_lookup_group(event->udev, group); event->gid = util_lookup_group(event->udev, group);
log_debug("GROUP %u %s:%u\n", log_debug("GROUP %u %s:%u",
event->gid, event->gid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2261,14 +2261,14 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), mode_str, sizeof(mode_str)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), mode_str, sizeof(mode_str));
mode = strtol(mode_str, &endptr, 8); mode = strtol(mode_str, &endptr, 8);
if (endptr[0] != '\0') { if (endptr[0] != '\0') {
log_error("ignoring invalid mode '%s'\n", mode_str); log_error("ignoring invalid mode '%s'", mode_str);
break; break;
} }
if (cur->key.op == OP_ASSIGN_FINAL) if (cur->key.op == OP_ASSIGN_FINAL)
event->mode_final = true; event->mode_final = true;
event->mode_set = true; event->mode_set = true;
event->mode = mode; event->mode = mode;
log_debug("MODE %#o %s:%u\n", log_debug("MODE %#o %s:%u",
event->mode, event->mode,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2281,7 +2281,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
event->owner_final = true; event->owner_final = true;
event->owner_set = true; event->owner_set = true;
event->uid = cur->key.uid; event->uid = cur->key.uid;
log_debug("OWNER %u %s:%u\n", log_debug("OWNER %u %s:%u",
event->uid, event->uid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2293,7 +2293,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
event->group_final = true; event->group_final = true;
event->group_set = true; event->group_set = true;
event->gid = cur->key.gid; event->gid = cur->key.gid;
log_debug("GROUP %u %s:%u\n", log_debug("GROUP %u %s:%u",
event->gid, event->gid,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2305,7 +2305,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
event->mode_final = true; event->mode_final = true;
event->mode_set = true; event->mode_set = true;
event->mode = cur->key.mode; event->mode = cur->key.mode;
log_debug("MODE %#o %s:%u\n", log_debug("MODE %#o %s:%u",
event->mode, event->mode,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2318,7 +2318,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
if (cur->key.op == OP_ASSIGN || cur->key.op == OP_ASSIGN_FINAL) if (cur->key.op == OP_ASSIGN || cur->key.op == OP_ASSIGN_FINAL)
udev_list_cleanup(&event->seclabel_list); udev_list_cleanup(&event->seclabel_list);
udev_list_entry_add(&event->seclabel_list, name, label); udev_list_entry_add(&event->seclabel_list, name, label);
log_debug("SECLABEL{%s}='%s' %s:%u\n", log_debug("SECLABEL{%s}='%s' %s:%u",
name, label, name, label,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2368,7 +2368,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
(*p >= '0' && *p <= '9') || (*p >= '0' && *p <= '9') ||
*p == '-' || *p == '_') *p == '-' || *p == '_')
continue; continue;
log_error("ignoring invalid tag name '%s'\n", tag); log_error("ignoring invalid tag name '%s'", tag);
break; break;
} }
udev_device_add_tag(event->dev, tag); udev_device_add_tag(event->dev, tag);
@ -2388,7 +2388,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) { if (esc == ESCAPE_UNSET || esc == ESCAPE_REPLACE) {
count = util_replace_chars(name_str, "/"); count = util_replace_chars(name_str, "/");
if (count > 0) if (count > 0)
log_debug("%i character(s) replaced\n", count); log_debug("%i character(s) replaced", count);
} }
if (major(udev_device_get_devnum(event->dev)) && if (major(udev_device_get_devnum(event->dev)) &&
(!streq(name_str, udev_device_get_devnode(event->dev) + strlen("/dev/")))) { (!streq(name_str, udev_device_get_devnode(event->dev) + strlen("/dev/")))) {
@ -2399,7 +2399,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
} }
free(event->name); free(event->name);
event->name = strdup(name_str); event->name = strdup(name_str);
log_debug("NAME '%s' %s:%u\n", log_debug("NAME '%s' %s:%u",
event->name, event->name,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2427,14 +2427,14 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
else if (esc == ESCAPE_REPLACE) else if (esc == ESCAPE_REPLACE)
count = util_replace_chars(temp, "/"); count = util_replace_chars(temp, "/");
if (count > 0) if (count > 0)
log_debug("%i character(s) replaced\n" , count); log_debug("%i character(s) replaced" , count);
pos = temp; pos = temp;
while (isspace(pos[0])) while (isspace(pos[0]))
pos++; pos++;
next = strchr(pos, ' '); next = strchr(pos, ' ');
while (next != NULL) { while (next != NULL) {
next[0] = '\0'; next[0] = '\0';
log_debug("LINK '%s' %s:%u\n", pos, log_debug("LINK '%s' %s:%u", pos,
rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); rules_str(rules, rule->rule.filename_off), rule->rule.filename_line);
strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); strscpyl(filename, sizeof(filename), "/dev/", pos, NULL);
udev_device_add_devlink(event->dev, filename); udev_device_add_devlink(event->dev, filename);
@ -2444,7 +2444,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
next = strchr(pos, ' '); next = strchr(pos, ' ');
} }
if (pos[0] != '\0') { if (pos[0] != '\0') {
log_debug("LINK '%s' %s:%u\n", pos, log_debug("LINK '%s' %s:%u", pos,
rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); rules_str(rules, rule->rule.filename_off), rule->rule.filename_line);
strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); strscpyl(filename, sizeof(filename), "/dev/", pos, NULL);
udev_device_add_devlink(event->dev, filename); udev_device_add_devlink(event->dev, filename);
@ -2462,16 +2462,16 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
attr_subst_subdir(attr, sizeof(attr)); attr_subst_subdir(attr, sizeof(attr));
udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value));
log_debug("ATTR '%s' writing '%s' %s:%u\n", attr, value, log_debug("ATTR '%s' writing '%s' %s:%u", attr, value,
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
f = fopen(attr, "we"); f = fopen(attr, "we");
if (f != NULL) { if (f != NULL) {
if (fprintf(f, "%s", value) <= 0) if (fprintf(f, "%s", value) <= 0)
log_error("error writing ATTR{%s}: %m\n", attr); log_error("error writing ATTR{%s}: %m", attr);
fclose(f); fclose(f);
} else { } else {
log_error("error opening ATTR{%s} for writing: %m\n", attr); log_error("error opening ATTR{%s} for writing: %m", attr);
} }
break; break;
} }
@ -2481,7 +2481,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
if (cur->key.op == OP_ASSIGN || cur->key.op == OP_ASSIGN_FINAL) if (cur->key.op == OP_ASSIGN || cur->key.op == OP_ASSIGN_FINAL)
udev_list_cleanup(&event->run_list); udev_list_cleanup(&event->run_list);
log_debug("RUN '%s' %s:%u\n", log_debug("RUN '%s' %s:%u",
rules_str(rules, cur->key.value_off), rules_str(rules, cur->key.value_off),
rules_str(rules, rule->rule.filename_off), rules_str(rules, rule->rule.filename_off),
rule->rule.filename_line); rule->rule.filename_line);
@ -2501,7 +2501,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event
case TK_M_PARENTS_MAX: case TK_M_PARENTS_MAX:
case TK_M_MAX: case TK_M_MAX:
case TK_UNSET: case TK_UNSET:
log_error("wrong type %u\n", cur->type); log_error("wrong type %u", cur->type);
goto nomatch; goto nomatch;
} }
@ -2586,7 +2586,7 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
strscpyl(tags_dir, sizeof(tags_dir), "/run/udev/static_node-tags/", *t, "/", NULL); strscpyl(tags_dir, sizeof(tags_dir), "/run/udev/static_node-tags/", *t, "/", NULL);
r = mkdir_p(tags_dir, 0755); r = mkdir_p(tags_dir, 0755);
if (r < 0) { if (r < 0) {
log_error("failed to create %s: %s\n", tags_dir, strerror(-r)); log_error("failed to create %s: %s", tags_dir, strerror(-r));
return r; return r;
} }
@ -2595,7 +2595,7 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
strscpyl(tag_symlink, sizeof(tag_symlink), tags_dir, unescaped_filename, NULL); strscpyl(tag_symlink, sizeof(tag_symlink), tags_dir, unescaped_filename, NULL);
r = symlink(device_node, tag_symlink); r = symlink(device_node, tag_symlink);
if (r < 0 && errno != EEXIST) { if (r < 0 && errno != EEXIST) {
log_error("failed to create symlink %s -> %s: %m\n", tag_symlink, device_node); log_error("failed to create symlink %s -> %s: %m", tag_symlink, device_node);
return -errno; return -errno;
} else } else
r = 0; r = 0;
@ -2615,19 +2615,19 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules)
if (mode != (stats.st_mode & 01777)) { if (mode != (stats.st_mode & 01777)) {
r = chmod(device_node, mode); r = chmod(device_node, mode);
if (r < 0) { if (r < 0) {
log_error("failed to chmod '%s' %#o\n", device_node, mode); log_error("failed to chmod '%s' %#o", device_node, mode);
return -errno; return -errno;
} else } else
log_debug("chmod '%s' %#o\n", device_node, mode); log_debug("chmod '%s' %#o", device_node, mode);
} }
if ((uid != 0 && uid != stats.st_uid) || (gid != 0 && gid != stats.st_gid)) { if ((uid != 0 && uid != stats.st_uid) || (gid != 0 && gid != stats.st_gid)) {
r = chown(device_node, uid, gid); r = chown(device_node, uid, gid);
if (r < 0) { if (r < 0) {
log_error("failed to chown '%s' %u %u \n", device_node, uid, gid); log_error("failed to chown '%s' %u %u ", device_node, uid, gid);
return -errno; return -errno;
} else } else
log_debug("chown '%s' %u %u\n", device_node, uid, gid); log_debug("chown '%s' %u %u", device_node, uid, gid);
} }
utimensat(AT_FDCWD, device_node, NULL, 0); utimensat(AT_FDCWD, device_node, NULL, 0);

View File

@ -40,7 +40,7 @@ int udev_watch_init(struct udev *udev)
{ {
inotify_fd = inotify_init1(IN_CLOEXEC); inotify_fd = inotify_init1(IN_CLOEXEC);
if (inotify_fd < 0) if (inotify_fd < 0)
log_error("inotify_init failed: %m\n"); log_error("inotify_init failed: %m");
return inotify_fd; return inotify_fd;
} }
@ -79,7 +79,7 @@ void udev_watch_restore(struct udev *udev)
if (dev == NULL) if (dev == NULL)
goto unlink; goto unlink;
log_debug("restoring old watch on '%s'\n", udev_device_get_devnode(dev)); log_debug("restoring old watch on '%s'", udev_device_get_devnode(dev));
udev_watch_begin(udev, dev); udev_watch_begin(udev, dev);
udev_device_unref(dev); udev_device_unref(dev);
unlink: unlink:
@ -103,10 +103,10 @@ void udev_watch_begin(struct udev *udev, struct udev_device *dev)
if (inotify_fd < 0) if (inotify_fd < 0)
return; return;
log_debug("adding watch on '%s'\n", udev_device_get_devnode(dev)); log_debug("adding watch on '%s'", udev_device_get_devnode(dev));
wd = inotify_add_watch(inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE); wd = inotify_add_watch(inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);
if (wd < 0) { if (wd < 0) {
log_error("inotify_add_watch(%d, %s, %o) failed: %m\n", log_error("inotify_add_watch(%d, %s, %o) failed: %m",
inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE); inotify_fd, udev_device_get_devnode(dev), IN_CLOSE_WRITE);
return; return;
} }
@ -133,7 +133,7 @@ void udev_watch_end(struct udev *udev, struct udev_device *dev)
if (wd < 0) if (wd < 0)
return; return;
log_debug("removing watch on '%s'\n", udev_device_get_devnode(dev)); log_debug("removing watch on '%s'", udev_device_get_devnode(dev));
inotify_rm_watch(inotify_fd, wd); inotify_rm_watch(inotify_fd, wd);
snprintf(filename, sizeof(filename), "/run/udev/watch/%d", wd); snprintf(filename, sizeof(filename), "/run/udev/watch/%d", wd);

View File

@ -389,17 +389,17 @@ static int trie_store(struct trie *trie, const char *filename) {
goto out; goto out;
} }
log_debug("=== trie on-disk ===\n"); log_debug("=== trie on-disk ===");
log_debug("size: %8llu bytes\n", (unsigned long long)size); log_debug("size: %8llu bytes", (unsigned long long)size);
log_debug("header: %8zu bytes\n", sizeof(struct trie_header_f)); log_debug("header: %8zu bytes", sizeof(struct trie_header_f));
log_debug("nodes: %8llu bytes (%8llu)\n", log_debug("nodes: %8llu bytes (%8llu)",
(unsigned long long)t.nodes_count * sizeof(struct trie_node_f), (unsigned long long)t.nodes_count); (unsigned long long)t.nodes_count * sizeof(struct trie_node_f), (unsigned long long)t.nodes_count);
log_debug("child pointers: %8llu bytes (%8llu)\n", log_debug("child pointers: %8llu bytes (%8llu)",
(unsigned long long)t.children_count * sizeof(struct trie_child_entry_f), (unsigned long long)t.children_count); (unsigned long long)t.children_count * sizeof(struct trie_child_entry_f), (unsigned long long)t.children_count);
log_debug("value pointers: %8llu bytes (%8llu)\n", log_debug("value pointers: %8llu bytes (%8llu)",
(unsigned long long)t.values_count * sizeof(struct trie_value_entry_f), (unsigned long long)t.values_count); (unsigned long long)t.values_count * sizeof(struct trie_value_entry_f), (unsigned long long)t.values_count);
log_debug("string store: %8llu bytes\n", (unsigned long long)trie->strings->len); log_debug("string store: %8llu bytes", (unsigned long long)trie->strings->len);
log_debug("strings start: %8llu\n", (unsigned long long) t.strings_off); log_debug("strings start: %8llu", (unsigned long long) t.strings_off);
out: out:
free(filename_tmp); free(filename_tmp);
return err; return err;
@ -412,7 +412,7 @@ static int insert_data(struct trie *trie, struct udev_list *match_list,
value = strchr(line, '='); value = strchr(line, '=');
if (!value) { if (!value) {
log_error("Error, key/value pair expected but got '%s' in '%s':\n", line, filename); log_error("Error, key/value pair expected but got '%s' in '%s':", line, filename);
return -EINVAL; return -EINVAL;
} }
@ -420,7 +420,7 @@ static int insert_data(struct trie *trie, struct udev_list *match_list,
value++; value++;
if (line[0] == '\0' || value[0] == '\0') { if (line[0] == '\0' || value[0] == '\0') {
log_error("Error, empty key or value '%s' in '%s':\n", line, filename); log_error("Error, empty key or value '%s' in '%s':", line, filename);
return -EINVAL; return -EINVAL;
} }
@ -471,7 +471,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
break; break;
if (line[0] == ' ') { if (line[0] == ' ') {
log_error("Error, MATCH expected but got '%s' in '%s':\n", line, filename); log_error("Error, MATCH expected but got '%s' in '%s':", line, filename);
break; break;
} }
@ -482,7 +482,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
case HW_MATCH: case HW_MATCH:
if (len == 0) { if (len == 0) {
log_error("Error, DATA expected but got empty line in '%s':\n", filename); log_error("Error, DATA expected but got empty line in '%s':", filename);
state = HW_NONE; state = HW_NONE;
udev_list_cleanup(&match_list); udev_list_cleanup(&match_list);
break; break;
@ -508,7 +508,7 @@ static int import_file(struct udev *udev, struct trie *trie, const char *filenam
} }
if (line[0] != ' ') { if (line[0] != ' ') {
log_error("Error, DATA expected but got '%s' in '%s':\n", line, filename); log_error("Error, DATA expected but got '%s' in '%s':", line, filename);
state = HW_NONE; state = HW_NONE;
udev_list_cleanup(&match_list); udev_list_cleanup(&match_list);
break; break;
@ -599,7 +599,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
err = conf_files_list_strv(&files, ".hwdb", root, conf_file_dirs); err = conf_files_list_strv(&files, ".hwdb", root, conf_file_dirs);
if (err < 0) { if (err < 0) {
log_error("failed to enumerate hwdb files: %s\n", strerror(-err)); log_error("failed to enumerate hwdb files: %s", strerror(-err));
rc = EXIT_FAILURE; rc = EXIT_FAILURE;
goto out; goto out;
} }
@ -611,18 +611,18 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) {
strbuf_complete(trie->strings); strbuf_complete(trie->strings);
log_debug("=== trie in-memory ===\n"); log_debug("=== trie in-memory ===");
log_debug("nodes: %8zu bytes (%8zu)\n", log_debug("nodes: %8zu bytes (%8zu)",
trie->nodes_count * sizeof(struct trie_node), trie->nodes_count); trie->nodes_count * sizeof(struct trie_node), trie->nodes_count);
log_debug("children arrays: %8zu bytes (%8zu)\n", log_debug("children arrays: %8zu bytes (%8zu)",
trie->children_count * sizeof(struct trie_child_entry), trie->children_count); trie->children_count * sizeof(struct trie_child_entry), trie->children_count);
log_debug("values arrays: %8zu bytes (%8zu)\n", log_debug("values arrays: %8zu bytes (%8zu)",
trie->values_count * sizeof(struct trie_value_entry), trie->values_count); trie->values_count * sizeof(struct trie_value_entry), trie->values_count);
log_debug("strings: %8zu bytes\n", log_debug("strings: %8zu bytes",
trie->strings->len); trie->strings->len);
log_debug("strings incoming: %8zu bytes (%8zu)\n", log_debug("strings incoming: %8zu bytes (%8zu)",
trie->strings->in_len, trie->strings->in_count); trie->strings->in_len, trie->strings->in_count);
log_debug("strings dedup'ed: %8zu bytes (%8zu)\n", log_debug("strings dedup'ed: %8zu bytes (%8zu)",
trie->strings->dedup_len, trie->strings->dedup_count); trie->strings->dedup_len, trie->strings->dedup_count);
if (asprintf(&hwdb_bin, "%s/etc/udev/hwdb.bin", root) < 0) { if (asprintf(&hwdb_bin, "%s/etc/udev/hwdb.bin", root) < 0) {

View File

@ -158,7 +158,7 @@ static int adm_monitor(struct udev *udev, int argc, char *argv[])
fd_ep = epoll_create1(EPOLL_CLOEXEC); fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) { if (fd_ep < 0) {
log_error("error creating epoll fd: %m\n"); log_error("error creating epoll fd: %m");
return 1; return 1;
} }
@ -198,7 +198,7 @@ static int adm_monitor(struct udev *udev, int argc, char *argv[])
ep_udev.events = EPOLLIN; ep_udev.events = EPOLLIN;
ep_udev.data.fd = fd_udev; ep_udev.data.fd = fd_udev;
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_udev, &ep_udev) < 0) { if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_udev, &ep_udev) < 0) {
log_error("fail to add fd to epoll: %m\n"); log_error("fail to add fd to epoll: %m");
return 2; return 2;
} }
@ -232,7 +232,7 @@ static int adm_monitor(struct udev *udev, int argc, char *argv[])
ep_kernel.events = EPOLLIN; ep_kernel.events = EPOLLIN;
ep_kernel.data.fd = fd_kernel; ep_kernel.data.fd = fd_kernel;
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_kernel, &ep_kernel) < 0) { if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_kernel, &ep_kernel) < 0) {
log_error("fail to add fd to epoll: %m\n"); log_error("fail to add fd to epoll: %m");
return 5; return 5;
} }

View File

@ -122,20 +122,20 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
end = udev_queue_get_kernel_seqnum(udev_queue); end = udev_queue_get_kernel_seqnum(udev_queue);
if (start > end) { if (start > end) {
log_error("seq-start larger than seq-end, ignoring\n"); log_error("seq-start larger than seq-end, ignoring");
start = 0; start = 0;
end = 0; end = 0;
} }
if (start > kernel_seq || end > kernel_seq) { if (start > kernel_seq || end > kernel_seq) {
log_error("seq-start or seq-end larger than current kernel value, ignoring\n"); log_error("seq-start or seq-end larger than current kernel value, ignoring");
start = 0; start = 0;
end = 0; end = 0;
} }
log_debug("start=%llu end=%llu current=%llu\n", (unsigned long long)start, (unsigned long long)end, kernel_seq); log_debug("start=%llu end=%llu current=%llu", (unsigned long long)start, (unsigned long long)end, kernel_seq);
} else { } else {
if (end > 0) { if (end > 0) {
log_error("seq-end needs seq-start parameter, ignoring\n"); log_error("seq-end needs seq-start parameter, ignoring");
end = 0; end = 0;
} }
} }
@ -147,7 +147,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
uctrl = udev_ctrl_new(udev); uctrl = udev_ctrl_new(udev);
if (uctrl != NULL) { if (uctrl != NULL) {
if (udev_ctrl_send_ping(uctrl, timeout) < 0) { if (udev_ctrl_send_ping(uctrl, timeout) < 0) {
log_debug("no connection to daemon\n"); log_debug("no connection to daemon");
udev_ctrl_unref(uctrl); udev_ctrl_unref(uctrl);
rc = EXIT_SUCCESS; rc = EXIT_SUCCESS;
goto out; goto out;
@ -159,10 +159,10 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
pfd[0].events = POLLIN; pfd[0].events = POLLIN;
pfd[0].fd = inotify_init1(IN_CLOEXEC); pfd[0].fd = inotify_init1(IN_CLOEXEC);
if (pfd[0].fd < 0) { if (pfd[0].fd < 0) {
log_error("inotify_init failed: %m\n"); log_error("inotify_init failed: %m");
} else { } else {
if (inotify_add_watch(pfd[0].fd, "/run/udev" , IN_MOVED_TO) < 0) { if (inotify_add_watch(pfd[0].fd, "/run/udev" , IN_MOVED_TO) < 0) {
log_error("watching /run/udev failed\n"); log_error("watching /run/udev failed");
close(pfd[0].fd); close(pfd[0].fd);
pfd[0].fd = -1; pfd[0].fd = -1;
} }
@ -215,7 +215,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[])
struct udev_list_entry *list_entry; struct udev_list_entry *list_entry;
if (!quiet && udev_queue_get_queued_list_entry(udev_queue) != NULL) { if (!quiet && udev_queue_get_queued_list_entry(udev_queue) != NULL) {
log_debug("timeout waiting for udev queue\n"); log_debug("timeout waiting for udev queue");
printf("\nudevadm settle - timeout of %i seconds reached, the event queue contains:\n", timeout); printf("\nudevadm settle - timeout of %i seconds reached, the event queue contains:\n", timeout);
udev_list_entry_foreach(list_entry, udev_queue_get_queued_list_entry(udev_queue)) udev_list_entry_foreach(list_entry, udev_queue_get_queued_list_entry(udev_queue))
printf(" %s (%s)\n", printf(" %s (%s)\n",

View File

@ -53,7 +53,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
{} {}
}; };
log_debug("version %s\n", VERSION); log_debug("version %s", VERSION);
while((c = getopt_long(argc, argv, "a:N:h", options, NULL)) >= 0) while((c = getopt_long(argc, argv, "a:N:h", options, NULL)) >= 0)
switch (c) { switch (c) {
@ -69,7 +69,7 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
resolve_names = -1; resolve_names = -1;
} else { } else {
fprintf(stderr, "resolve-names must be early, late or never\n"); fprintf(stderr, "resolve-names must be early, late or never\n");
log_error("resolve-names must be early, late or never\n"); log_error("resolve-names must be early, late or never");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
break; break;

View File

@ -55,7 +55,7 @@ static void exec_list(struct udev_enumerate *udev_enumerate, const char *action)
if (fd < 0) if (fd < 0)
continue; continue;
if (write(fd, action, strlen(action)) < 0) if (write(fd, action, strlen(action)) < 0)
log_debug("error writing '%s' to '%s': %m\n", action, filename); log_debug("error writing '%s' to '%s': %m", action, filename);
close(fd); close(fd);
} }
} }
@ -141,13 +141,13 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[])
else if (streq(optarg, "subsystems")) else if (streq(optarg, "subsystems"))
device_type = TYPE_SUBSYSTEMS; device_type = TYPE_SUBSYSTEMS;
else { else {
log_error("unknown type --type=%s\n", optarg); log_error("unknown type --type=%s", optarg);
return 2; return 2;
} }
break; break;
case 'c': case 'c':
if (!nulstr_contains("add\0" "remove\0" "change\0", optarg)) { if (!nulstr_contains("add\0" "remove\0" "change\0", optarg)) {
log_error("unknown action '%s'\n", optarg); log_error("unknown action '%s'", optarg);
return 2; return 2;
} else } else
action = optarg; action = optarg;
@ -189,7 +189,7 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[])
util_remove_trailing_chars(path, '/'); util_remove_trailing_chars(path, '/');
dev = udev_device_new_from_syspath(udev, path); dev = udev_device_new_from_syspath(udev, path);
if (dev == NULL) { if (dev == NULL) {
log_error("unable to open the device '%s'\n", optarg); log_error("unable to open the device '%s'", optarg);
return 2; return 2;
} }
udev_enumerate_add_match_parent(udev_enumerate, dev); udev_enumerate_add_match_parent(udev_enumerate, dev);

View File

@ -79,7 +79,7 @@ static int run_command(struct udev *udev, const struct udevadm_cmd *cmd, int arg
{ {
if (cmd->debug) if (cmd->debug)
log_set_max_level(LOG_DEBUG); log_set_max_level(LOG_DEBUG);
log_debug("calling: %s\n", cmd->name); log_debug("calling: %s", cmd->name);
return cmd->cmd(udev, argc, argv); return cmd->cmd(udev, argc, argv);
} }

View File

@ -145,7 +145,7 @@ static void event_queue_delete(struct event *event, bool export)
if (export) { if (export) {
udev_queue_export_device_finished(udev_queue_export, event->dev); udev_queue_export_device_finished(udev_queue_export, event->dev);
log_debug("seq %llu done with %i\n", udev_device_get_seqnum(event->dev), event->exitcode); log_debug("seq %llu done with %i", udev_device_get_seqnum(event->dev), event->exitcode);
} }
udev_device_unref(event->dev); udev_device_unref(event->dev);
free(event); free(event);
@ -170,7 +170,7 @@ static void worker_unref(struct worker *worker)
worker->refcount--; worker->refcount--;
if (worker->refcount > 0) if (worker->refcount > 0)
return; return;
log_debug("worker [%u] cleaned up\n", worker->pid); log_debug("worker [%u] cleaned up", worker->pid);
worker_cleanup(worker); worker_cleanup(worker);
} }
@ -235,14 +235,14 @@ static void worker_new(struct event *event)
sigfillset(&mask); sigfillset(&mask);
fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC); fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
if (fd_signal < 0) { if (fd_signal < 0) {
log_error("error creating signalfd %m\n"); log_error("error creating signalfd %m");
rc = 2; rc = 2;
goto out; goto out;
} }
fd_ep = epoll_create1(EPOLL_CLOEXEC); fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) { if (fd_ep < 0) {
log_error("error creating epoll fd: %m\n"); log_error("error creating epoll fd: %m");
rc = 3; rc = 3;
goto out; goto out;
} }
@ -258,7 +258,7 @@ static void worker_new(struct event *event)
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 || if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_monitor, &ep_monitor) < 0) { epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_monitor, &ep_monitor) < 0) {
log_error("fail to add fds to epoll: %m\n"); log_error("fail to add fds to epoll: %m");
rc = 4; rc = 4;
goto out; goto out;
} }
@ -274,7 +274,7 @@ static void worker_new(struct event *event)
struct worker_message msg; struct worker_message msg;
int err; int err;
log_debug("seq %llu running\n", udev_device_get_seqnum(dev)); log_debug("seq %llu running", udev_device_get_seqnum(dev));
udev_event = udev_event_new(dev); udev_event = udev_event_new(dev);
if (udev_event == NULL) { if (udev_event == NULL) {
rc = 5; rc = 5;
@ -309,7 +309,7 @@ static void worker_new(struct event *event)
msg.pid = getpid(); msg.pid = getpid();
send(worker_watch[WRITE_END], &msg, sizeof(struct worker_message), 0); send(worker_watch[WRITE_END], &msg, sizeof(struct worker_message), 0);
log_debug("seq %llu processed with %i\n", udev_device_get_seqnum(dev), err); log_debug("seq %llu processed with %i", udev_device_get_seqnum(dev), err);
udev_device_unref(dev); udev_device_unref(dev);
dev = NULL; dev = NULL;
@ -331,7 +331,7 @@ static void worker_new(struct event *event)
if (fdcount < 0) { if (fdcount < 0) {
if (errno == EINTR) if (errno == EINTR)
continue; continue;
log_error("failed to poll: %m\n"); log_error("failed to poll: %m");
goto out; goto out;
} }
@ -373,7 +373,7 @@ out:
udev_monitor_unref(worker_monitor); udev_monitor_unref(worker_monitor);
event->state = EVENT_QUEUED; event->state = EVENT_QUEUED;
free(worker); free(worker);
log_error("fork of child failed: %m\n"); log_error("fork of child failed: %m");
break; break;
default: default:
/* close monitor, but keep address around */ /* close monitor, but keep address around */
@ -386,7 +386,7 @@ out:
event->state = EVENT_RUNNING; event->state = EVENT_RUNNING;
udev_list_node_append(&worker->node, &worker_list); udev_list_node_append(&worker->node, &worker_list);
children++; children++;
log_debug("seq %llu forked new worker [%u]\n", udev_device_get_seqnum(event->dev), pid); log_debug("seq %llu forked new worker [%u]", udev_device_get_seqnum(event->dev), pid);
break; break;
} }
} }
@ -404,7 +404,7 @@ static void event_run(struct event *event)
count = udev_monitor_send_device(monitor, worker->monitor, event->dev); count = udev_monitor_send_device(monitor, worker->monitor, event->dev);
if (count < 0) { if (count < 0) {
log_error("worker [%u] did not accept message %zi (%m), kill it\n", worker->pid, count); log_error("worker [%u] did not accept message %zi (%m), kill it", worker->pid, count);
kill(worker->pid, SIGKILL); kill(worker->pid, SIGKILL);
worker->state = WORKER_KILLED; worker->state = WORKER_KILLED;
continue; continue;
@ -419,7 +419,7 @@ static void event_run(struct event *event)
if (children >= children_max) { if (children >= children_max) {
if (children_max > 1) if (children_max > 1)
log_debug("maximum number (%i) of children reached\n", children); log_debug("maximum number (%i) of children reached", children);
return; return;
} }
@ -450,7 +450,7 @@ static int event_queue_insert(struct udev_device *dev)
#endif #endif
udev_queue_export_device_queued(udev_queue_export, dev); udev_queue_export_device_queued(udev_queue_export, dev);
log_debug("seq %llu queued, '%s' '%s'\n", udev_device_get_seqnum(dev), log_debug("seq %llu queued, '%s' '%s'", udev_device_get_seqnum(dev),
udev_device_get_action(dev), udev_device_get_subsystem(dev)); udev_device_get_action(dev), udev_device_get_subsystem(dev));
event->state = EVENT_QUEUED; event->state = EVENT_QUEUED;
@ -635,24 +635,24 @@ static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl)
i = udev_ctrl_get_set_log_level(ctrl_msg); i = udev_ctrl_get_set_log_level(ctrl_msg);
if (i >= 0) { if (i >= 0) {
log_debug("udevd message (SET_LOG_PRIORITY) received, log_priority=%i\n", i); log_debug("udevd message (SET_LOG_PRIORITY) received, log_priority=%i", i);
log_set_max_level(i); log_set_max_level(i);
udev_set_log_priority(udev, i); udev_set_log_priority(udev, i);
worker_kill(udev); worker_kill(udev);
} }
if (udev_ctrl_get_stop_exec_queue(ctrl_msg) > 0) { if (udev_ctrl_get_stop_exec_queue(ctrl_msg) > 0) {
log_debug("udevd message (STOP_EXEC_QUEUE) received\n"); log_debug("udevd message (STOP_EXEC_QUEUE) received");
stop_exec_queue = true; stop_exec_queue = true;
} }
if (udev_ctrl_get_start_exec_queue(ctrl_msg) > 0) { if (udev_ctrl_get_start_exec_queue(ctrl_msg) > 0) {
log_debug("udevd message (START_EXEC_QUEUE) received\n"); log_debug("udevd message (START_EXEC_QUEUE) received");
stop_exec_queue = false; stop_exec_queue = false;
} }
if (udev_ctrl_get_reload(ctrl_msg) > 0) { if (udev_ctrl_get_reload(ctrl_msg) > 0) {
log_debug("udevd message (RELOAD) received\n"); log_debug("udevd message (RELOAD) received");
reload = true; reload = true;
} }
@ -669,14 +669,14 @@ static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl)
val[0] = '\0'; val[0] = '\0';
val = &val[1]; val = &val[1];
if (val[0] == '\0') { if (val[0] == '\0') {
log_debug("udevd message (ENV) received, unset '%s'\n", key); log_debug("udevd message (ENV) received, unset '%s'", key);
udev_add_property(udev, key, NULL); udev_add_property(udev, key, NULL);
} else { } else {
log_debug("udevd message (ENV) received, set '%s=%s'\n", key, val); log_debug("udevd message (ENV) received, set '%s=%s'", key, val);
udev_add_property(udev, key, val); udev_add_property(udev, key, val);
} }
} else { } else {
log_error("wrong key format '%s'\n", key); log_error("wrong key format '%s'", key);
} }
free(key); free(key);
} }
@ -685,15 +685,15 @@ static struct udev_ctrl_connection *handle_ctrl_msg(struct udev_ctrl *uctrl)
i = udev_ctrl_get_set_children_max(ctrl_msg); i = udev_ctrl_get_set_children_max(ctrl_msg);
if (i >= 0) { if (i >= 0) {
log_debug("udevd message (SET_MAX_CHILDREN) received, children_max=%i\n", i); log_debug("udevd message (SET_MAX_CHILDREN) received, children_max=%i", i);
children_max = i; children_max = i;
} }
if (udev_ctrl_get_ping(ctrl_msg) > 0) if (udev_ctrl_get_ping(ctrl_msg) > 0)
log_debug("udevd message (SYNC) received\n"); log_debug("udevd message (SYNC) received");
if (udev_ctrl_get_exit(ctrl_msg) > 0) { if (udev_ctrl_get_exit(ctrl_msg) > 0) {
log_debug("udevd message (EXIT) received\n"); log_debug("udevd message (EXIT) received");
udev_exit = true; udev_exit = true;
/* keep reference to block the client until we exit */ /* keep reference to block the client until we exit */
udev_ctrl_connection_ref(ctrl_conn); udev_ctrl_connection_ref(ctrl_conn);
@ -715,7 +715,7 @@ static int handle_inotify(struct udev *udev)
buf = malloc(nbytes); buf = malloc(nbytes);
if (buf == NULL) { if (buf == NULL) {
log_error("error getting buffer for inotify\n"); log_error("error getting buffer for inotify");
return -1; return -1;
} }
@ -727,17 +727,17 @@ static int handle_inotify(struct udev *udev)
ev = (struct inotify_event *)(buf + pos); ev = (struct inotify_event *)(buf + pos);
dev = udev_watch_lookup(udev, ev->wd); dev = udev_watch_lookup(udev, ev->wd);
if (dev != NULL) { if (dev != NULL) {
log_debug("inotify event: %x for %s\n", ev->mask, udev_device_get_devnode(dev)); log_debug("inotify event: %x for %s", ev->mask, udev_device_get_devnode(dev));
if (ev->mask & IN_CLOSE_WRITE) { if (ev->mask & IN_CLOSE_WRITE) {
char filename[UTIL_PATH_SIZE]; char filename[UTIL_PATH_SIZE];
int fd; int fd;
log_debug("device %s closed, synthesising 'change'\n", udev_device_get_devnode(dev)); log_debug("device %s closed, synthesising 'change'", udev_device_get_devnode(dev));
strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL);
fd = open(filename, O_WRONLY); fd = open(filename, O_WRONLY);
if (fd >= 0) { if (fd >= 0) {
if (write(fd, "change", 6) < 0) if (write(fd, "change", 6) < 0)
log_debug("error writing uevent: %m\n"); log_debug("error writing uevent: %m");
close(fd); close(fd);
} }
} }
@ -775,26 +775,26 @@ static void handle_signal(struct udev *udev, int signo)
if (worker->pid != pid) if (worker->pid != pid)
continue; continue;
log_debug("worker [%u] exit\n", pid); log_debug("worker [%u] exit", pid);
if (WIFEXITED(status)) { if (WIFEXITED(status)) {
if (WEXITSTATUS(status) != 0) if (WEXITSTATUS(status) != 0)
log_error("worker [%u] exit with return code %i\n", log_error("worker [%u] exit with return code %i",
pid, WEXITSTATUS(status)); pid, WEXITSTATUS(status));
} else if (WIFSIGNALED(status)) { } else if (WIFSIGNALED(status)) {
log_error("worker [%u] terminated by signal %i (%s)\n", log_error("worker [%u] terminated by signal %i (%s)",
pid, WTERMSIG(status), strsignal(WTERMSIG(status))); pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
} else if (WIFSTOPPED(status)) { } else if (WIFSTOPPED(status)) {
log_error("worker [%u] stopped\n", pid); log_error("worker [%u] stopped", pid);
} else if (WIFCONTINUED(status)) { } else if (WIFCONTINUED(status)) {
log_error("worker [%u] continued\n", pid); log_error("worker [%u] continued", pid);
} else { } else {
log_error("worker [%u] exit with status 0x%04x\n", pid, status); log_error("worker [%u] exit with status 0x%04x", pid, status);
} }
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) { if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
if (worker->event) { if (worker->event) {
log_error("worker [%u] failed while handling '%s'\n", log_error("worker [%u] failed while handling '%s'",
pid, worker->event->devpath); pid, worker->event->devpath);
worker->event->exitcode = -32; worker->event->exitcode = -32;
event_queue_delete(worker->event, true); event_queue_delete(worker->event, true);
@ -843,7 +843,7 @@ static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink)
if (ctrl < 0 || netlink < 0) if (ctrl < 0 || netlink < 0)
return -1; return -1;
log_debug("ctrl=%i netlink=%i\n", ctrl, netlink); log_debug("ctrl=%i netlink=%i", ctrl, netlink);
*rctrl = ctrl; *rctrl = ctrl;
*rnetlink = netlink; *rnetlink = netlink;
return 0; return 0;
@ -931,7 +931,7 @@ int main(int argc, char *argv[])
udev_set_log_fn(udev, udev_main_log); udev_set_log_fn(udev, udev_main_log);
log_set_max_level(udev_get_log_priority(udev)); log_set_max_level(udev_get_log_priority(udev));
log_debug("version %s\n", VERSION); log_debug("version %s", VERSION);
label_init("/dev"); label_init("/dev");
for (;;) { for (;;) {
@ -965,7 +965,7 @@ int main(int argc, char *argv[])
resolve_names = -1; resolve_names = -1;
} else { } else {
fprintf(stderr, "resolve-names must be early, late or never\n"); fprintf(stderr, "resolve-names must be early, late or never\n");
log_error("resolve-names must be early, late or never\n"); log_error("resolve-names must be early, late or never");
goto exit; goto exit;
} }
break; break;
@ -992,7 +992,7 @@ int main(int argc, char *argv[])
if (getuid() != 0) { if (getuid() != 0) {
fprintf(stderr, "root privileges required\n"); fprintf(stderr, "root privileges required\n");
log_error("root privileges required\n"); log_error("root privileges required");
goto exit; goto exit;
} }
@ -1018,7 +1018,7 @@ int main(int argc, char *argv[])
close(fd); close(fd);
} else { } else {
fprintf(stderr, "cannot open /dev/null\n"); fprintf(stderr, "cannot open /dev/null\n");
log_error("cannot open /dev/null\n"); log_error("cannot open /dev/null");
} }
} }
@ -1033,7 +1033,7 @@ int main(int argc, char *argv[])
monitor = udev_monitor_new_from_netlink_fd(udev, "kernel", fd_netlink); monitor = udev_monitor_new_from_netlink_fd(udev, "kernel", fd_netlink);
if (monitor == NULL) { if (monitor == NULL) {
log_error("error taking over netlink socket\n"); log_error("error taking over netlink socket");
rc = 3; rc = 3;
goto exit; goto exit;
} }
@ -1055,7 +1055,7 @@ int main(int argc, char *argv[])
monitor = udev_monitor_new_from_netlink(udev, "kernel"); monitor = udev_monitor_new_from_netlink(udev, "kernel");
if (monitor == NULL) { if (monitor == NULL) {
fprintf(stderr, "error initializing netlink socket\n"); fprintf(stderr, "error initializing netlink socket\n");
log_error("error initializing netlink socket\n"); log_error("error initializing netlink socket");
rc = 3; rc = 3;
goto exit; goto exit;
} }
@ -1064,14 +1064,14 @@ int main(int argc, char *argv[])
if (udev_monitor_enable_receiving(monitor) < 0) { if (udev_monitor_enable_receiving(monitor) < 0) {
fprintf(stderr, "error binding netlink socket\n"); fprintf(stderr, "error binding netlink socket\n");
log_error("error binding netlink socket\n"); log_error("error binding netlink socket");
rc = 3; rc = 3;
goto exit; goto exit;
} }
if (udev_ctrl_enable_receiving(udev_ctrl) < 0) { if (udev_ctrl_enable_receiving(udev_ctrl) < 0) {
fprintf(stderr, "error binding udev control socket\n"); fprintf(stderr, "error binding udev control socket\n");
log_error("error binding udev control socket\n"); log_error("error binding udev control socket");
rc = 1; rc = 1;
goto exit; goto exit;
} }
@ -1081,7 +1081,7 @@ int main(int argc, char *argv[])
/* create queue file before signalling 'ready', to make sure we block 'settle' */ /* create queue file before signalling 'ready', to make sure we block 'settle' */
udev_queue_export = udev_queue_export_new(udev); udev_queue_export = udev_queue_export_new(udev);
if (udev_queue_export == NULL) { if (udev_queue_export == NULL) {
log_error("error creating queue file\n"); log_error("error creating queue file");
goto exit; goto exit;
} }
@ -1093,7 +1093,7 @@ int main(int argc, char *argv[])
case 0: case 0:
break; break;
case -1: case -1:
log_error("fork of daemon failed: %m\n"); log_error("fork of daemon failed: %m");
rc = 4; rc = 4;
goto exit; goto exit;
default: default:
@ -1125,7 +1125,7 @@ int main(int argc, char *argv[])
fd_inotify = udev_watch_init(udev); fd_inotify = udev_watch_init(udev);
if (fd_inotify < 0) { if (fd_inotify < 0) {
fprintf(stderr, "error initializing inotify\n"); fprintf(stderr, "error initializing inotify\n");
log_error("error initializing inotify\n"); log_error("error initializing inotify");
rc = 4; rc = 4;
goto exit; goto exit;
} }
@ -1137,7 +1137,7 @@ int main(int argc, char *argv[])
fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC); fd_signal = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
if (fd_signal < 0) { if (fd_signal < 0) {
fprintf(stderr, "error creating signalfd\n"); fprintf(stderr, "error creating signalfd\n");
log_error("error creating signalfd\n"); log_error("error creating signalfd");
rc = 5; rc = 5;
goto exit; goto exit;
} }
@ -1145,7 +1145,7 @@ int main(int argc, char *argv[])
/* unnamed socket from workers to the main daemon */ /* unnamed socket from workers to the main daemon */
if (socketpair(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0, worker_watch) < 0) { if (socketpair(AF_LOCAL, SOCK_DGRAM|SOCK_CLOEXEC, 0, worker_watch) < 0) {
fprintf(stderr, "error creating socketpair\n"); fprintf(stderr, "error creating socketpair\n");
log_error("error creating socketpair\n"); log_error("error creating socketpair");
rc = 6; rc = 6;
goto exit; goto exit;
} }
@ -1155,7 +1155,7 @@ int main(int argc, char *argv[])
rules = udev_rules_new(udev, resolve_names); rules = udev_rules_new(udev, resolve_names);
if (rules == NULL) { if (rules == NULL) {
log_error("error reading rules\n"); log_error("error reading rules");
goto exit; goto exit;
} }
@ -1181,7 +1181,7 @@ int main(int argc, char *argv[])
fd_ep = epoll_create1(EPOLL_CLOEXEC); fd_ep = epoll_create1(EPOLL_CLOEXEC);
if (fd_ep < 0) { if (fd_ep < 0) {
log_error("error creating epoll fd: %m\n"); log_error("error creating epoll fd: %m");
goto exit; goto exit;
} }
if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_ctrl, &ep_ctrl) < 0 || if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_ctrl, &ep_ctrl) < 0 ||
@ -1189,7 +1189,7 @@ int main(int argc, char *argv[])
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 || epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_netlink, &ep_netlink) < 0 || epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_netlink, &ep_netlink) < 0 ||
epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_worker, &ep_worker) < 0) { epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_worker, &ep_worker) < 0) {
log_error("fail to add fds to epoll: %m\n"); log_error("fail to add fds to epoll: %m");
goto exit; goto exit;
} }
@ -1202,11 +1202,11 @@ int main(int argc, char *argv[])
children_max += CPU_COUNT(&cpu_set) * 2; children_max += CPU_COUNT(&cpu_set) * 2;
} }
} }
log_debug("set children_max to %u\n", children_max); log_debug("set children_max to %u", children_max);
rc = udev_rules_apply_static_dev_perms(rules); rc = udev_rules_apply_static_dev_perms(rules);
if (rc < 0) if (rc < 0)
log_error("failed to apply permissions on static device nodes - %s\n", strerror(-rc)); log_error("failed to apply permissions on static device nodes - %s", strerror(-rc));
udev_list_node_init(&event_list); udev_list_node_init(&event_list);
udev_list_node_init(&worker_list); udev_list_node_init(&worker_list);
@ -1266,13 +1266,13 @@ int main(int argc, char *argv[])
/* timeout */ /* timeout */
if (udev_exit) { if (udev_exit) {
log_error("timeout, giving up waiting for workers to finish\n"); log_error("timeout, giving up waiting for workers to finish");
break; break;
} }
/* kill idle workers */ /* kill idle workers */
if (udev_list_node_is_empty(&event_list)) { if (udev_list_node_is_empty(&event_list)) {
log_debug("cleanup idle workers\n"); log_debug("cleanup idle workers");
worker_kill(udev); worker_kill(udev);
} }
@ -1284,14 +1284,14 @@ int main(int argc, char *argv[])
continue; continue;
if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > 30 * 1000 * 1000) { if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > 30 * 1000 * 1000) {
log_error("worker [%u] %s timeout; kill it\n", worker->pid, log_error("worker [%u] %s timeout; kill it", worker->pid,
worker->event ? worker->event->devpath : "<idle>"); worker->event ? worker->event->devpath : "<idle>");
kill(worker->pid, SIGKILL); kill(worker->pid, SIGKILL);
worker->state = WORKER_KILLED; worker->state = WORKER_KILLED;
/* drop reference taken for state 'running' */ /* drop reference taken for state 'running' */
worker_unref(worker); worker_unref(worker);
if (worker->event) { if (worker->event) {
log_error("seq %llu '%s' killed\n", log_error("seq %llu '%s' killed",
udev_device_get_seqnum(worker->event->dev), worker->event->devpath); udev_device_get_seqnum(worker->event->dev), worker->event->devpath);
worker->event->exitcode = -64; worker->event->exitcode = -64;
event_queue_delete(worker->event, true); event_queue_delete(worker->event, true);