During the previous Hackweek [0], I have successfully implemented, tested and merged [1] an implementation of the entire C++ standard header <future>. This time, my aim is to modernize the C++14-esque standard library [2] of HelenOS [3][4] with a C++17 feature - the <filesystem> header. The <filesystem> header is much larger than the <future> header which I barely managed to implement and test in the allocated time for the previous Hackweek, but <future> was mostly OS-independent as it relied only on previously implemented features of the standard library. The <filesystem> header, however, is limited by the filesystem API of the OS and as such implementing of the entirety of it might not be possible, limiting the scope of the project (which is a good thing due to the time constraints).
The primary features of the header [5] that should be implemented:
- path (manipulation, testing, catenation)
- directory handling (create, delete, remove, move, copy, traversal, recursive traversal)
- file handling (create, delete, remove, move, copy - links/sockets/states as permitted by HelenOS)
- error handling (exception types, those only require C++ constructs, low priority)
- file types as permitted by HelenOS (e.g. things like is_fifo() might not be possible)
[0] https://hackweek.suse.com/19/projects/helenos-of-the
[1] https://github.com/HelenOS/helenos/pull/171
[2] https://github.com/HelenOS/helenos/tree/master/uspace/lib/cpp
[3] http://helenos.org
[4] https://github.com/helenos/helenos
[5] https://en.cppreference.com/w/cpp/header/filesystem
Looking for hackers with the skills:
This project is part of:
Hack Week 19 Hack Week 20 Hack Week 21 Hack Week 22
Activity
Comments
-
over 3 years ago by jjindrak | Reply
It seems the standard took different filesystem/operating systems into account well, so I might be able to implement the entirety of the header after all. Current progress can be seen at:
https://github.com/Dzejrou/helenos/commits/hackweek19
Two days to go!
-
over 3 years ago by jjindrak | Reply
Yesterday I finished the last remaining parts of the header. Before an upstream PR is created automated tests need to be added (I foolishly tested everything by hand and now regret it) and one case of standard non-conformance (recursivedirectoryiterator returns entries as they are received by readdir(), but that does not prepend a path prefix relative to the root of the iteration). Other than these two short comings, I am satisfied with managing to implement the entire header in just 5 days and marking it as finished.
-
Similar Projects
Port some classic game to Linux by MDoucha
Let's pick some old classic game, reverse engin...
Open Source Firmware for EV chargers using the ESP32 Chip (Autoaid / EN-Plus / EVSEDO) by bschmidt
[comment]: # (Please use the project descriptio...
chatterbox by gbaccini
Project Description
[chatterbox](https://...