diff --git a/src/jamidht/conversationrepository.cpp b/src/jamidht/conversationrepository.cpp index 72cb3d0389793e7e04a5d7a7eb45f263156def0d..d7778d04b00c92e2188ae8582b8bb3d17a05a4c8 100644 --- a/src/jamidht/conversationrepository.cpp +++ b/src/jamidht/conversationrepository.cpp @@ -495,9 +495,7 @@ initial_commit(GitRepository& repo, return {}; } - auto to_sign_vec = std::vector<uint8_t>(to_sign.ptr, to_sign.ptr + to_sign.size); - auto signed_buf = account->identity().first->sign(to_sign_vec); - std::string signed_str = base64::encode(signed_buf); + std::string signed_str = base64::encode(account->identity().first->sign((const uint8_t*)to_sign.ptr, to_sign.size)); // git commit -S if (git_commit_create_with_signature(&commit_id, @@ -1036,9 +1034,7 @@ ConversationRepository::Impl::checkValidAdd(const std::string& userDevice, return false; } - auto* blob = reinterpret_cast<git_blob*>(blob_invite.get()); - auto invitation = std::string_view(static_cast<const char*>(git_blob_rawcontent(blob)), - git_blob_rawsize(blob)); + auto invitation = as_view(blob_invite); if (!invitation.empty()) { JAMI_ERR("Invitation not empty for commit %s", commitId.c_str()); return false; @@ -1356,7 +1352,7 @@ ConversationRepository::Impl::isValidUserAtCommit(const std::string& userDevice, // Check that /devices/userDevice.crt exists std::string deviceFile = fmt::format("devices/{}.crt", userDevice); auto blob_device = fileAtTree(deviceFile, tree); - if (!fileAtTree(deviceFile, tree)) { + if (!blob_device) { JAMI_ERR("%s announced but not found", deviceFile.c_str()); return false; } @@ -1749,11 +1745,10 @@ ConversationRepository::Impl::mode() const std::string ConversationRepository::Impl::diffStats(const std::string& newId, const std::string& oldId) const { - auto repo = repository(); - if (!repo) - return {}; - if (auto d = diff(repo.get(), newId, oldId)) - return diffStats(d); + if (auto repo = repository()) { + if (auto d = diff(repo.get(), newId, oldId)) + return diffStats(d); + } return {}; } @@ -2924,12 +2919,12 @@ ConversationRepository::diffStats(const std::string& newId, const std::string& o } std::vector<std::string> -ConversationRepository::changedFiles(const std::string_view& diffStats) +ConversationRepository::changedFiles(std::string_view diffStats) { - std::string line; + static const std::regex re(" +\\| +[0-9]+.*"); std::vector<std::string> changedFiles; - for (auto line : split_string(diffStats, '\n')) { - std::regex re(" +\\| +[0-9]+.*"); + std::string_view line; + while (jami::getline(diffStats, line)) { std::svmatch match; if (!std::regex_search(line, match, re) && match.size() == 0) continue; @@ -2945,7 +2940,7 @@ ConversationRepository::join() auto repo = pimpl_->repository(); if (!repo) return {}; - std::string repoPath = git_repository_workdir(repo.get()); + std::string_view repoPath = git_repository_workdir(repo.get()); auto account = pimpl_->account_.lock(); if (!account) return {}; diff --git a/src/jamidht/conversationrepository.h b/src/jamidht/conversationrepository.h index f085287ee2248fd9303440602ce0f3e8adb86479..5c193366d770f80fc476c0a4ae817ed32d9951b3 100644 --- a/src/jamidht/conversationrepository.h +++ b/src/jamidht/conversationrepository.h @@ -234,7 +234,7 @@ public: * @param diffStats The stats to analyze * @return get the changed files from a git diff */ - static std::vector<std::string> changedFiles(const std::string_view& diffStats); + static std::vector<std::string> changedFiles(std::string_view diffStats); /** * Join a repository