diff --git a/headers/os/package/hpkg/RepositoryContentHandler.h b/headers/os/package/hpkg/RepositoryContentHandler.h index cb2c5f7b32..d2d7e31582 100644 --- a/headers/os/package/hpkg/RepositoryContentHandler.h +++ b/headers/os/package/hpkg/RepositoryContentHandler.h @@ -8,27 +8,22 @@ #include +#include + namespace BPackageKit { -class BPackageInfo; class BRepositoryInfo; namespace BHPKG { -class BRepositoryContentHandler { +class BRepositoryContentHandler : public BPackageContentHandler { public: - virtual ~BRepositoryContentHandler(); - virtual status_t HandleRepositoryInfo( const BRepositoryInfo& info) = 0; - virtual status_t HandlePackage(const BPackageInfo& info) = 0; - virtual status_t HandlePackagesDone() = 0; - - virtual void HandleErrorOccurred() = 0; }; diff --git a/headers/os/package/hpkg/RepositoryReader.h b/headers/os/package/hpkg/RepositoryReader.h index 3464cb5225..f42c077d7d 100644 --- a/headers/os/package/hpkg/RepositoryReader.h +++ b/headers/os/package/hpkg/RepositoryReader.h @@ -20,7 +20,7 @@ namespace BPrivate { using BPrivate::RepositoryReaderImpl; class BErrorOutput; -class BPackageContentHandler; +class BRepositoryContentHandler; class BRepositoryReader { @@ -30,7 +30,7 @@ public: status_t Init(const char* fileName); status_t ParseContent( - BPackageContentHandler* contentHandler); + BRepositoryContentHandler* contentHandler); private: RepositoryReaderImpl* fImpl; diff --git a/headers/private/package/hpkg/RepositoryReaderImpl.h b/headers/private/package/hpkg/RepositoryReaderImpl.h index 013dcf2e2b..5e17a009ab 100644 --- a/headers/private/package/hpkg/RepositoryReaderImpl.h +++ b/headers/private/package/hpkg/RepositoryReaderImpl.h @@ -16,6 +16,9 @@ namespace BPackageKit { namespace BHPKG { +class BRepositoryContentHandler; + + namespace BPrivate { @@ -33,7 +36,7 @@ public: BRepositoryInfo* _repositoryInfo) const; status_t ParseContent( - BPackageContentHandler* contentHandler); + BRepositoryContentHandler* contentHandler); private: struct RootAttributeHandler; diff --git a/src/bin/package_repo/command_list.cpp b/src/bin/package_repo/command_list.cpp index 54ee28a04a..1d91d4b303 100644 --- a/src/bin/package_repo/command_list.cpp +++ b/src/bin/package_repo/command_list.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2011, Oliver Tappe * Distributed under the terms of the MIT License. */ @@ -11,10 +11,9 @@ #include #include -#include #include +#include #include - #include #include @@ -25,7 +24,7 @@ using namespace BPackageKit::BHPKG; using namespace BPackageKit; -struct RepositoryContentListHandler : BPackageContentHandler { +struct RepositoryContentListHandler : BRepositoryContentHandler { RepositoryContentListHandler(bool verbose) : fLevel(0), @@ -195,6 +194,26 @@ struct RepositoryContentListHandler : BPackageContentHandler { return B_OK; } + virtual status_t HandleRepositoryInfo(const BRepositoryInfo& repositoryInfo) + { + printf("repository-info:\n"); + printf("\tname: %s\n", repositoryInfo.Name().String()); + printf("\tsummary: %s\n", repositoryInfo.Summary().String()); + printf("\turl: %s\n", repositoryInfo.OriginalBaseURL().String()); + printf("\tvendor: %s\n", repositoryInfo.Vendor().String()); + printf("\tpriority: %u\n", repositoryInfo.Priority()); + printf("\tarchitecture: %s\n", + BPackageInfo::kArchitectureNames[repositoryInfo.Architecture()]); + const BObjectList licenseNames = repositoryInfo.LicenseNames(); + if (!licenseNames.IsEmpty()) { + printf("\tlicenses:\n"); + for (int i = 0; i < licenseNames.CountItems(); ++i) + printf("\t\t%s\n", licenseNames.ItemAt(i)->String()); + } + + return B_OK; + } + virtual void HandleErrorOccurred() { } diff --git a/src/kits/package/hpkg/RepositoryReader.cpp b/src/kits/package/hpkg/RepositoryReader.cpp index 40a2706ffc..02a964e7b4 100644 --- a/src/kits/package/hpkg/RepositoryReader.cpp +++ b/src/kits/package/hpkg/RepositoryReader.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include @@ -42,7 +42,7 @@ BRepositoryReader::Init(const char* fileName) status_t -BRepositoryReader::ParseContent(BPackageContentHandler* contentHandler) +BRepositoryReader::ParseContent(BRepositoryContentHandler* contentHandler) { if (fImpl == NULL) return B_NO_INIT; diff --git a/src/kits/package/hpkg/RepositoryReaderImpl.cpp b/src/kits/package/hpkg/RepositoryReaderImpl.cpp index b20266cb01..253faffbcb 100644 --- a/src/kits/package/hpkg/RepositoryReaderImpl.cpp +++ b/src/kits/package/hpkg/RepositoryReaderImpl.cpp @@ -18,9 +18,9 @@ #include #include -#include - #include +#include +#include namespace BPackageKit { @@ -252,11 +252,14 @@ RepositoryReaderImpl::GetRepositoryInfo(BRepositoryInfo* _repositoryInfo) const status_t -RepositoryReaderImpl::ParseContent(BPackageContentHandler* contentHandler) +RepositoryReaderImpl::ParseContent(BRepositoryContentHandler* contentHandler) { AttributeHandlerContext context(ErrorOutput(), contentHandler); PackageAttributeHandler rootAttributeHandler; - return ParsePackageAttributesSection(&context, &rootAttributeHandler); + status_t result = contentHandler->HandleRepositoryInfo(fRepositoryInfo); + if (result == B_OK) + result = ParsePackageAttributesSection(&context, &rootAttributeHandler); + return result; }