aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3/testsuite/experimental/filesystem
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2021-07-30 13:56:14 +0100
committerJonathan Wakely <jwakely@redhat.com>2021-07-30 18:12:39 +0100
commit3dbd4d94bf380f3efa8bba9b203ce7d4c8f47fbb (patch)
tree6819bfe2d940de090ddf612866796f1c485f5773 /libstdc++-v3/testsuite/experimental/filesystem
parent2065654435e3d97676366f82b939bc9273382dbe (diff)
downloadgcc-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.cc9
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);