ICFS/sources/sourcefs.h

52 lines
1.3 KiB
C
Raw Normal View History

#ifndef SOURCEFS_H
#define SOURCEFS_H
2024-12-03 18:10:50 +01:00
#include <dirent.h>
#include <sys/stat.h>
/**
* Initializes the source file handling.
*
* @param root_path The root of the source files folder.
2024-12-03 18:10:50 +01:00
* @return 0 on success, -1 on failure.
*/
int source_init(const char *root_path);
/* All of the functions below are designed to behave exactly as their non-source
* counterparts. */
int source_stat(const char *restrict filename, struct stat *restrict statbuf);
2024-12-03 18:10:50 +01:00
struct dirent *source_readdir(DIR *dirp);
DIR *source_opendir(const char *filename);
int source_unlink(const char *filename);
int source_mkdir(const char *filename, mode_t mode);
int source_rmdir(const char *filename);
int source_symlink(const char *target, const char *linkpath);
int source_rename(const char *oldpath, const char *newpath);
int source_link(const char *oldpath, const char *newpath);
int source_chmod(const char *filename, mode_t mode);
int source_chown(const char *filename, uid_t owner, gid_t group);
int source_truncate(const char *filename, off_t length);
/* `open` and `create` are designed to correspond to fuse operations, not the
* libc's `open(2)`. Both of them actually call `openat`. */
int source_open(const char *filename, int flags);
int source_create(const char *filename, int flags, mode_t mode);
#endif // !SOURCEFS_H