ICFS/sources/sourcefs.c

41 lines
884 B
C
Raw Normal View History

#define _GNU_SOURCE
#include "sourcefs.h"
2024-12-03 18:10:50 +01:00
#include <dirent.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/stat.h>
static struct source_files_handle {
int root_fd;
} handle;
2024-12-03 18:10:50 +01:00
void source_fname_translate(const char *filename) {}
int source_init(const char *root_path) {
int root_fd = open(root_path, O_PATH);
if (root_fd == -1) {
return -1;
}
handle.root_fd = root_fd;
return 0;
}
// Currently this literally is a fstatat wrapper.
int source_stat(const char *restrict pathname, struct stat *restrict statbuf) {
int statret = fstatat(handle.root_fd, pathname, statbuf, 0);
return statret;
}
2024-12-03 18:10:50 +01:00
DIR *source_opendir(const char *filename) {
int fd = openat(handle.root_fd, filename, NULL);
DIR *dir_pointer = fdopendir(fd);
return dir_pointer;
}
// Just regular readdir in disguise.
struct dirent *source_readdir(DIR *dirp) { return readdir(dirp); }