hwdb: Don't generate hwdb if no hwdb files are found
This commit is contained in:
committed by
Lennart Poettering
parent
947c4d3952
commit
4638e18593
+16
-4
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user