MCPcopy Create free account
hub / github.com/PCSX2/pcsx2 / GetTemporaryFile

Function GetTemporaryFile

pcsx2/INISettingsInterface.cpp:26–62  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

24static std::mutex s_ini_load_save_mutex;
25
26static std::FILE* GetTemporaryFile(std::string* temporary_filename, const std::string& original_filename,
27 const char* mode, Error* error)
28{
29 temporary_filename->clear();
30 temporary_filename->reserve(original_filename.length() + 8);
31 temporary_filename->append(original_filename);
32
33#ifdef _WIN32
34 temporary_filename->append(".XXXXXXX");
35 const errno_t err = _mktemp_s(temporary_filename->data(), temporary_filename->length() + 1);
36 if (err != 0)
37 {
38 Error::SetErrno(error, "_mktemp_s() failed: ", err);
39 return nullptr;
40 }
41
42 return FileSystem::OpenCFile(temporary_filename->c_str(), mode, error);
43#else
44 temporary_filename->append(".XXXXXX");
45 const int fd = mkstemp(temporary_filename->data());
46 if (fd < 0)
47 {
48 Error::SetErrno(error, "mkstemp() failed: ", errno);
49 return nullptr;
50 }
51
52 std::FILE* fp = fdopen(fd, mode);
53 if (!fp)
54 {
55 Error::SetErrno(error, "mkstemp() failed: ", errno);
56 close(fd);
57 return nullptr;
58 }
59
60 return fp;
61#endif
62}
63
64INISettingsInterface::INISettingsInterface(std::string filename)
65 : m_filename(std::move(filename))

Callers 1

SaveMethod · 0.85

Calls 6

clearMethod · 0.45
reserveMethod · 0.45
lengthMethod · 0.45
appendMethod · 0.45
dataMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected