From 124dc6225053a9145dcd77f2dead9bf684873e93 Mon Sep 17 00:00:00 2001 From: "Scott E. Graves" Date: Wed, 22 Jan 2025 08:05:35 -0600 Subject: [PATCH] refactor --- .../src/drives/directory_iterator.cpp | 83 ++++++++++--------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/repertory/librepertory/src/drives/directory_iterator.cpp b/repertory/librepertory/src/drives/directory_iterator.cpp index cbea61b8..df97e451 100644 --- a/repertory/librepertory/src/drives/directory_iterator.cpp +++ b/repertory/librepertory/src/drives/directory_iterator.cpp @@ -33,49 +33,50 @@ auto directory_iterator::fill_buffer(const remote::file_offset &offset, -> int { REPERTORY_USES_FUNCTION_NAME(); - if (offset < items_.size()) { - try { - std::string item_name; - struct stat st{}; - struct stat *pst = nullptr; - switch (offset) { - case 0: { - item_name = "."; - } break; - - case 1: { - item_name = ".."; - } break; - - default: { - const auto &item = items_[offset]; - item_name = utils::path::strip_to_file_name(item.api_path); - populate_stat(item.api_path, item.size, item.meta, item.directory, &st); - pst = &st; - } break; - } - -#if FUSE_USE_VERSION >= 30 - if (filler_function(buffer, item_name.data(), pst, - static_cast(offset + 1), - FUSE_FILL_DIR_PLUS) != 0) { -#else // FUSE_USE_VERSION < 30 - if (filler_function(buffer, item_name.data(), pst, - static_cast(offset + 1)) != 0) { -#endif // FUSE_USE_VERSION >= 30 - errno = ENOMEM; - return -1; - } - } catch (const std::exception &e) { - utils::error::raise_error(function_name, e, - "failed to fill fuse directory buffer"); - } - - return 0; + if (offset >= items_.size()) { + errno = 120; + return -1; } - errno = 120; - return -1; + try { + std::string item_name; + struct stat st{}; + struct stat *pst = nullptr; + switch (offset) { + case 0: { + item_name = "."; + } break; + + case 1: { + item_name = ".."; + } break; + + default: { + const auto &item = items_[offset]; + item_name = utils::path::strip_to_file_name(item.api_path); + populate_stat(item.api_path, item.size, item.meta, item.directory, &st); + pst = &st; + } break; + } + +#if FUSE_USE_VERSION >= 30 + if (filler_function(buffer, item_name.data(), pst, + static_cast(offset + 1), + FUSE_FILL_DIR_PLUS) != 0) +#else // FUSE_USE_VERSION < 30 + if (filler_function(buffer, item_name.data(), pst, + static_cast(offset + 1)) != 0) +#endif // FUSE_USE_VERSION >= 30 + { + errno = ENOMEM; + return -1; + } + } catch (const std::exception &e) { + utils::error::raise_error(function_name, e, + "failed to fill fuse directory buffer"); + } + + return 0; } #endif // !defined(_WIN32)