#include "dbus_utility.hpp"

#include <filesystem>  // NOLINT
#include <string>

#include "boost/system/error_code.hpp"  // IWYU pragma: keep  // NOLINT

namespace dbus {

namespace utility {

bool getNthStringFromPath(const std::string& path, int index,
                          std::string& result) {
  if (index < 0) {
    return false;
  }

  std::filesystem::path p1(path);
  int count = -1;
  for (auto const& element : p1) { // NOLINT
    if (element.has_filename()) {
      ++count;
      if (count == index) {
        result = element.stem().string();
        break;
      }
    }
  }
  return count >= index;
}

}  // namespace utility
}  // namespace dbus
