mirror of
https://github.com/systemd/systemd
synced 2024-09-30 05:15:19 +00:00
fileio: add new helper write_base64_file_at() which encodes a binary object into base64 and writes it to a file
This commit is contained in:
parent
73fade298a
commit
dc163cd40b
|
@ -355,6 +355,22 @@ int write_string_filef(
|
|||
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;
|
||||
|
|
|
@ -66,6 +66,8 @@ static inline int write_string_file(const char *fn, const char *line, WriteStrin
|
|||
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);
|
||||
|
|
|
@ -4391,15 +4391,10 @@ static int write_boot_policy_file(const char *json_text) {
|
|||
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);
|
||||
|
|
Loading…
Reference in a new issue