XfopenFlags xflags = XFOPEN_UNLOCKED;
int r;
- assert(filename);
assert(ret_contents);
if (FLAGS_SET(flags, READ_FULL_FILE_CONNECT_SOCKET) && /* If this is enabled, let's try to connect to it */
/* A combination of fopen() with openat() */
assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
- assert(path);
assert(mode);
assert(ret);
- if (dir_fd == AT_FDCWD && open_flags == 0)
+ if (dir_fd == AT_FDCWD && open_flags == 0 && path)
f = fopen(path, mode);
else {
_cleanup_close_ int fd = -EBADF;
if (mode_flags < 0)
return mode_flags;
- fd = openat(dir_fd, path, mode_flags | open_flags);
- if (fd < 0)
- return -errno;
+ if (path) {
+ fd = openat(dir_fd, path, mode_flags | open_flags);
+ if (fd < 0)
+ return -errno;
+ } else {
+ if (dir_fd == AT_FDCWD)
+ return -EBADF;
+
+ fd = fd_reopen(dir_fd, mode_flags | open_flags);
+ if (fd < 0)
+ return fd;
+ }
f = take_fdopen(&fd, mode);
}
int r;
assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
- assert(path);
assert(ret);
sk = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0);
int r;
assert(dir_fd >= 0 || dir_fd == AT_FDCWD);
- assert(path);
assert(mode);
assert(ret);