fedir
8fcfebe3f9
Now filesystem implements getattr through source_stat, which is a wrapper for an fstatat with `dirfd == handle.root_path`.
29 lines
549 B
C
29 lines
549 B
C
#define _GNU_SOURCE
|
|
|
|
#include "sourcefs.h"
|
|
#include <fcntl.h>
|
|
#include <stdio.h>
|
|
#include <sys/stat.h>
|
|
|
|
static struct source_files_handle {
|
|
int root_fd;
|
|
} handle;
|
|
|
|
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;
|
|
}
|