* 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;
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);
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)