return write_string_file(fn, p, flags);
}
+int write_base64_file_at(
+ int dir_fd,
+ const char *fn,
+ const struct iovec *data,
+ WriteStringFileFlags flags) {
+
+ _cleanup_free_ char *encoded = NULL;
+ ssize_t n;
+
+ n = base64mem_full(data ? data->iov_base : NULL, data ? data->iov_len : 0, 79, &encoded);
+ if (n < 0)
+ return n;
+
+ return write_string_file_at(dir_fd, fn, encoded, flags);
+}
+
int read_one_line_file_at(int dir_fd, const char *filename, char **ret) {
_cleanup_fclose_ FILE *f = NULL;
int r;
return write_string_file_ts(fn, line, flags, NULL);
}
+int write_base64_file_at(int dir_fd, const char *fn, const struct iovec *data, WriteStringFileFlags flags);
+
int write_string_filef(const char *fn, WriteStringFileFlags flags, const char *format, ...) _printf_(3, 4);
int read_one_line_file_at(int dir_fd, const char *filename, char **ret);
if (r < 0)
return log_error_errno(r, "Failed to encode policy as credential: %m");
- _cleanup_free_ char *base64_buf = NULL;
- ssize_t base64_size;
- base64_size = base64mem_full(encoded.iov_base, encoded.iov_len, 79, &base64_buf);
- if (base64_size < 0)
- return base64_size;
-
- r = write_string_file(
+ r = write_base64_file_at(
+ AT_FDCWD,
boot_policy_file,
- base64_buf,
+ &encoded,
WRITE_STRING_FILE_ATOMIC|WRITE_STRING_FILE_CREATE|WRITE_STRING_FILE_SYNC|WRITE_STRING_FILE_MKDIR_0755);
if (r < 0)
return log_error_errno(r, "Failed to write boot policy file to '%s': %m", boot_policy_file);