1 /* 2 * Copyright 2019 Intel Corporation 3 * SPDX-License-Identifier: MIT 4 * 5 * File operations helpers 6 */ 7 8 #ifndef _OS_FILE_H_ 9 #define _OS_FILE_H_ 10 11 #include <stdbool.h> 12 #include <stdio.h> 13 14 #ifdef __cplusplus 15 extern "C" { 16 #endif 17 18 /* 19 * Create a new file and opens it for writing-only. 20 * If the given filename already exists, nothing is done and NULL is returned. 21 * `errno` gets set to the failure reason; if that is not EEXIST, the caller 22 * might want to do something other than trying again. 23 */ 24 FILE * 25 os_file_create_unique(const char *filename, int filemode); 26 27 /* 28 * Duplicate a file descriptor, making sure not to keep it open after an exec*() 29 */ 30 int 31 os_dupfd_cloexec(int fd); 32 33 /* 34 * Read a file. 35 * Returns a char* that the caller must free(), or NULL and sets errno. 36 * If size is not null and no error occured it's set to the size of the 37 * file. 38 */ 39 char * 40 os_read_file(const char *filename, size_t *size); 41 42 /* 43 * Try to determine if two file descriptors reference the same file description 44 * 45 * Return values: 46 * - 0: They reference the same file description 47 * - > 0: They do not reference the same file description 48 * - < 0: Unable to determine whether they reference the same file description 49 */ 50 int 51 os_same_file_description(int fd1, int fd2); 52 53 #ifdef __cplusplus 54 } 55 #endif 56 57 #endif /* _OS_FILE_H_ */ 58