return RET_NERRNO(faccessat(AT_FDCWD, path, mode, AT_SYMLINK_NOFOLLOW));
}
+int access_fd(int fd, int mode) {
+ /* Like access() but operates on an already open fd */
+
+ if (fd == AT_FDCWD)
+ return RET_NERRNO(access(".", mode));
+ if (fd == XAT_FDROOT)
+ return RET_NERRNO(access("/", mode));
+
+ assert(fd >= 0);
+
+ return RET_NERRNO(faccessat(fd, "", mode, AT_EMPTY_PATH));
+}
+
int touch_fd(int fd, usec_t stamp) {
assert(fd >= 0);
return mfree(p);
}
-int access_fd(int fd, int mode) {
- /* Like access() but operates on an already open fd */
-
- if (fd == AT_FDCWD)
- return RET_NERRNO(access(".", mode));
- if (fd == XAT_FDROOT)
- return RET_NERRNO(access("/", mode));
-
- assert(fd >= 0);
-
- return RET_NERRNO(faccessat(fd, "", mode, AT_EMPTY_PATH));
-}
-
int unlinkat_deallocate(int fd, const char *name, UnlinkDeallocateFlags flags) {
_cleanup_close_ int truncate_fd = -EBADF;
struct stat st;
int stat_warn_permissions(const char *path, const struct stat *st);
int access_nofollow(const char *path, int mode);
+int access_fd(int fd, int mode);
int touch_fd(int fd, usec_t stamp);
int touch_file(const char *path, bool parents, usec_t stamp, uid_t uid, gid_t gid, mode_t mode);
char* unlink_and_free(char *p);
DEFINE_TRIVIAL_CLEANUP_FUNC(char*, unlink_and_free);
-int access_fd(int fd, int mode);
-
typedef enum UnlinkDeallocateFlags {
UNLINK_REMOVEDIR = 1 << 0,
UNLINK_ERASE = 1 << 1,