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 Hack Week 20 Hack Week 21 Hack Week 22 Hack Week 23

Activity

  • about 4 years ago: jjindrak added keyword "helenos" to this project.
  • about 4 years ago: jjindrak added keyword "c++" to this project.
  • about 4 years ago: jjindrak added keyword "standardese" to this project.
  • about 4 years ago: jjindrak added keyword "filesystem" to this project.
  • about 4 years ago: jjindrak started this project.
  • about 4 years ago: jjindrak originated this project.

  • Comments

    • jjindrak
      about 4 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!

    • jjindrak
      about 4 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.

    • jjindrak
      about 3 years ago by jjindrak | Reply

      During HW19 I did implement majority of the library, but there are two places where the implementation diverges from the standard and there is a sever lack of unit tests, which prevented merging upstream. During HW20 I plan on finishing this.

    Similar Projects

    Open Source Firmware for EV chargers using the ESP32 Chip (Autoaid / EN-Plus / EVSEDO) by bschmidt

    [comment]: # (Please use the project descriptio...


    Extend GObject based introspectable API to libzypp by zbenjamin

    [comment]: # (Please use the project descriptio...


    Port some classic game to Linux by MDoucha

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


    Tungsten: A low-level LLVM programming language by mfriedrich

    Project Description

    > Tungsten is suppose...


    Avahi Integration and Network Connection by vojha

    Avahi Integration and Network Connection

    ...