WSFS is a RAM-based file system written in C. It has writing/reading files, directories, and symbolic links using a hierarchical node-based system.
- System is a tree that has a single-linked list as a child.
- Path resolution to retrieve full paths of files.
- Recursive file search.
# Clone the repository
git clone https://github.com/without-eyes/wsfs.git
cd wsfs
# Generate documentation (located in ./docs/)
sudo apt-get install doxygen doxygen-gui graphviz
make doxygen
# Build the project
make
# Run the WSFS application
./wsfs
q
- Quitf
- Create a filed
- Create a directorys
- Create a symbolic linkx
- Chnage node's permissionsc
- Change node's namee
- Delete (erase) file nodew
- Write into filer
- Read from fileg
- Go into child directorym
- Move file node to new locationp
- Get the path of the file nodeb
- Go back into the parent directory
wsfs/
│── src/
│ ├── file_node_funcs.c # File system structs and enums
| ├── file_node_structs.c # File system functions
│ ├── main.c # Entry point
| ├── ui.c # User interface functions
│ ├── utils.c # Utility functions
| ├── wsfs.c # File system functions
│
│── include/
│ ├── file_structs.h # File node structures and functions
| ├── ui.h # User interface functions
│ ├── utils.h # Utility functions
| ├── wsfs.h # File system functions
│
│── docs/ # Documentation location
|
│── makefile # Build system
│── README.md # Project overview
d 19:45 \
Input command('h' for help): f
Enter file name: test_file
d 19:45 \
f 19:46 test_file
Input command('h' for help): q
Use gdb
for debugging:
gdb ./wsfs
Set breakpoints and run step-by-step debugging.
Contributions are welcome! Follow these steps to contribute:
- Read Contribution guide before contributting.
- Fork the repository on GitHub.
- Clone your fork locally:
git clone https://github.com/without-eyes/wsfs.git cd wsfs
- Create a new branch for your changes:
git checkout -b my-feature-branch
- Make your changes and commit:
git add . git commit -m "Description of changes"
- Push your changes to GitHub:
git push origin my-feature-branch
- Submit a Pull Request via GitHub.
Make sure to follow the project's coding style and include necessary documentation for your changes.
This project is licensed under the MIT License - see the LICENSE file for details.