From 7d6870610a7a89a5407d165c41a4b6cb90708e8d Mon Sep 17 00:00:00 2001
From: Lasse Tjernaes Wardenaer <lasse.tjernaes.wardenaer@cern.ch>
Date: Thu, 8 Dec 2022 09:24:51 +0100
Subject: [PATCH] Resolve "Remove stoi and switch to function that supports
 enough bits"

---
 ReleaseNotes.md                                           | 8 ++++++++
 .../change_storage_class/ChangeStorageClass.cpp           | 2 +-
 cmdline/standalone_cli_tools/common/CatalogueFetch.cpp    | 3 ++-
 .../restore_files/RestoreFilesCmd.cpp                     | 2 +-
 4 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 4428b7a35d..6961f5a77c 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,3 +1,11 @@
+# v.NEXT
+
+## Summary
+### Features
+
+### Bug Fixes
+- cta/CTA#234 - Replace stoi with toUint64 in standalone cli tool
+
 # v4.8.2-1
 
 ## Summary
diff --git a/cmdline/standalone_cli_tools/change_storage_class/ChangeStorageClass.cpp b/cmdline/standalone_cli_tools/change_storage_class/ChangeStorageClass.cpp
index f57d441ef8..a8ff83a083 100644
--- a/cmdline/standalone_cli_tools/change_storage_class/ChangeStorageClass.cpp
+++ b/cmdline/standalone_cli_tools/change_storage_class/ChangeStorageClass.cpp
@@ -128,7 +128,7 @@ void ChangeStorageClass::updateStorageClassInEosNamespace() {
     const auto [diskInstance, diskFileId] = CatalogueFetch::getInstanceAndFid(archiveFileId, m_serviceProviderPtr, m_log);
 
     // No files in flight should change storage class
-    const auto md_response = m_endpointMapPtr->getMD(diskInstance, ::eos::rpc::FILE, std::stoi(diskFileId), "", false);
+    const auto md_response = m_endpointMapPtr->getMD(diskInstance, ::eos::rpc::FILE, cta::utils::toUint64(diskFileId), "", false);
     if (fileInFlight(md_response.fmd().locations())) {
       m_archiveIdsNotUpdatedInEos.push_back(archiveFileId);
       std::list<cta::log::Param> params;
diff --git a/cmdline/standalone_cli_tools/common/CatalogueFetch.cpp b/cmdline/standalone_cli_tools/common/CatalogueFetch.cpp
index dca8689878..fa8b39c85d 100644
--- a/cmdline/standalone_cli_tools/common/CatalogueFetch.cpp
+++ b/cmdline/standalone_cli_tools/common/CatalogueFetch.cpp
@@ -26,6 +26,7 @@
 #include "cmdline/standalone_cli_tools/common/CatalogueFetch.hpp"
 #include "common/exception/UserError.hpp"
 #include "common/log/StdoutLogger.hpp"
+#include "common/utils/utils.hpp"
 #include "cta_frontend.pb.h"                               //!< Auto-generated message types from .proto file
 
 #include "version.h"
@@ -119,7 +120,7 @@ std::tuple<std::string,std::string> CatalogueFetch::getInstanceAndFid(const std:
   admincmd->set_subcmd(cta::admin::AdminCmd::SUBCMD_LS);
   auto new_opt = admincmd->add_option_uint64();
   new_opt->set_key(cta::admin::OptionUInt64::ARCHIVE_FILE_ID);
-  new_opt->set_value(std::stoi(archiveFileId));
+  new_opt->set_value(cta::utils::toUint64(archiveFileId));
 
   handleResponse(request, serviceProviderPtr);
 
diff --git a/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp b/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp
index bd8e3bf0cd..d668d63d89 100644
--- a/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp
+++ b/cmdline/standalone_cli_tools/restore_files/RestoreFilesCmd.cpp
@@ -237,7 +237,7 @@ void RestoreFilesCmd::listDeletedFilesCta() const {
     auto key = cta::admin::OptionUInt64::ARCHIVE_FILE_ID;
     auto new_opt = admincmd.add_option_uint64();
     new_opt->set_key(key);
-    new_opt->set_value(std::stoi(m_archiveFileId.value()));
+    new_opt->set_value(cta::utils::toUint64(m_archiveFileId.value()));
   }
   if (m_copyNumber) {
     params.push_back(cta::log::Param("copyNb", m_copyNumber.value()));
-- 
GitLab