draconisplusplus/src/os/haiku/package.cpp
2025-05-04 15:45:54 -04:00

27 lines
835 B
C++

#ifdef __HAIKU__
// clang-format off
#include "src/core/package.hpp"
#include <os/package/PackageDefs.h> // BPackageKit::BPackageInfoSet
#include <os/package/PackageInfoSet.h> // BPackageKit::BPackageInfo
#include <os/package/PackageRoster.h> // BPackageKit::BPackageRoster
#include "src/util/defs.hpp"
// clang-format on
namespace package {
fn GetPackageCount() -> Result<u64, DracError> {
BPackageKit::BPackageRoster roster;
BPackageKit::BPackageInfoSet packageList;
const status_t status = roster.GetActivePackages(BPackageKit::B_PACKAGE_INSTALLATION_LOCATION_SYSTEM, packageList);
if (status != B_OK)
return Err(DracError(DracErrorCode::ApiUnavailable, "Failed to get active package list"));
return static_cast<u64>(packageList.CountInfos());
}
} // namespace package
#endif // __HAIKU__