[flang-commits] [flang] [llvm] [flang-rt] Honor TMPDIR/TMP/TEMP/TEMPDIR for OPEN(STATUS='SCRATCH') (PR #199517)
Eugene Epshteyn via flang-commits
flang-commits at lists.llvm.org
Mon May 25 05:23:04 PDT 2026
================
@@ -48,14 +72,26 @@ static int openfile_mkstemp(IoErrorHandler &handler) {
int fd{::_open(tempFileName, _O_CREAT | _O_BINARY | _O_TEMPORARY | _O_RDWR,
_S_IREAD | _S_IWRITE)};
#else
- char path[]{"/tmp/Fortran-Scratch-XXXXXX"};
- int fd{::mkstemp(path)};
+ static constexpr char suffix[]{"/Fortran-Scratch-XXXXXX"};
+ const char *dir{GetSystemTempDir()};
+ std::size_t dirLen{std::strlen(dir)};
+ // Drop a single trailing slash so we never produce a "//" in the path.
+ if (dirLen > 1 && dir[dirLen - 1] == '/') {
+ --dirLen;
+ }
+ OwningPtr<char> path{reinterpret_cast<char *>(
+ AllocateMemoryOrCrash(handler, dirLen + sizeof(suffix)))};
+ runtime::memcpy(path.get(), dir, dirLen);
----------------
eugeneepshteyn wrote:
Note: I have a plan to extract path manipulation in flang-rt into its own class, but that would be a separate PR.
https://github.com/llvm/llvm-project/pull/199517
More information about the flang-commits
mailing list