… enjoyable ;)
However the backup files seem to have a weird mode. Perhaps we could use the same mode as the original files.
I think FUSE gives us clean paths to work with anyway (relative paths etc. are just an artifact of human interaction, but when requests go through the VFS layer, they're being 'absolutized' already, which means they're good to go for hashing.) Also, make it a little less verbose.
… path and that's not working well
For reference, it's good to have separate CFLAGS and LDFLAGS, and it's also good to only use LDFLAGS when linking, to avoid unnecessary passage of flags to the compiler. Note that clang warns about that (ie. unused compiler flags). In fact, we should probably switch to clang.
It's common custom for C libraries to use structs as a form of primary vtable in order to allow 'overriding' or 'implementing interfaces'. Here, we are implementing the FUSE interface. In the initial code given, 'svfs_release' was implemented but they forgot to fill the vtable correctly.
The objective of this project is to learn the basics of VFS APIs (in this case, FUSE). SVFS is a very simple VFS: whenever you change a file, it keeps a backup for the next 10 minutes. The skeleton for the file system is already provided, I think there'll be mostly some learning but not a lot of code writing.