if (!m->read_resolv_conf)
return;
- r = read_credential_strings_many(
- "network.dns", &dns,
- "network.search_domains", &domains);
- if (r < 0 && !IN_SET(r, -ENXIO, -ENOENT))
+ r = read_credential_strings_many("network.dns", &dns,
+ "network.search_domains", &domains);
+ if (r < 0)
log_warning_errno(r, "Failed to read credentials, ignoring: %m");
if (dns) {
/* Reads a bunch of credentials into the specified buffers. If the specified buffers are already
* non-NULL frees them if a credential is found. Only supports string-based credentials
- * (i.e. refuses embedded NUL bytes) */
+ * (i.e. refuses embedded NUL bytes).
+ *
+ * 0 is returned when some or all credentials are missing.
+ */
if (!first_name)
return 0;
r = read_credential(first_name, &b, NULL);
- if (r == -ENXIO) /* no creds passed at all? propagate this */
- return r;
- if (r < 0)
- ret = r;
- else
+ if (r == -ENXIO) /* No creds passed at all? Bail immediately. */
+ return 0;
+ if (r < 0) {
+ if (r != -ENOENT)
+ ret = r;
+ } else
free_and_replace(*first_value, b);
va_list ap;
r = read_credential(name, &bb, NULL);
if (r < 0) {
- if (ret >= 0)
+ if (ret >= 0 && r != -ENOENT)
ret = r;
} else
free_and_replace(*value, bb);
if (e)
assert_se(saved = strdup(e));
- assert_se(read_credential_strings_many("foo", &x, "bar", &y) == -ENXIO);
+ assert_se(read_credential_strings_many("foo", &x, "bar", &y) == 0);
assert_se(x == NULL);
assert_se(y == NULL);
assert_se(setenv("CREDENTIALS_DIRECTORY", tmp, /* override= */ true) >= 0);
- assert_se(read_credential_strings_many("foo", &x, "bar", &y) == -ENOENT);
+ assert_se(read_credential_strings_many("foo", &x, "bar", &y) == 0);
assert_se(x == NULL);
assert_se(y == NULL);
assert_se(p = path_join(tmp, "bar"));
assert_se(write_string_file(p, "piff", WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_AVOID_NEWLINE) >= 0);
- assert_se(read_credential_strings_many("foo", &x, "bar", &y) == -ENOENT);
+ assert_se(read_credential_strings_many("foo", &x, "bar", &y) == 0);
assert_se(x == NULL);
assert_se(streq(y, "piff"));
assert_se(write_string_file(p, "paff", WRITE_STRING_FILE_TRUNCATE|WRITE_STRING_FILE_AVOID_NEWLINE) >= 0);
- assert_se(read_credential_strings_many("foo", &x, "bar", &y) == -ENOENT);
+ assert_se(read_credential_strings_many("foo", &x, "bar", &y) == 0);
assert_se(x == NULL);
assert_se(streq(y, "piff"));
vc_meta_names[VC_FONT], &v.config[VC_FONT],
vc_meta_names[VC_FONT_MAP], &v.config[VC_FONT_MAP],
vc_meta_names[VC_FONT_UNIMAP], &v.config[VC_FONT_UNIMAP]);
- if (r < 0) {
- if (r != -ENXIO)
- log_warning_errno(r, "Failed to import credentials, ignoring: %m");
- return r;
- }
+ if (r < 0)
+ log_warning_errno(r, "Failed to import credentials, ignoring: %m");
context_merge_config(c, &v, NULL);
return 0;