/* This assumes that returned FILE object is short-lived and used within the same single-threaded
* context and never shared externally, hence locking is not necessary. */
- r = fdopen_unlocked(fd, "w", &f);
+ r = take_fdopen_unlocked(&fd, "w", &f);
if (r < 0) {
(void) unlink(t);
return r;
}
- TAKE_FD(fd);
-
if (ret_f)
*ret_f = TAKE_PTR(f);
if (lseek(fd, SEEK_SET, 0) == (off_t) -1)
return log_error_errno(errno, "Failed to seek to beginning of memfd: %m");
- f = fdopen(fd, "r");
+ f = take_fdopen(&fd, "r");
if (!f)
return log_error_errno(errno, "Failed to reopen memfd: %m");
- TAKE_FD(fd);
-
if (DEBUG_LOGGING) {
_cleanup_free_ char *text = NULL;
if (r < 0)
return log_error_errno(r, "Embedded identity file is not a regular file, refusing: %m");
- identity_file = fdopen(identity_fd, "r");
+ identity_file = take_fdopen(&identity_fd, "r");
if (!identity_file)
return log_oom();
- identity_fd = -1;
-
r = json_parse_file(identity_file, ".identity", JSON_PARSE_SENSITIVE, ret, &line, &column);
if (r < 0)
return log_error_errno(r, "[.identity:%u:%u] Failed to parse JSON data: %m", line, column);
if (identity_fd < 0)
return log_error_errno(errno, "Failed to create .identity file in home directory: %m");
- identity_file = fdopen(identity_fd, "w");
+ identity_file = take_fdopen(&identity_fd, "w");
if (!identity_file) {
r = log_oom();
goto fail;
}
- identity_fd = -1;
-
json_variant_dump(normalized, JSON_FORMAT_PRETTY, identity_file, NULL);
r = fflush_and_check(identity_file);
#include "env-file.h"
#include "env-util.h"
#include "fd-util.h"
+#include "fileio.h"
#include "format-util.h"
#include "fs-util.h"
#include "in-addr-util.h"
pair[1] = safe_close(pair[1]);
- f = fdopen(pair[0], "r");
+ f = take_fdopen(&pair[0], "r");
if (!f)
return -errno;
- pair[0] = -1;
-
r = load_env_file_pairs(f, "/etc/os-release", &l);
if (r < 0)
return r;
if (lseek(operation->extra_fd, 0, SEEK_SET) == (off_t) -1)
return -errno;
- f = fdopen(operation->extra_fd, "r");
+ f = take_fdopen(&operation->extra_fd, "r");
if (!f)
return -errno;
- operation->extra_fd = -1;
-
/* The resulting temporary file starts with a boolean value that indicates success or not. */
errno = 0;
n = fread(&success, 1, sizeof(success), f);
if (fd < 0)
return fd;
- f = fdopen(fd, "r");
+ f = take_fdopen(&fd, "r");
if (!f)
return log_oom();
- fd = -1;
r = read_line(f, LONG_LINE_MAX, &line);
if (r == 0)
if (fd < 0)
return fd;
- f = fdopen(fd, "r");
+ f = take_fdopen(&fd, "r");
if (!f)
return log_oom();
- fd = -1;
r = read_line(f, LONG_LINE_MAX, &line);
if (r == 0)
return log_debug_errno(errno, "Failed to open %s/%s: %m", where, p);
}
- r = fdopen_unlocked(fd, "r", &f);
+ r = take_fdopen_unlocked(&fd, "r", &f);
if (r < 0)
return log_debug_errno(r, "Failed to convert file handle: %m");
- TAKE_FD(fd);
r = read_line(f, LONG_LINE_MAX, &line);
if (r < 0)
assert(d);
assert(d->fd >= 0);
- f = fdopen(d->fd, "r");
+ f = take_fdopen(&d->fd, "r");
if (!f)
return -errno;
- d->fd = -1;
-
r = read_full_stream(f, &buf, &n);
if (r < 0)
return r;
(void) fchmod(fd, 0644);
- f = fdopen(fd, "w");
+ f = take_fdopen(&fd, "w");
if (!f) {
r = -errno;
goto finish;
}
- fd = -1;
-
signal_fd = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC);
if (signal_fd < 0) {
r = -errno;
fds[2*k+1] = safe_close(fds[2*k+1]);
- f = fdopen(fds[2*k], "r");
+ f = take_fdopen(&fds[2*k], "r");
if (!f) {
r = -errno;
goto finish;
}
- fds[2*k] = -1;
-
switch (k) {
case META_HOSTNAME:
if (r < 0)
return r;
- f = fdopen(fd, "r");
+ f = take_fdopen(&fd, "r");
if (!f)
return -errno;
- fd = -1;
/* c is only needed if we actually load the file (it's referenced from items[] btw, in case you wonder.) */
assert(c);
#include "alloc-util.h"
#include "env-file.h"
#include "fd-util.h"
+#include "fileio.h"
#include "fs-util.h"
#include "macro.h"
#include "os-util.h"
if (r < 0)
return r;
- f = fdopen(fd, "r");
+ f = take_fdopen(&fd, "r");
if (!f)
return -errno;
- fd = -1;
*ret_file = f;