summaryrefslogtreecommitdiff
path: root/src/basic/os-util.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/basic/os-util.c')
-rw-r--r--src/basic/os-util.c36
1 files changed, 6 insertions, 30 deletions
diff --git a/src/basic/os-util.c b/src/basic/os-util.c
index 5f1c26b87c..0bc1aeb25c 100644
--- a/src/basic/os-util.c
+++ b/src/basic/os-util.c
@@ -248,40 +248,16 @@ int open_extension_release(const char *root, ImageClass image_class, const char
return 0;
}
-int fopen_extension_release(const char *root, ImageClass image_class, const char *extension, bool relax_extension_release_check, char **ret_path, FILE **ret_file) {
- _cleanup_free_ char *p = NULL;
- _cleanup_close_ int fd = -EBADF;
- FILE *f;
- int r;
-
- if (!ret_file)
- return open_extension_release(root, image_class, extension, relax_extension_release_check, ret_path, NULL);
-
- r = open_extension_release(root, image_class, extension, relax_extension_release_check, ret_path ? &p : NULL, &fd);
- if (r < 0)
- return r;
-
- f = take_fdopen(&fd, "r");
- if (!f)
- return -errno;
-
- if (ret_path)
- *ret_path = TAKE_PTR(p);
- *ret_file = f;
-
- return 0;
-}
-
static int parse_release_internal(const char *root, ImageClass image_class, bool relax_extension_release_check, const char *extension, va_list ap) {
- _cleanup_fclose_ FILE *f = NULL;
+ _cleanup_close_ int fd = -EBADF;
_cleanup_free_ char *p = NULL;
int r;
- r = fopen_extension_release(root, image_class, extension, relax_extension_release_check, &p, &f);
+ r = open_extension_release(root, image_class, extension, relax_extension_release_check, &p, &fd);
if (r < 0)
return r;
- return parse_env_filev(f, p, ap);
+ return parse_env_file_fdv(fd, p, ap);
}
int _parse_extension_release(const char *root, ImageClass image_class, bool relax_extension_release_check, const char *extension, ...) {
@@ -339,15 +315,15 @@ int load_os_release_pairs_with_prefix(const char *root, const char *prefix, char
}
int load_extension_release_pairs(const char *root, ImageClass image_class, const char *extension, bool relax_extension_release_check, char ***ret) {
- _cleanup_fclose_ FILE *f = NULL;
+ _cleanup_close_ int fd = -EBADF;
_cleanup_free_ char *p = NULL;
int r;
- r = fopen_extension_release(root, image_class, extension, relax_extension_release_check, &p, &f);
+ r = open_extension_release(root, image_class, extension, relax_extension_release_check, &p, &fd);
if (r < 0)
return r;
- return load_env_file_pairs(f, p, ret);
+ return load_env_file_pairs_fd(fd, p, ret);
}
int os_release_support_ended(const char *support_end, bool quiet, usec_t *ret_eol) {