mesa/src/util/os_file.h

60 lines
1.4 KiB
C

/*
* Copyright 2019 Intel Corporation
* SPDX-License-Identifier: MIT
*
* File operations helpers
*/
#ifndef _OS_FILE_H_
#define _OS_FILE_H_
#include <stdbool.h>
#include <stdio.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Create a new file and opens it for writing-only.
* If the given filename already exists, nothing is done and NULL is returned.
* `errno` gets set to the failure reason; if that is not EEXIST, the caller
* might want to do something other than trying again.
*/
FILE *
os_file_create_unique(const char *filename, int filemode);
/*
* Duplicate a file descriptor, making sure not to keep it open after an exec*()
*/
int
os_dupfd_cloexec(int fd);
/*
* Read a file.
* Returns a char* that the caller must free(), or NULL and sets errno.
* If size is not null and no error occurred it's set to the size of the
* file.
* Reads files as binary and includes a NUL terminator after the end of the
* returned buffer.
*/
char *
os_read_file(const char *filename, size_t *size);
/*
* Try to determine if two file descriptors reference the same file description
*
* Return values:
* - 0: They reference the same file description
* - > 0: They do not reference the same file description
* - < 0: Unable to determine whether they reference the same file description
*/
int
os_same_file_description(int fd1, int fd2);
#ifdef __cplusplus
}
#endif
#endif /* _OS_FILE_H_ */