std::experi...stem::space(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

🌸 NAME 🌸

okay so bestie, welcome to the iconic std::experi...stem::space(3) page from the C++ Standard Libary (yes, that's literally the spelling up top and I'm not fixing it πŸ˜­πŸ’…). This is the manual for:

std::experimental::filesystem::space β€” std::experimental::filesystem::space

yep, the NAME section says it twice, and honestly? iconic. periodt.


πŸ¦‹ Synopsis πŸ¦‹

Defined in header <experimental/filesystem> ✨

space_info space( const path& p );

(filesystem TS)

space_info space( const path& p, error_code& ec ) noexcept;

okay so what does it do? It determines the information about the filesystem on which the pathname p is located, as if by POSIX statvfs πŸ’–.

It populates and returns an object of type space_info, set from the members of the POSIX struct statvfs like this:

  • space_info.capacity is set as if by f_blocks * f_frsize.
  • space_info.free is set to f_bfree * f_frsize.
  • space_info.available is set to f_bavail * f_frsize.
  • Any member that could not be determined is set to static_cast<std::uintmax_t>(-1).

The non-throwing overload sets all members to static_cast<std::uintmax_t>(-1) on error 😭.

πŸ’– Parameters πŸ’–

  • p β€” path to examine.
  • ec β€” out-parameter for error reporting in the non-throwing overload.

πŸŽ€ Return value πŸŽ€

The filesystem information (a space_info object). that's it, that's the return πŸ’….

πŸ”₯ Exceptions πŸ”₯

The overload that does not take an error_code& parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument and the OS error code as the error code argument. std::bad_alloc may be thrown if memory allocation fails.

The overload taking an error_code& parameter sets it to the OS API error code if an OS API call fails, and executes ec.clear() if no errors occur. This overload has noexcept specification: noexcept πŸ’€.

🧚 Notes 🧚

space_info.available may be less than space_info.free. not a typo, bestie, just the vibe check 🌈.

✨ Example ✨

// Run this code

#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;

int main()
{
    fs::space_info devi = fs::space("/dev/null");
    fs::space_info tmpi = fs::space("/tmp");

    std::cout << "         Capacity         Free    Available\n"
              << "/dev:   " << devi.capacity << "   "
              << devi.free << "   " << devi.available << '\n'
              << "/tmp: " << tmpi.capacity << ' '
              << tmpi.free << ' ' << tmpi.available << '\n';
}

Possible output:

          Capacity         Free    Available
/dev:   4175114240   4175110144   4175110144
/tmp: 420651237376 411962273792 390570749952

πŸ¦‹ See also πŸ¦‹

  • space_info β€” information about free and available space on the filesystem (class).

🌈 Categories 🌈

  • Noindexed pages
  • unconditionally noexcept

πŸ‘‘ Hidden categories πŸ‘‘

  • Pages with unreviewed unconditional noexcept template
  • Pages with unreviewed noexcept template

okay bestie, that's the whole page πŸ’– source: http://cppreference.com, version/date: 2024.06.10, and the title again for the road: std::experi...stem::space(3). byeee 🫢✨

πŸ“¦ where this page comes from