diff options
author | Mattias Andrée <maandree@member.fsf.org> | 2015-12-30 02:15:02 +0100 |
---|---|---|
committer | Mattias Andrée <maandree@member.fsf.org> | 2015-12-30 02:15:02 +0100 |
commit | 45435cc7e158eb4a604bc541575799ee603b14db (patch) | |
tree | fd8b58ed2d03924f954b8d19b4b1ff21bf759b16 /include | |
parent | halt + hcf (diff) | |
download | slibc-45435cc7e158eb4a604bc541575799ee603b14db.tar.gz slibc-45435cc7e158eb4a604bc541575799ee603b14db.tar.bz2 slibc-45435cc7e158eb4a604bc541575799ee603b14db.tar.xz |
add reopen
Signed-off-by: Mattias Andrée <maandree@member.fsf.org>
Diffstat (limited to 'include')
-rw-r--r-- | include/fcntl.h | 47 |
1 files changed, 43 insertions, 4 deletions
diff --git a/include/fcntl.h b/include/fcntl.h index 1c13b8d..422d408 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -52,10 +52,49 @@ int creat(const char*, mode_t) __deprecated("Use 'open' instead."); - +#if defined(__SLIBC_SOURCE) +/** + * Reopen a file via its file descriptor. The old file descriptor + * is closed and replace with the new open file descriptor. + * + * This function call is different from the `dup` function-family + * in two ways: (1) you can select news flags, for example, if + * `fd` was read-only, the new file descriptor can be write-only, + * and (2) the file descriptor is not duplicated, the file is + * reopened. + * + * This function is useful if you want to reopen a file you do + * now know the pathname, you do not want to create a new string + * with the pathname, or if the the file no longer has a pathname + * because it has been unlinked. + * + * Because the file is reopened, the file position is reset and + * is not shared with any duplicates of `fd`, unlike a call to + * dup(3). it is visible to the filesystem as a new open file + * descriptor and is distinguished from the duplocates of `fd`, + * and all file locks associated with `fd` are lost, except for + * on the duplicates of `fd`, which means that you can create + * new locks without removing locks from the duplicates of `fd`. + * + * This is a slibc extension. + * + * @etymology (Reopen) file! + * + * @param fd The file descriptor. + * @param oflag How the file shall be opened, see open(3). + * `O_CREAT` is not allowed. + * @return Zero on success, -1 on error. + * + * @throws EINVAL `oflag` contains `O_CREAT`. + * @throws EINVAL `fd` is negative. + * @throws Any error specified for open(3). + * @throws Any error specified for dup2(3). + * + * @since Always. + */ +int reopen(int, int); #endif -/* - TODO int reopen(int fd, int oflag); 0, on success, -1 on error -*/ + +#endif |