1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-22 06:50:18 +03:00

hwdb: Don't generate hwdb if no hwdb files are found

This commit is contained in:
Daan De Meyer 2023-06-21 13:17:01 +02:00 committed by Lennart Poettering
parent 947c4d3952
commit 4638e18593

View File

@ -587,6 +587,10 @@ int hwdb_update(const char *root, const char *hwdb_bin_dir, bool strict, bool co
* source. If true, then hwdb.bin will be created without the information. systemd-hwdb command
* should set the argument false, and 'udevadm hwdb' command should set it true. */
hwdb_bin = path_join(root, hwdb_bin_dir ?: "/etc/udev", "hwdb.bin");
if (!hwdb_bin)
return -ENOMEM;
trie = new0(struct trie, 1);
if (!trie)
return -ENOMEM;
@ -607,6 +611,18 @@ int hwdb_update(const char *root, const char *hwdb_bin_dir, bool strict, bool co
if (err < 0)
return log_error_errno(err, "Failed to enumerate hwdb files: %m");
if (strv_isempty(files)) {
if (unlink(hwdb_bin) < 0) {
if (errno != ENOENT)
return log_error_errno(errno, "Failed to remove compiled hwdb database %s: %m", hwdb_bin);
log_info("No hwdb files found, skipping.");
} else
log_info("No hwdb files found, compiled hwdb database %s removed.", hwdb_bin);
return 0;
}
STRV_FOREACH(f, files) {
log_debug("Reading file \"%s\"", *f);
err = import_file(trie, *f, file_priority++, compat);
@ -630,10 +646,6 @@ int hwdb_update(const char *root, const char *hwdb_bin_dir, bool strict, bool co
log_debug("strings dedup'ed: %8zu bytes (%8zu)",
trie->strings->dedup_len, trie->strings->dedup_count);
hwdb_bin = path_join(root, hwdb_bin_dir ?: "/etc/udev", "hwdb.bin");
if (!hwdb_bin)
return -ENOMEM;
(void) mkdir_parents_label(hwdb_bin, 0755);
err = trie_store(trie, hwdb_bin, compat);
if (err < 0)