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:

helenos c++ standardese filesystem

This project is part of:

Hack Week 19

Activity

  • 4 months ago: jjindrak added keyword "helenos" to HelenOS: <filesystem> of a down
  • 4 months ago: jjindrak added keyword "c++" to HelenOS: <filesystem> of a down
  • 4 months ago: jjindrak added keyword "standardese" to HelenOS: <filesystem> of a down
  • 4 months ago: jjindrak added keyword "filesystem" to HelenOS: <filesystem> of a down
  • 4 months ago: jjindrak started HelenOS: <filesystem> of a down
  • 4 months ago: jjindrak originated HelenOS: <filesystem> of a down

  • Comments

    • jjindrak
      3 months 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!

    • jjindrak
      3 months 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

    Rewrite transactional-update in C++ by fos

    transactional-update, the application to up...


    Port some classic game to Linux by MDoucha

    Let's pick some old classic game, reverse engin...


    SMT solver for AWS Policy decisions in ceph RGW by abhishekl

    Currently AWS uses a SMT solver to decide on pu...