diff --git a/src/bin/package/PackageInfoPrinter.h b/src/bin/package/PackageInfoPrinter.h index 7284312cb6..8357d90fd6 100644 --- a/src/bin/package/PackageInfoPrinter.h +++ b/src/bin/package/PackageInfoPrinter.h @@ -212,7 +212,9 @@ public: break; default: - return false; + printf("\tunknown or future attribute: " + "BPackageInfoAttributeID #%d\n", value.attributeID); + return true; } return true; diff --git a/src/kits/package/PackageInfoContentHandler.cpp b/src/kits/package/PackageInfoContentHandler.cpp index 0e4ad1d5d1..80c552d587 100644 --- a/src/kits/package/PackageInfoContentHandler.cpp +++ b/src/kits/package/PackageInfoContentHandler.cpp @@ -155,7 +155,7 @@ BPackageInfoContentHandler::HandlePackageAttribute( "Invalid package attribute section: unexpected package " "attribute id %d encountered\n", value.attributeID); } - return B_BAD_DATA; + return B_NOT_SUPPORTED; // Could be a future attribute we can skip. } return B_OK; diff --git a/src/kits/package/hpkg/ReaderImplBase.cpp b/src/kits/package/hpkg/ReaderImplBase.cpp index 612e132134..b0a647feb8 100644 --- a/src/kits/package/hpkg/ReaderImplBase.cpp +++ b/src/kits/package/hpkg/ReaderImplBase.cpp @@ -139,6 +139,8 @@ ReaderImplBase::PackageInfoAttributeHandlerBase::NotifyDone( { status_t error = context->packageContentHandler->HandlePackageAttribute( fPackageInfoValue); + if (context->ignoreUnknownAttributes && error == B_NOT_SUPPORTED) + error = B_OK; // Safe to skip a future/unknown attribute. fPackageInfoValue.Clear(); return error; } @@ -681,6 +683,8 @@ ReaderImplBase::PackageAttributeHandler::HandleAttribute( if (_handler == NULL) { status_t error = context->packageContentHandler ->HandlePackageAttribute(fPackageInfoValue); + if (context->ignoreUnknownAttributes && error == B_NOT_SUPPORTED) + error = B_OK; // Safe to skip a future/unknown attribute. fPackageInfoValue.Clear(); if (error != B_OK) return error;