From 7bf880a29f6bb965d0326bdc0fb7c7179f8e7ed4 Mon Sep 17 00:00:00 2001 From: Robin Mueller Date: Sat, 15 Apr 2023 22:17:50 +0200 Subject: [PATCH] use gzip directly --- bsp_q7s/core/CoreController.cpp | 29 +++++++++++++++++++++++------ mission/sysDefs.h | 5 +++-- tmtc | 2 +- 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/bsp_q7s/core/CoreController.cpp b/bsp_q7s/core/CoreController.cpp index a2e1d5c4..659e1f97 100644 --- a/bsp_q7s/core/CoreController.cpp +++ b/bsp_q7s/core/CoreController.cpp @@ -248,6 +248,7 @@ ReturnValue_t CoreController::executeAction(ActionId_t actionId, MessageQueueId_ } auto &sourceTgt = parser.destTgtPair(); oss << sourceTgt.sourceName << " " << sourceTgt.targetName; + sif::info << "CoreController: Performing copy command: " << oss.str() << std::endl; int ret = std::system(oss.str().c_str()); if (ret != 0) { return returnvalue::FAILED; @@ -263,6 +264,7 @@ ReturnValue_t CoreController::executeAction(ActionId_t actionId, MessageQueueId_ std::ostringstream oss("mv ", std::ostringstream::ate); auto &sourceTgt = parser.destTgtPair(); oss << sourceTgt.sourceName << " " << sourceTgt.targetName; + sif::info << "CoreController: Performing move command: " << oss.str() << std::endl; int ret = std::system(oss.str().c_str()); if (ret != 0) { return returnvalue::FAILED; @@ -288,6 +290,21 @@ ReturnValue_t CoreController::executeAction(ActionId_t actionId, MessageQueueId_ size_t removeTargetSize = 0; const char *removeTgt = parser.getRemoveTarget(removeTargetSize); oss << " " << removeTgt; + sif::info << "CoreController: Performing remove command: " << oss.str() << std::endl; + int ret = std::system(oss.str().c_str()); + if (ret != 0) { + return returnvalue::FAILED; + } + return EXECUTION_FINISHED; + } + case (MKDIR_HELPER): { + if (size < 1) { + return HasActionsIF::INVALID_PARAMETERS; + } + std::string createdDir = std::string(reinterpret_cast(data), size); + std::ostringstream oss("mkdir ", std::ostringstream::ate); + oss << createdDir; + sif::info << "CoreController: Performing directory creation: " << oss.str() << std::endl; int ret = std::system(oss.str().c_str()); if (ret != 0) { return returnvalue::FAILED; @@ -1000,17 +1017,17 @@ ReturnValue_t CoreController::actionListDirectoryDumpDirectly(ActionId_t actionI return returnvalue::FAILED; } if (parser.compressionOptionSet()) { - std::string compressedName = LIST_DIR_DUMP_WORK_FILE + std::string(".tar.xz"); + std::string compressedName = LIST_DIR_DUMP_WORK_FILE + std::string(".gz"); oss.str(""); - oss << "tar -cJvf /tmp/dir_listing_compressed.tmp " << LIST_DIR_DUMP_WORK_FILE; + oss << "gzip " << LIST_DIR_DUMP_WORK_FILE; ret = std::system(oss.str().c_str()); if (ret != 0) { utility::handleSystemError(result, "CoreController::actionListDirectoryDumpDirectly"); return returnvalue::FAILED; } oss.str(""); - // Overwrite the old work file with the compressed archive. - oss << "mv /tmp/dir_listing_compressed.tmp " << LIST_DIR_DUMP_WORK_FILE; + // Overwrite the work file with the compressed archive. + oss << "mv " << compressedName << " " << LIST_DIR_DUMP_WORK_FILE; ret = std::system(oss.str().c_str()); if (ret != 0) { utility::handleSystemError(result, "CoreController::actionListDirectoryDumpDirectly"); @@ -1085,9 +1102,9 @@ ReturnValue_t CoreController::actionListDirectoryIntoFile(ActionId_t actionId, } if (parser.compressionOptionSet()) { - std::string compressedName = targetFileName + std::string(".tar.xz"); + std::string compressedName = targetFileName + std::string(".gz"); oss.str(""); - oss << "tar -cJvf " << compressedName << " " << targetFileName; + oss << "gzip -c " << compressedName << " > " << targetFileName; sif::info << "Compressing directory listing: " << oss.str() << std::endl; ret = std::system(oss.str().c_str()); if (ret != 0) { diff --git a/mission/sysDefs.h b/mission/sysDefs.h index 3ec3f7e0..cc654e90 100644 --- a/mission/sysDefs.h +++ b/mission/sysDefs.h @@ -63,6 +63,7 @@ static constexpr ActionId_t LIST_DIRECTORY_DUMP_DIRECTLY = 51; static constexpr ActionId_t CP_HELPER = 52; static constexpr ActionId_t MV_HELPER = 53; static constexpr ActionId_t RM_HELPER = 54; +static constexpr ActionId_t MKDIR_HELPER = 55; static constexpr uint8_t SUBSYSTEM_ID = SUBSYSTEM_ID::CORE; @@ -211,7 +212,7 @@ static ReturnValue_t parseDestTargetString(const uint8_t* data, size_t maxLen, return HasActionsIF::INVALID_PARAMETERS; } destTgt.sourceName = reinterpret_cast(data); - size_t remainingLen = maxLen - destTgt.sourceNameSize + 1; + size_t remainingLen = maxLen - destTgt.sourceNameSize - 1; if (remainingLen == 0) { return HasActionsIF::INVALID_PARAMETERS; } @@ -220,7 +221,7 @@ static ReturnValue_t parseDestTargetString(const uint8_t* data, size_t maxLen, if (destTgt.targetNameSize >= remainingLen) { return HasActionsIF::INVALID_PARAMETERS; } - destTgt.targetName = reinterpret_cast(data + destTgt.targetNameSize + 1); + destTgt.targetName = reinterpret_cast(data + destTgt.sourceNameSize + 1); return returnvalue::OK; } diff --git a/tmtc b/tmtc index 37bb164c..77e90328 160000 --- a/tmtc +++ b/tmtc @@ -1 +1 @@ -Subproject commit 37bb164cc461abd51668038e02c5f76db70e7ca6 +Subproject commit 77e90328a1e1ffd0d79bc4c26932ad48adbf2920