#include "perfetto/ext/base/temp_file.h"
#include "perfetto/base/build_config.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
#include <Windows.h>
#include <direct.h>
#include <fileapi.h>
#include <io.h>
#else
#include <unistd.h>
#endif
#include "perfetto/base/logging.h"
#include "perfetto/ext/base/file_utils.h"
#include "perfetto/ext/base/string_utils.h"
namespace perfetto {
namespace base {
#if PERFETTO_BUILDFLAG(PERFETTO_OS_WIN)
namespace {
std::string GetTempFilePathWin() {
std::string tmplt = GetSysTempDir() + "\\perfetto-XXXXXX";
StackString<255> name("%s\\perfetto-XXXXXX", GetSysTempDir().c_str());
PERFETTO_CHECK(_mktemp_s(name.mutable_data(), name.len() + 1) == 0);
return name.ToStdString();
}
}
#endif
std::string GetSysTempDir() { … }
TempFile TempFile::Create() { … }
TempFile TempFile::CreateUnlinked() { … }
TempFile::TempFile() = default;
TempFile::~TempFile() { … }
ScopedFile TempFile::ReleaseFD() { … }
void TempFile::Unlink() { … }
TempFile::TempFile(TempFile&&) noexcept = default;
TempFile& TempFile::operator=(TempFile&&) = default;
TempDir TempDir::Create() { … }
TempDir::TempDir() = default;
TempDir::TempDir(TempDir&&) noexcept = default;
TempDir& TempDir::operator=(TempDir&&) = default;
TempDir::~TempDir() { … }
}
}