From 5cc923de33a126a8b37a9177d844501ffb0aee80 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Thu, 30 Nov 2023 23:13:51 -0800 Subject: [PATCH] [wpilib] DataLogManager: Use logs subdirectory on USB drives (#5975) --- ntcoreffi/src/main/native/cpp/DataLogManager.cpp | 6 +++--- wpilibc/src/main/native/cpp/DataLogManager.cpp | 6 +++--- .../src/main/java/edu/wpi/first/wpilibj/DataLogManager.java | 5 ++++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/ntcoreffi/src/main/native/cpp/DataLogManager.cpp b/ntcoreffi/src/main/native/cpp/DataLogManager.cpp index d007f4f064..bd200aea17 100644 --- a/ntcoreffi/src/main/native/cpp/DataLogManager.cpp +++ b/ntcoreffi/src/main/native/cpp/DataLogManager.cpp @@ -217,12 +217,12 @@ static std::string MakeLogDir(std::string_view dir) { } #ifdef __FRC_ROBORIO__ // prefer a mounted USB drive if one is accessible - constexpr std::string_view usbDir{"/u"}; std::error_code ec; - auto s = fs::status(usbDir, ec); + auto s = fs::status("/u", ec); if (!ec && fs::is_directory(s) && (s.permissions() & fs::perms::others_write) != fs::perms::none) { - return std::string{usbDir}; + fs::create_directory("/u/logs", ec); + return "/u/logs"; } if (RobotBase::GetRuntimeType() == kRoboRIO) { FRC_ReportError(warn::Warning, diff --git a/wpilibc/src/main/native/cpp/DataLogManager.cpp b/wpilibc/src/main/native/cpp/DataLogManager.cpp index 156b4054cc..d0e627359b 100644 --- a/wpilibc/src/main/native/cpp/DataLogManager.cpp +++ b/wpilibc/src/main/native/cpp/DataLogManager.cpp @@ -64,12 +64,12 @@ static std::string MakeLogDir(std::string_view dir) { } #ifdef __FRC_ROBORIO__ // prefer a mounted USB drive if one is accessible - constexpr std::string_view usbDir{"/u"}; std::error_code ec; - auto s = fs::status(usbDir, ec); + auto s = fs::status("/u", ec); if (!ec && fs::is_directory(s) && (s.permissions() & fs::perms::others_write) != fs::perms::none) { - return std::string{usbDir}; + fs::create_directory("/u/logs", ec); + return "/u/logs"; } if (RobotBase::GetRuntimeType() == kRoboRIO) { FRC_ReportError(warn::Warning, diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java index d588d4049a..4d56d994cc 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DataLogManager.java @@ -214,7 +214,10 @@ public final class DataLogManager { // prefer a mounted USB drive if one is accessible Path usbDir = Paths.get("/u").toRealPath(); if (Files.isWritable(usbDir)) { - return usbDir.toString(); + if (!new File("/u/logs").mkdir()) { + // ignored + } + return "/u/logs"; } } catch (IOException ex) { // ignored