aboutsummaryrefslogtreecommitdiff
path: root/zencore
diff options
context:
space:
mode:
authorMartin Ridgers <[email protected]>2021-10-11 10:32:13 +0200
committerMartin Ridgers <[email protected]>2021-10-11 10:32:13 +0200
commit735b478c1425cc9a1e407bf917dc8daa4ab16b11 (patch)
tree6e253ee94a5db9244756571084f3f07472e4e2b3 /zencore
parentFixed undefined mimalloc symbols (diff)
parentiobuffer: Changed MakeFromTemporaryFile so it accepts a path instead of a cha... (diff)
downloadzen-735b478c1425cc9a1e407bf917dc8daa4ab16b11.tar.xz
zen-735b478c1425cc9a1e407bf917dc8daa4ab16b11.zip
Merged main
Diffstat (limited to 'zencore')
-rw-r--r--zencore/filesystem.cpp4
-rw-r--r--zencore/include/zencore/iobuffer.h2
-rw-r--r--zencore/include/zencore/testutils.h1
-rw-r--r--zencore/iobuffer.cpp6
-rw-r--r--zencore/string.cpp12
-rw-r--r--zencore/testutils.cpp7
6 files changed, 25 insertions, 7 deletions
diff --git a/zencore/filesystem.cpp b/zencore/filesystem.cpp
index 9936f30ec..c3edf656e 100644
--- a/zencore/filesystem.cpp
+++ b/zencore/filesystem.cpp
@@ -842,9 +842,9 @@ TEST_CASE("filesystem")
{
using namespace std::filesystem;
- // GetExePath
+ // GetExePath -- this is not a great test as it's so dependent on where the this code gets linked in
path BinPath = GetRunningExecutablePath();
- const bool ExpectedExe = BinPath.stem() == "zencore-test" || BinPath.stem() == "zenserver-test";
+ const bool ExpectedExe = BinPath.stem() == "zencore-test" || BinPath.stem() == "zenserver-test" || BinPath.stem() == "zenstore-test";
CHECK(ExpectedExe);
CHECK(is_regular_file(BinPath));
diff --git a/zencore/include/zencore/iobuffer.h b/zencore/include/zencore/iobuffer.h
index 110cd7d9d..5fbeaeaeb 100644
--- a/zencore/include/zencore/iobuffer.h
+++ b/zencore/include/zencore/iobuffer.h
@@ -372,7 +372,7 @@ class IoBufferBuilder
public:
ZENCORE_API static IoBuffer MakeFromFile(const path_char_t* FileName, uint64_t Offset = 0, uint64_t Size = ~0ull);
- ZENCORE_API static IoBuffer MakeFromTemporaryFile(const path_char_t* FileName);
+ ZENCORE_API static IoBuffer MakeFromTemporaryFile(const std::filesystem::path& FileName);
ZENCORE_API static IoBuffer MakeFromFileHandle(void* FileHandle, uint64_t Offset = 0, uint64_t Size = ~0ull);
inline static IoBuffer MakeCloneFromMemory(const void* Ptr, size_t Sz) { return IoBuffer(IoBuffer::Clone, Ptr, Sz); }
};
diff --git a/zencore/include/zencore/testutils.h b/zencore/include/zencore/testutils.h
index 72d985d5c..04648c6de 100644
--- a/zencore/include/zencore/testutils.h
+++ b/zencore/include/zencore/testutils.h
@@ -11,6 +11,7 @@ std::filesystem::path CreateTemporaryDirectory();
class ScopedTemporaryDirectory
{
public:
+ explicit ScopedTemporaryDirectory(std::filesystem::path Directory);
ScopedTemporaryDirectory();
~ScopedTemporaryDirectory();
diff --git a/zencore/iobuffer.cpp b/zencore/iobuffer.cpp
index 04685defc..922c14f83 100644
--- a/zencore/iobuffer.cpp
+++ b/zencore/iobuffer.cpp
@@ -437,7 +437,7 @@ IoBufferBuilder::MakeFromFile(const path_char_t* FileName, uint64_t Offset, uint
}
IoBuffer
-IoBufferBuilder::MakeFromTemporaryFile(const path_char_t* FileName)
+IoBufferBuilder::MakeFromTemporaryFile(const std::filesystem::path& FileName)
{
uint64_t FileSize;
void* Handle;
@@ -449,7 +449,7 @@ IoBufferBuilder::MakeFromTemporaryFile(const path_char_t* FileName)
// when a file has been written to a staging directory, and is going
// to be moved in place
- HRESULT hRes = DataFile.Create(FileName, GENERIC_READ | DELETE, FILE_SHARE_READ | FILE_SHARE_DELETE, OPEN_EXISTING);
+ HRESULT hRes = DataFile.Create(FileName.native().c_str(), GENERIC_READ | DELETE, FILE_SHARE_READ | FILE_SHARE_DELETE, OPEN_EXISTING);
if (FAILED(hRes))
{
@@ -460,7 +460,7 @@ IoBufferBuilder::MakeFromTemporaryFile(const path_char_t* FileName)
Handle = DataFile.Detach();
# else
- int Fd = open(FileName, O_RDONLY);
+ int Fd = open(FileName.native().c_str(), O_RDONLY);
if (Fd < 0)
{
return {};
diff --git a/zencore/string.cpp b/zencore/string.cpp
index 4bf0378b2..efa84ea73 100644
--- a/zencore/string.cpp
+++ b/zencore/string.cpp
@@ -341,7 +341,17 @@ NiceBytesToBuffer(uint64_t Num, std::span<char> Buffer)
size_t
NiceByteRateToBuffer(uint64_t Num, uint64_t ElapsedMs, std::span<char> Buffer)
{
- size_t n = NiceNumGeneral(Num * 1000 / ElapsedMs, Buffer, kNicenumBytes);
+ size_t n = 0;
+
+ if (ElapsedMs)
+ {
+ n = NiceNumGeneral(Num * 1000 / ElapsedMs, Buffer, kNicenumBytes);
+ }
+ else
+ {
+ Buffer[n++] = '0';
+ Buffer[n++] = 'B';
+ }
Buffer[n++] = '/';
Buffer[n++] = 's';
diff --git a/zencore/testutils.cpp b/zencore/testutils.cpp
index 78957cbcf..dbc3ab5af 100644
--- a/zencore/testutils.cpp
+++ b/zencore/testutils.cpp
@@ -26,6 +26,13 @@ ScopedTemporaryDirectory::ScopedTemporaryDirectory() : m_RootPath(CreateTemporar
{
}
+ScopedTemporaryDirectory::ScopedTemporaryDirectory(std::filesystem::path Directory) : m_RootPath(Directory)
+{
+ std::error_code Ec;
+ std::filesystem::remove_all(Directory, Ec);
+ std::filesystem::create_directories(Directory);
+}
+
ScopedTemporaryDirectory::~ScopedTemporaryDirectory()
{
std::error_code Ec;