From 116852fecb4dc982b2f3581a9f65ff290ae79e3f Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 28 Jun 2011 18:16:18 +0200 Subject: [PATCH] Support package info [source] URL attributes --- src/bin/package/command_list.cpp | 8 ++++++++ src/bin/package_repo/command_list.cpp | 10 ++++++++++ src/kits/package/hpkg/ReaderImplBase.cpp | 8 ++++++++ src/kits/package/hpkg/WriterImplBase.cpp | 22 ++++++++++++++++++++++ 4 files changed, 48 insertions(+) diff --git a/src/bin/package/command_list.cpp b/src/bin/package/command_list.cpp index 82a5ee53ef..efcf33685e 100644 --- a/src/bin/package/command_list.cpp +++ b/src/bin/package/command_list.cpp @@ -164,6 +164,14 @@ struct PackageContentListHandler : BPackageContentHandler { printf("\tlicense: %s\n", value.string); break; + case B_PACKAGE_INFO_URLS: + printf("\tURL: %s\n", value.string); + break; + + case B_PACKAGE_INFO_SOURCE_URLS: + printf("\tsource URL: %s\n", value.string); + break; + case B_PACKAGE_INFO_PROVIDES: printf("\tprovides: %s", value.resolvable.name); if (value.resolvable.haveVersion) { diff --git a/src/bin/package_repo/command_list.cpp b/src/bin/package_repo/command_list.cpp index ad290d2065..c1ff03b683 100644 --- a/src/bin/package_repo/command_list.cpp +++ b/src/bin/package_repo/command_list.cpp @@ -115,6 +115,16 @@ struct RepositoryContentListHandler : BRepositoryContentHandler { printf("\tlicense: %s\n", value.string); break; + case B_PACKAGE_INFO_URLS: + if (fVerbose) + printf("\tURL: %s\n", value.string); + break; + + case B_PACKAGE_INFO_SOURCE_URLS: + if (fVerbose) + printf("\tsource URL: %s\n", value.string); + break; + case B_PACKAGE_INFO_PROVIDES: if (!fVerbose) break; diff --git a/src/kits/package/hpkg/ReaderImplBase.cpp b/src/kits/package/hpkg/ReaderImplBase.cpp index ab3f7b461a..44706b9bf7 100644 --- a/src/kits/package/hpkg/ReaderImplBase.cpp +++ b/src/kits/package/hpkg/ReaderImplBase.cpp @@ -376,6 +376,14 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute( value.string); break; + case B_HPKG_ATTRIBUTE_ID_PACKAGE_URL: + fPackageInfoValue.SetTo(B_PACKAGE_INFO_URLS, value.string); + break; + + case B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL: + fPackageInfoValue.SetTo(B_PACKAGE_INFO_SOURCE_URLS, value.string); + break; + case B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES: fPackageInfoValue.resolvable.name = value.string; fPackageInfoValue.attributeID = B_PACKAGE_INFO_PROVIDES; diff --git a/src/kits/package/hpkg/WriterImplBase.cpp b/src/kits/package/hpkg/WriterImplBase.cpp index f90f05ee57..d2b43f3025 100644 --- a/src/kits/package/hpkg/WriterImplBase.cpp +++ b/src/kits/package/hpkg/WriterImplBase.cpp @@ -431,6 +431,28 @@ WriterImplBase::RegisterPackageInfo(PackageAttributeList& attributeList, attributeList.Add(license); } + // URL list + const BObjectList& urlList = packageInfo.URLList(); + for (int i = 0; i < urlList.CountItems(); ++i) { + PackageAttribute* url = new PackageAttribute( + B_HPKG_ATTRIBUTE_ID_PACKAGE_URL, B_HPKG_ATTRIBUTE_TYPE_STRING, + B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE); + url->string = fPackageStringCache.Get(urlList.ItemAt(i)->String()); + attributeList.Add(url); + } + + // source URL list + const BObjectList& sourceURLList = packageInfo.SourceURLList(); + for (int i = 0; i < sourceURLList.CountItems(); ++i) { + PackageAttribute* url = new PackageAttribute( + B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL, + B_HPKG_ATTRIBUTE_TYPE_STRING, + B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE); + url->string = fPackageStringCache.Get( + sourceURLList.ItemAt(i)->String()); + attributeList.Add(url); + } + // provides list const BObjectList& providesList = packageInfo.ProvidesList();