From f76cbc7901f7d500f5a4f74aedfd29970d1efd00 Mon Sep 17 00:00:00 2001 From: Michel Dänzer Date: Mon, 6 Jan 2020 18:24:52 +0100 Subject: util: Add os_same_file_description helper Acked-by: Pierre-Eric Pelloux-Prayer Part-of: --- src/util/os_file.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/util/os_file.c') diff --git a/src/util/os_file.c b/src/util/os_file.c index c670e127c6b..b502ff4b0ef 100644 --- a/src/util/os_file.c +++ b/src/util/os_file.c @@ -34,7 +34,9 @@ os_file_create_unique(const char *filename, int filemode) #if defined(__linux__) #include +#include #include +#include #include @@ -130,8 +132,18 @@ os_read_file(const char *filename) return buf; } +bool +os_same_file_description(int fd1, int fd2) +{ + pid_t pid = getpid(); + + return syscall(SYS_kcmp, pid, pid, KCMP_FILE, fd1, fd2) == 0; +} + #else +#include "u_debug.h" + char * os_read_file(const char *filename) { @@ -139,4 +151,15 @@ os_read_file(const char *filename) return NULL; } +bool +os_same_file_description(int fd1, int fd2) +{ + if (fd1 == fd2) + return true; + + debug_warn_once("Can't tell if different file descriptors reference the same" + " file description, false negatives might cause trouble!\n"); + return false; +} + #endif -- cgit v1.2.3