594 Commits

Author SHA1 Message Date
Steffen Schümann
749c205f7d Add CTest integration for std_filesystem_test target 2026-07-19 11:28:53 +02:00
Steffen Schümann
29b5acd3d6 equivalent() now compares filesystem identity only; added related tests, refs #210 2026-07-14 23:14:14 +02:00
Steffen Schümann
796515b6be Handle malformed UTF-16 sequences in toUtf8 conversion and update error handling, refs #209. 2026-07-13 21:09:13 +02:00
Steffen Schümann
09540bf5e7 Add symlink handling tests and fix recursive_directory_iterator behavior with symlinks (refs #178) 2026-07-13 01:20:44 +02:00
Steffen Schümann
73212968f6 Squashed commit of the following:
commit 16e1157d4e0a484c5b0045551ce0e083e566d582
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sun Jul 12 14:53:28 2026 +0200

    Improve file time precision checks and initialize `directory_entry`'s `_last_write_time`

commit 4bc18b09557747baf03cdc412102b4166627eba9
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sun Jul 12 13:12:35 2026 +0200

    Preserve subsecond precision for `last_write_time()` and related filesystem metadata (#208)
2026-07-12 15:11:57 +02:00
Steffen Schümann
38f91bd470 last_write_time() now consistently follows symlinks and respects timestamps (#207) 2026-07-12 12:02:18 +02:00
Steffen Schümann
9a98ce0d2b Add GHC_FILESYSTEM_FWD_TEST check in filesystem tests 2026-07-12 11:23:18 +02:00
Steffen Schümann
442d95aa41 Handle Windows unknown error codes safely in systemErrorText (#206) 2026-07-12 10:47:39 +02:00
Steffen Schümann
998d93cdf4 copy_file() handls non-regular sources with error reporting (#205) 2026-07-12 10:06:11 +02:00
Steffen Schümann
831d54a21d Squashed commit of the following:
commit a6aab92fb26c569d8fcf417d903601a3b3d4ce6f
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sat Jul 11 23:04:57 2026 +0200

    Refine `weakly_canonical` test to validate error codes and handle invalid paths more robustly.

commit 21b931bd977608fcdcb1ae79aaf4383ffdae517c
Merge: 48a868a 134f5e6
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sat Jul 11 22:11:16 2026 +0200

    Merge branch 'master' into feature-204-weakly-canonical-ignores-errors

commit 48a868a11a69ac174f9ec2eacc5ac78bd72b6ef3
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sat Jul 11 21:48:57 2026 +0200

    Propagate `weakly_canonical()` component lookup errors and improve error handling in filesystem tests (#204)
2026-07-12 00:00:06 +02:00
Steffen Schümann
134f5e61be Update CMake test configuration for standardized filesystem support
Refactored to use `AddExecutableWithStdFS` for conditional standard filesystem testing, ensuring proper linking and test setup only when the target is available.
2026-07-11 22:01:09 +02:00
Steffen Schümann
6dfddd981e Merge branch 'feature-200-fstream-test' 2026-07-11 21:22:43 +02:00
Steffen Schümann
cdbf7835b4 Add tests <fstream> addition and update CMake 2026-07-11 21:22:17 +02:00
Steffen Schümann
58c373188b Add support for device UNC paths in canonical() (#171) 2026-07-11 20:40:28 +02:00
Steffen Schümann
730589f53e Squashed commit of the following:
commit 333fc89c7d3f8962d7bc1025565c27e046f28e28
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sat Jul 11 18:37:05 2026 +0200

    Removed extra tests that were added but unrelated to the fix.

commit 542f355853fcae25e788c4514fe57494200797ce
Author: Steffen Schümann <s.schuemann@pobox.com>
Date:   Sat Jul 11 18:29:40 2026 +0200

    lexically_normal() preserves IPv6 components in device UNC paths (#170)
2026-07-11 20:18:58 +02:00
Steffen Schümann
4d2f630892 Fix appending to host-only UNC paths by inserting missing separator (#191) 2026-07-11 16:09:44 +02:00
Steffen Schümann
87157acd6c Fix lexically_normal() to correctly preserve unresolved parent components in relative paths 2026-07-11 09:58:07 +02:00
Steffen Schümann
8ae8ec1582 Update README with missing fixes, enhancements, and pull requests 2026-07-11 09:48:33 +02:00
Steffen Schümann
5f7303f5cd Fix MSVC 2015 warning for noexcept with disabled exceptions 2026-07-10 23:44:16 +02:00
Steffen Schümann
30ea991a26 Update CI workflow for newer GitHub runners and toolchains, retaining MSVC v142 compatibility 2026-07-10 19:32:57 +02:00
Steffen Schümann
79ce44f0a6 Define CATCH_CONFIG_NO_COUNTER across tests to disable Catch2's counter feature for broader compiler support. 2026-07-10 17:19:17 +02:00
Steffen Schümann
8741115872 Allow iteration while exceptions are disabled and reactivate proximate(...) for that case 2026-07-10 17:01:36 +02:00
Nahuel Gaitan
603dacf69e
add <fstream> to dynamic headers 2026-01-01 22:21:38 -03:00
Steffen Schümann
0e72911ba0
Merge pull request #199 from gulrak/dev-msys2-workflow
Added MSYS2 compilers to GitHub workflow
2025-12-31 22:22:59 +01:00
Steffen Schümann
f539086997 Add Clang-specific diagnostic handling and support checks 2025-12-31 14:21:35 +01:00
Steffen Schümann
dc19ab8f7b Avoid unnecessary temporary string creation in Windows directory iteration 2025-12-31 14:11:31 +01:00
Steffen Schümann
0eef0ffea4 Update build_cmake.yml to disable testing against the std filesystem in MSYS2 builds 2025-12-31 13:53:35 +01:00
Steffen Schümann
2d8c9ec715 Add Windows MSYS2 builds to CI workflow 2025-12-31 13:43:40 +01:00
Steffen Schümann
1b0c27ed9d
Merge pull request #197 from bxwllzz/master
Fix EINTR handling in read() and readdir() loops
2025-12-28 11:23:10 +01:00
Steffen Schümann
6d3ab0851b
Merge pull request #198 from gulrak/dev-workflow-upgrade
CI/workflow upgrade
2025-12-28 09:25:12 +01:00
Steffen Schümann
b44136d1fb Simplify and streamline build_cmake.yml: eliminate outdated CMake workaround for GCC 5-6, ensuring unified CMake configuration across all versions. 2025-12-27 23:01:43 +01:00
Steffen Schümann
9ef4be2a96 Update build_cmake.yml to handle GCC 5-6 with older CMake versions 2025-12-27 22:41:14 +01:00
Steffen Schümann
3634e15e6a Fix formatting and resolve expired GPG key issues in build_cmake.yml 2025-12-27 22:07:27 +01:00
Steffen Schümann
ef40391bd8 Refine Debian repository fixes and conditions in build matrix for GCC/Clang versions. 2025-12-27 18:59:35 +01:00
Steffen Schümann
3aad88b8e6 Fix Debian Jessie EOL repository issues for GCC 5-6 and refine Buster handling 2025-12-27 18:52:33 +01:00
Steffen Schümann
7777e3c106 Clarify legacy compiler tests in build_cmake.yml 2025-12-27 16:50:11 +01:00
Steffen Schümann
770f1ae251 Clarify legacy compiler tests in build_cmake.yml 2025-12-27 16:46:31 +01:00
Steffen Schümann
8bc001414b Update build_cmake.yml: add new platforms, revise toolchain configs, and fix EOL dependency issues 2025-12-27 16:32:31 +01:00
Steffen Schümann
b1c6284a6e Re-enable legacy compiler builds in GitHub Actions and update FreeBSD image to 14.3 in Cirrus CI 2025-12-27 15:14:57 +01:00
Steffen Schümann
a161aae4c0 Update build_cmake.yml: modernize compilers and runners, refine coverage steps, and add optional Docker setup 2025-12-27 14:19:23 +01:00
bxwllzz
601efab4be Fix EINTR handling in read() and readdir() loops
- read(): POSIX specifies that errno is undefined when read() return values are >= 0.
  The previous retry logic had bugs:
  When read() returns 0 (EOF), the loop condition checked errno before
  the return value. Since errno might be stale from a previous call, this could
  trigger a false retry on EOF.

- readdir(): When readdir() reaches the end of directory, it returns NULL
  without modifying errno. Setting errno=0 before the loop caused an infinite loop.
2025-12-27 18:22:59 +08:00
Steffen Schümann
9fda7b0afb
Update build_cmake.yml, removing macOS build versions not supported by GitHub 2025-01-23 07:26:01 +01:00
Steffen Schümann
076592ce6e
Merge pull request #188 from bbannier/topic/bbannier/getcwd-with-NULL-buf
Avoid GNU `getcwd` extension behavior
2025-01-07 21:00:06 +01:00
Steffen Schümann
157feb3651
Merge pull request #190 from dpogue/wundef-fix
Check macros are defined before use
2025-01-05 17:01:49 +01:00
Darryl Pogue
f08e8b0064
Check macros are defined before use
This resolves warnings when compiling with -wundef (and errors when
combined with -werror).
2025-01-04 21:45:29 -08:00
Benjamin Bannier
99c3500205 Replace EOL centos CI with rockylinux
centos7 has reached EOL on 2024-06-30, centos8 on 2021-10-31. In
practical terms this means that their package repositories are offline
for the foreseeable future and the CI tasks making use of them might
never run again.

This patch replaces the existing CI jobs on centos7/centos8 with jobs on
rockylinux8/9. Since rockylinux is an open source variant similar to
RHEL this should provide testing with similar spirit. In contrast to
centos, rockylinux does provide very granular tagging of releases which
if used would help avoid breaking on e.g., subtle package changes in
their package repositories. I however did not use very precise tags in
the patch and instead went with broad "trains" for the 8 and 9 series;
I hope this minimizes maintenance overhead (e.g., bumping to new
releases) while still giving a good testing signal.
2024-12-18 15:45:33 +01:00
Benjamin Bannier
f43846877b Avoid GNU getcwd extension behavior
GNU `getcwd` can allocate a buffer if passed `NULL` for it. This is an
extension which is e.g., not recognized by clang-tidy-19's
`StdCLibraryFunctions` check[^1] which emits a diagnostic on a violated
precondition `buf != NULL`,

```
The 1st argument to 'getcwd' is NULL but should not be NULL [clang-analyzer-unix.StdCLibraryFunctions,-warnings-as-errors]
[build]  3987 |     std::unique_ptr<char, decltype(&std::free)> buffer{::getcwd(NULL, 0), std::free};
```

This patch modifies this use of `getcwd` with this extension behavior to
instead use `get_current_dir_name` which is also a GNU extension, but
does not trigger this diagnostic.

[^1]: https://clang.llvm.org/docs/analyzer/checkers.html#unix-stdclibraryfunctions-c
2024-12-18 15:26:19 +01:00
Steffen Schuemann
b1982f06c8 work on ci scripts 2024-04-27 12:20:18 +02:00
Steffen Schuemann
fbc5d213fc work on ci scripts 2024-04-27 12:07:57 +02:00
Steffen Schuemann
72a03b3c6d work on ci scripts 2024-04-27 12:00:20 +02:00