diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2021-07-30 13:56:14 +0100 |
---|---|---|
committer | Jonathan Wakely <jwakely@redhat.com> | 2021-07-30 18:12:39 +0100 |
commit | 3dbd4d94bf380f3efa8bba9b203ce7d4c8f47fbb (patch) | |
tree | 6819bfe2d940de090ddf612866796f1c485f5773 /libstdc++-v3/testsuite/experimental/filesystem | |
parent | 2065654435e3d97676366f82b939bc9273382dbe (diff) | |
download | gcc-3dbd4d94bf380f3efa8bba9b203ce7d4c8f47fbb.zip gcc-3dbd4d94bf380f3efa8bba9b203ce7d4c8f47fbb.tar.gz gcc-3dbd4d94bf380f3efa8bba9b203ce7d4c8f47fbb.tar.bz2 |
libstdc++: Use secure_getenv for filesystem::temp_directory_path() [PR65018]
This adds a configure check for the GNU extension secure_getenv and then
uses it for looking up TMPDIR and similar variables.
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>
libstdc++-v3/ChangeLog:
PR libstdc++/65018
* configure.ac: Check for secure_getenv.
* config.h.in: Regenerate.
* configure: Regenerate.
* src/filesystem/ops-common.h (get_temp_directory_from_env): New
helper function to obtain path from the environment.
* src/c++17/fs_ops.cc (fs::temp_directory_path): Use new helper.
* src/filesystem/ops.cc (fs::temp_directory_path): Likewise.
* testsuite/27_io/filesystem/operations/temp_directory_path.cc:
Print messages if test cannot be run.
* testsuite/experimental/filesystem/operations/temp_directory_path.cc:
Likewise. Fix incorrect condition. Use "TMP" to work with
Windows as well as POSIX.
Diffstat (limited to 'libstdc++-v3/testsuite/experimental/filesystem')
-rw-r--r-- | libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc b/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc index 3e0833f..d6d251e 100644 --- a/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc +++ b/libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc @@ -21,6 +21,7 @@ #include <experimental/filesystem> #include <stdlib.h> +#include <stdio.h> #include <testsuite_hooks.h> #include <testsuite_fs.h> @@ -59,7 +60,10 @@ test01() clean_env(); if (!fs::exists("/tmp")) + { + puts("/tmp doesn't exist, not testing it for temp_directory_path"); return; // just give up + } std::error_code ec = make_error_code(std::errc::invalid_argument); fs::path p1 = fs::temp_directory_path(ec); @@ -75,8 +79,11 @@ test02() { clean_env(); - if (set_env("TMPDIR", __gnu_test::nonexistent_path().string())) + if (!set_env("TMP", __gnu_test::nonexistent_path().string())) + { + puts("Cannot set environment variables, not testing temp_directory_path"); return; // just give up + } std::error_code ec; fs::path p = fs::temp_directory_path(ec); |