#ifdef __serenity__ // clang-format off #include "src/core/package.hpp" #include #include #include "src/util/defs.hpp" #include "src/util/error.hpp" #include "src/util/types.hpp" // clang-format on using util::error::DracError, util::error::DracErrorCode; using util::types::u64, util::types::String, util::types::Result, util::types::Err; namespace { fn CountUniquePackages(const String& dbPath) -> Result { std::ifstream dbFile(dbPath); if (!dbFile.is_open()) return Err(DracError(DracErrorCode::NotFound, std::format("Failed to open file: {}", dbPath))); std::unordered_set uniquePackages; String line; while (std::getline(dbFile, line)) if (line.starts_with("manual ") || line.starts_with("auto ")) uniquePackages.insert(line); return uniquePackages.size(); } } // namespace namespace package { fn GetSerenityCount() -> Result { return CountUniquePackages("/usr/Ports/installed.db"); } } // namespace package #endif // __serenity__