https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99327

--- Comment #3 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:59ffa3e3dba5a7805585c61dd4387c5644249d52

commit r12-4071-g59ffa3e3dba5a7805585c61dd4387c5644249d52
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue May 11 18:47:18 2021 +0100

    libstdc++: Avoid unconditional use of errc::not_supported [PR 99327]

    The errc::not_supported constant is only defined if ENOTSUP is defined,
    which is not true for all targets. Many uses of errc::not_supported in
    the filesystem library do not actually match the intended meaning of
    ENOTSUP described by POSIX. They should be using ENOSYS instead
    (i.e. errc::function_not_supported).

    This change ensures that appropriate error codes are used by the
    filesystem library. The remaining uses of errc::not_supported are
    replaced with a call to a new helper function so that an alternative
    value will be used on targets that don't support errc::not_supported.

    Signed-off-by: Jonathan Wakely <jwak...@redhat.com>

    libstdc++-v3/ChangeLog:

            PR libstdc++/99327
            * src/filesystem/ops-common.h (__unsupported): New function to
            return a suitable error code for missing functionality.
            (posix::off_t): New typedef.
            (posix::*): Set errno to ENOSYS instead of ENOTSUP for no-op
            fallback implementations.
            (do_copy_file): Replace uses of errc::not_supported.
            * src/c++17/fs_ops.cc (fs::copy, fs::copy_file, create_dir)
            (fs::create_directory, fs::create_directory_symlink)
            (fs::create_hard_link, fs::create_symlink, fs::current_path)
            (fs::equivalent, do_stat, fs::file_size, fs::hard_link_count)
            (fs::last_write_time, fs::permissions, fs::read_symlink):
            Replace uses of errc::not_supported.
            (fs::resize_file): Qualify off_t.
            * src/filesystem/ops.cc (fs::copy, fs::copy_file, create_dir)
            (fs::create_directory, fs::create_directory_symlink)
            (fs::create_hard_link, fs::create_symlink, fs::current_path)
            (fs::equivalent, do_stat, fs::file_size, fs::last_write_time)
            (fs::permissions, fs::read_symlink, fs::system_complete):
            Replace uses of errc::not_supported.
            (fs::resize_file): Qualify off_t and enable unconditionally.
            * testsuite/19_diagnostics/system_error/cons-1.cc: Likewise.

Reply via email to