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:
parent
947c4d3952
commit
4638e18593
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user