From 5d368edbbb13ec451157ab709eb268f1202cf708 Mon Sep 17 00:00:00 2001 From: Gold856 <117957790+Gold856@users.noreply.github.com> Date: Wed, 2 Oct 2024 22:26:10 -0400 Subject: [PATCH] [wpiutil] Fix FileLogger only logging one byte at a time --- wpiutil/src/main/native/cpp/FileLogger.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/wpiutil/src/main/native/cpp/FileLogger.cpp b/wpiutil/src/main/native/cpp/FileLogger.cpp index 6e1435673b4..1fa68a59ac3 100644 --- a/wpiutil/src/main/native/cpp/FileLogger.cpp +++ b/wpiutil/src/main/native/cpp/FileLogger.cpp @@ -10,12 +10,14 @@ #include #endif -#include +#include #include +#include #include #include #include "wpi/StringExtras.h" +#include "wpi/print.h" namespace wpi { FileLogger::FileLogger(std::string_view file, @@ -28,13 +30,14 @@ FileLogger::FileLogger(std::string_view file, m_thread{[=, this] { char buf[4000]; struct inotify_event ev; - int len = 0; lseek(m_fileHandle, 0, SEEK_END); - while ((len = read(m_inotifyHandle, &ev, sizeof(ev))) > 0) { - int bufLen = 0; - if ((bufLen = read(m_fileHandle, buf, sizeof(buf)) > 0)) { + while (read(m_inotifyHandle, &ev, sizeof(ev)) > 0) { + int bufLen = read(m_fileHandle, buf, sizeof(buf)); + while (bufLen > 0) { callback(std::string_view{buf, static_cast(bufLen)}); + bufLen = read(m_fileHandle, buf, sizeof(buf)); } + std::this_thread::sleep_for(std::chrono::milliseconds(100)) } }} #endif