[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