fix warning tmpnam
This commit is contained in:
@@ -501,6 +501,8 @@ if (NOT CROSSTOOLS)
|
||||
target_include_directories(pip_lua PUBLIC "${_lua_src_dir}")
|
||||
if (WIN32)
|
||||
target_compile_definitions(pip_lua PRIVATE LUA_BUILD_AS_DLL LUA_CORE)
|
||||
else()
|
||||
target_compile_definitions(pip_lua PRIVATE LUA_USE_POSIX)
|
||||
endif()
|
||||
list(APPEND HDR_DIRS "${PIP_3PL_DIR}/LuaBridge")
|
||||
list(APPEND HDRS ${_lua_src_hdr})
|
||||
|
||||
@@ -176,14 +176,16 @@ bool PIFile::openTemporary(PIIODevice::DeviceMode mode) {
|
||||
PIString tp;
|
||||
#ifdef WINDOWS
|
||||
tp = PIDir::temporary().path() + PIDir::separator + "file" + PIString::fromNumber(randomi());
|
||||
#else
|
||||
char * rc = tmpnam(0);
|
||||
if (!rc) return false;
|
||||
tp = rc;
|
||||
#endif
|
||||
while (isExists(tp)) {
|
||||
tp += PIString::fromNumber(randomi() % 10);
|
||||
}
|
||||
#else
|
||||
char template_rc[] = "/tmp/pifile_tmp_XXXXXX";
|
||||
int fd = mkstemp(template_rc);
|
||||
if (fd == -1) return false;
|
||||
::close(fd);
|
||||
tp = template_rc;
|
||||
#endif
|
||||
return open(tp, mode);
|
||||
}
|
||||
|
||||
|
||||
@@ -35,3 +35,4 @@ pip_test(math)
|
||||
pip_test(core)
|
||||
pip_test(piobject)
|
||||
pip_test(client_server pip_client_server)
|
||||
pip_test(io)
|
||||
|
||||
14
tests/io/testpifile.cpp
Normal file
14
tests/io/testpifile.cpp
Normal file
@@ -0,0 +1,14 @@
|
||||
#include "pifile.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
TEST(PIFile_Test, openTemporary) {
|
||||
const auto ba = PIByteArray::fromHex("AABBCC");
|
||||
PIFile f;
|
||||
ASSERT_TRUE(f.openTemporary());
|
||||
ASSERT_TRUE(f.path().isNotEmpty());
|
||||
ASSERT_EQ(ba.size(), f.write(ba));
|
||||
ASSERT_EQ(ba, f.readAll());
|
||||
ASSERT_TRUE(f.close());
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user