diff --git a/CMakeLists.txt b/CMakeLists.txt index 5a86ec1c..fa56d4f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,7 +166,7 @@ endif() # Keeping the name XXD for now, as otherwise this will result in much larger refactoring # But everywhere, XXD = base64-encode set(XXD_EXECUTABLE ${PROJECT_BINARY_DIR}/utils/base64-encode) -add_subdirectory(cpp/src/base64-encode ${CMAKE_BINARY_DIR}/utils/base64-encode) +add_subdirectory(cpp/src/base64-encode) add_dependencies(kim-api base64-encode) install(TARGETS base64-encode RUNTIME DESTINATION ${CMAKE_INSTALL_RELOC_BINDIR}) diff --git a/cmake/items-macros.cmake.in b/cmake/items-macros.cmake.in index 3ccd08db..41240961 100644 --- a/cmake/items-macros.cmake.in +++ b/cmake/items-macros.cmake.in @@ -503,9 +503,9 @@ endmacro() # function(_add_custom_command_blob_to_cpp _dirin _filein _fileout) include(FindPackageMessage) - find_program(XXD_EXECUTABLE "kim-base64-encode") + find_program(XXD_EXECUTABLE "base64-encode") if(XXD_EXECUTABLE) - find_package_message(xxd "Found kim-base64-encode: (${XXD_EXECUTABLE})" "found") + find_package_message(xxd "Found base64-encode: (${XXD_EXECUTABLE})" "found") string(MAKE_C_IDENTIFIER ${_filein} _cfilein) set(_edit_xxd_output "${CMAKE_CURRENT_BINARY_DIR}/EditXXDOutput.cmake") @@ -522,7 +522,7 @@ function(_add_custom_command_blob_to_cpp _dirin _filein _fileout) ) endif() add_custom_command(OUTPUT ${_fileout} - COMMAND ${XXD_EXECUTABLE} "${_filein}" "${_fileout}" + COMMAND ${XXD_EXECUTABLE} -i "${_filein}" "${_fileout}" COMMAND ${CMAKE_COMMAND} "-Dvarname=${_cfilein}" "-Dfilein=${_filein}" "-Dfileout=${_fileout}" -P "${_edit_xxd_output}" DEPENDS "${_dirin}/${_filein}" "${_edit_xxd_output}" WORKING_DIRECTORY "${_dirin}" @@ -533,7 +533,7 @@ function(_add_custom_command_blob_to_cpp _dirin _filein _fileout) # No backup yet # Possible Solutions: 1) CMAKE only implementation of base64 encoding? # 2) use system base64/openssl binaries? - message(FATAL_ERROR "Missing kim-base64-encode: Please check the KIM-API installation.") + message(FATAL_ERROR "Missing base64-encode: Please check the KIM-API installation.") # find_package_message(xxd "Missing xxd: Falling back to less efficient cmake implementation." "missing") # string(MAKE_C_IDENTIFIER ${_filein} _cfilein) diff --git a/cpp/src/KIM_SharedLibrary.cpp b/cpp/src/KIM_SharedLibrary.cpp index 3eafa7c6..76770f29 100644 --- a/cpp/src/KIM_SharedLibrary.cpp +++ b/cpp/src/KIM_SharedLibrary.cpp @@ -651,9 +651,6 @@ int SharedLibrary::WriteParameterFileDirectory() fl.open(specificationFilePathName.string().c_str(), std::ifstream::out | std::ifstream::binary); - int usable_chars - = static_cast(len); // unsigned int to signed to avoid underflow - std::vector binary_line; binary_line.reserve(base64::decoded_size(len)); std::pair char_out_and_char_in diff --git a/cpp/src/base64-encode/CMakeLists.txt b/cpp/src/base64-encode/CMakeLists.txt index 679d09d2..6c3d6611 100644 --- a/cpp/src/base64-encode/CMakeLists.txt +++ b/cpp/src/base64-encode/CMakeLists.txt @@ -13,6 +13,6 @@ add_executable(${PROJECT_NAME} ${SOURCE_FILES}) set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/utils -) + ) install(TARGETS ${PROJECT_NAME} DESTINATION bin) diff --git a/cpp/src/base64-encode/base64-encode.cpp b/cpp/src/base64-encode/base64-encode.cpp index 11d6230e..1f05822f 100644 --- a/cpp/src/base64-encode/base64-encode.cpp +++ b/cpp/src/base64-encode/base64-encode.cpp @@ -38,8 +38,7 @@ void WriteEncodedFile(std::string & fileName, std::string & outputFileName) = 0; // current io positions, always < base64::MAX_BASE64_WIDTH unsigned int n_base64_char; // total base64 char obtained char rawBuffer[base64::IO_CHUNK]; // buffer to store raw io data - char encodedBuffer[base64::encoded_size( - base64::IO_CHUNK)]; // buffer for converted data + char encodedBuffer[4 * ((base64::IO_CHUNK + 2) / 3)]; // buffer for converted data // setup fine names and pointers std::string xxdFormatFileName = fileName; diff --git a/cpp/src/base64-encode/base64.hpp b/cpp/src/base64-encode/base64.hpp index f6cffd94..0ba59906 100644 --- a/cpp/src/base64-encode/base64.hpp +++ b/cpp/src/base64-encode/base64.hpp @@ -15,7 +15,7 @@ namespace base64 /// /// \param[in] n Size of char string /// \return max size of encoded string generated from n chars -inline std::size_t const encoded_size(std::size_t n) +inline std::size_t encoded_size(std::size_t n) { return 4 * ((n + 2) / 3); } @@ -24,7 +24,7 @@ inline std::size_t const encoded_size(std::size_t n) /// /// \param[in] n Size of base64 string /// \return size of char string form n length base64 string -inline std::size_t const decoded_size(std::size_t n) +inline std::size_t decoded_size(std::size_t n) { return n / 4 * 3; // requires n&3==0, smaller }