diff --git a/src/add-ons/kernel/file_systems/packagefs/Jamfile b/src/add-ons/kernel/file_systems/packagefs/Jamfile index b6153ded35..517eb87ce1 100644 --- a/src/add-ons/kernel/file_systems/packagefs/Jamfile +++ b/src/add-ons/kernel/file_systems/packagefs/Jamfile @@ -40,7 +40,6 @@ HAIKU_PACKAGE_FS_SOURCES = Dependency.cpp Directory.cpp EmptyAttributeDirectoryCookie.cpp - GlobalFactory.cpp Index.cpp IndexedAttributeOwner.cpp kernel_interface.cpp @@ -103,17 +102,6 @@ HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES = ReaderImplBase.cpp ; -HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES_V1 = - HPKGDefsV1.cpp - PackageContentHandlerV1.cpp - PackageDataV1.cpp - PackageDataReaderV1.cpp - PackageEntryV1.cpp - PackageEntryAttributeV1.cpp - PackageReaderImplV1.cpp - ReaderImplBaseV1.cpp -; - Includes [ FGristFiles ZlibCompressionAlgorithm.cpp ] : [ BuildFeatureAttribute zlib : headers ] ; @@ -136,7 +124,6 @@ KernelAddon packagefs $(HAIKU_PACKAGE_FS_SOURCES) $(HAIKU_PACKAGE_FS_SHARED_SOURCES) $(HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES) - $(HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES_V1) $(libSharedSources) $(storageKitSources) $(supportKitSources) @@ -149,8 +136,6 @@ SEARCH on [ FGristFiles $(HAIKU_PACKAGE_FS_SHARED_SOURCES) ] += [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems shared ] ; SEARCH on [ FGristFiles $(HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES) ] += [ FDirName $(HAIKU_TOP) src kits package hpkg ] ; -SEARCH on [ FGristFiles $(HAIKU_PACKAGE_FS_PACKAGE_READER_SOURCES_V1) ] - += [ FDirName $(HAIKU_TOP) src kits package hpkg v1 ] ; SEARCH on [ FGristFiles $(libSharedSources) ] += [ FDirName $(HAIKU_TOP) src build libshared ] ; SEARCH on [ FGristFiles $(storageKitSources) ] diff --git a/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp index 00f19246c7..9798ffb2c2 100644 --- a/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/kernel_interface.cpp @@ -21,7 +21,6 @@ #include "AttributeDirectoryCookie.h" #include "DebugSupport.h" #include "Directory.h" -#include "GlobalFactory.h" #include "Query.h" #include "PackageFSRoot.h" #include "StringConstants.h" @@ -1076,19 +1075,9 @@ packagefs_std_ops(int32 op, ...) return error; } - error = GlobalFactory::CreateDefault(); - if (error != B_OK) { - ERROR("Failed to init GlobalFactory\n"); - StringConstants::Cleanup(); - StringPool::Cleanup(); - exit_debugging(); - return error; - } - error = PackageFSRoot::GlobalInit(); if (error != B_OK) { ERROR("Failed to init PackageFSRoot\n"); - GlobalFactory::DeleteDefault(); StringConstants::Cleanup(); StringPool::Cleanup(); exit_debugging(); @@ -1102,7 +1091,6 @@ packagefs_std_ops(int32 op, ...) { PRINT("package_std_ops(): B_MODULE_UNINIT\n"); PackageFSRoot::GlobalUninit(); - GlobalFactory::DeleteDefault(); StringConstants::Cleanup(); StringPool::Cleanup(); exit_debugging(); diff --git a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp index e7488d696f..c7096e00aa 100644 --- a/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/nodes/UnpackingAttributeCookie.cpp @@ -18,11 +18,11 @@ #include "AttributeIndexer.h" #include "AutoPackageAttributes.h" #include "DebugSupport.h" -#include "GlobalFactory.h" #include "Package.h" #include "PackageNode.h" +using BPackageKit::BHPKG::BDataReader; using BPackageKit::BHPKG::BBufferDataReader; using BPackageKit::BHPKG::BFDDataReader; diff --git a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp b/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp deleted file mode 100644 index f7d44141f5..0000000000 --- a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.cpp +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2009-2013, Ingo Weinhold, ingo_weinhold@gmx.de. - * Distributed under the terms of the MIT License. - */ - - -#include "GlobalFactory.h" - -#include - -#include - -#include "PackageData.h" - - -static const uint32 kMaxCachedBuffers = 32; - -/*static*/ GlobalFactory* GlobalFactory::sDefaultInstance = NULL; - - -GlobalFactory::GlobalFactory() - : - fBufferPool(BPackageKit::BHPKG::V1::B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB, - kMaxCachedBuffers), - fPackageDataReaderFactory(&fBufferPool) -{ -} - - -GlobalFactory::~GlobalFactory() -{ -} - - -/*static*/ status_t -GlobalFactory::CreateDefault() -{ - if (sDefaultInstance != NULL) - return B_OK; - - GlobalFactory* factory = new(std::nothrow) GlobalFactory; - if (factory == NULL) - return B_NO_MEMORY; - - status_t error = factory->_Init(); - if (error != B_OK) { - delete factory; - return error; - } - - sDefaultInstance = factory; - return B_OK; -} - - -/*static*/ void -GlobalFactory::DeleteDefault() -{ - delete sDefaultInstance; - sDefaultInstance = NULL; -} - - -/*static*/ GlobalFactory* -GlobalFactory::Default() -{ - return sDefaultInstance; -} - - -status_t -GlobalFactory::CreatePackageDataReader(BDataReader* dataReader, - const PackageDataV1& data, BAbstractBufferedDataReader*& _reader) -{ - return fPackageDataReaderFactory.CreatePackageDataReader(dataReader, data, - _reader); -} - - -status_t -GlobalFactory::_Init() -{ - status_t error = fBufferPool.Init(); - if (error != B_OK) - return error; - - return B_OK; -} diff --git a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h b/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h deleted file mode 100644 index 46f75da820..0000000000 --- a/src/add-ons/kernel/file_systems/packagefs/package/GlobalFactory.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2009-2013, Ingo Weinhold, ingo_weinhold@gmx.de. - * Distributed under the terms of the MIT License. - */ -#ifndef GLOBAL_FACTORY_H -#define GLOBAL_FACTORY_H - - -#include - -#include "BlockBufferPoolKernel.h" -#include "PackageData.h" - - -using BPackageKit::BHPKG::BBufferPool; -using BPackageKit::BHPKG::BDataReader; -using BPackageKit::BHPKG::BPackageData; -using BPackageKit::BHPKG::BAbstractBufferedDataReader; - -typedef BPackageKit::BHPKG::V1::BPackageDataReaderFactory - BPackageDataReaderFactoryV1; - - -class GlobalFactory { -private: - GlobalFactory(); - ~GlobalFactory(); - -public: - static status_t CreateDefault(); - static void DeleteDefault(); - static GlobalFactory* Default(); - - status_t CreatePackageDataReader(BDataReader* dataReader, - const PackageDataV1& data, - BAbstractBufferedDataReader*& _reader); - -private: - status_t _Init(); - -private: - static GlobalFactory* sDefaultInstance; - - BlockBufferPoolKernel fBufferPool; - BPackageDataReaderFactoryV1 fPackageDataReaderFactory; -}; - -#endif // GLOBAL_FACTORY_H diff --git a/src/add-ons/kernel/file_systems/packagefs/package/Package.cpp b/src/add-ons/kernel/file_systems/packagefs/package/Package.cpp index 20e57f198a..d594faf7ce 100644 --- a/src/add-ons/kernel/file_systems/packagefs/package/Package.cpp +++ b/src/add-ons/kernel/file_systems/packagefs/package/Package.cpp @@ -16,19 +16,15 @@ #include #include #include -#include -#include #include #include #include #include -#include #include #include "CachedDataReader.h" #include "DebugSupport.h" -#include "GlobalFactory.h" #include "PackageDirectory.h" #include "PackageFile.h" #include "PackagesDirectory.h" @@ -52,12 +48,6 @@ typedef BPackageKit::BHPKG::BPackageEntry BPackageEntry; typedef BPackageKit::BHPKG::BPackageEntryAttribute BPackageEntryAttribute; typedef BPackageKit::BHPKG::BPrivate::PackageReaderImpl PackageReaderImpl; -// format version V1 types -typedef BPackageKit::BHPKG::V1::BPackageContentHandler BPackageContentHandlerV1; -typedef BPackageKit::BHPKG::V1::BPackageEntry BPackageEntryV1; -typedef BPackageKit::BHPKG::V1::BPackageEntryAttribute BPackageEntryAttributeV1; -typedef BPackageKit::BHPKG::V1::BPrivate::PackageReaderImpl PackageReaderImplV1; - const char* const kArchitectureNames[B_PACKAGE_ARCHITECTURE_ENUM_COUNT] = { "any", @@ -384,258 +374,6 @@ private: }; -// #pragma mark - LoaderContentHandlerV1 - - -struct Package::LoaderContentHandlerV1 : BPackageContentHandlerV1 { - LoaderContentHandlerV1(Package* package) - : - fPackage(package), - fErrorOccurred(false) - { - } - - status_t Init() - { - return B_OK; - } - - virtual status_t HandleEntry(BPackageEntryV1* entry) - { - if (fErrorOccurred) - return B_OK; - - PackageDirectory* parentDir = NULL; - if (entry->Parent() != NULL) { - parentDir = dynamic_cast( - (PackageNode*)entry->Parent()->UserToken()); - if (parentDir == NULL) - RETURN_ERROR(B_BAD_DATA); - } - - // get the file mode -- filter out write permissions - mode_t mode = entry->Mode() & ~(mode_t)(S_IWUSR | S_IWGRP | S_IWOTH); - - // create the package node - PackageNode* node; - if (S_ISREG(mode)) { - // file - node = new(std::nothrow) PackageFile(fPackage, mode, - PackageData(entry->Data())); - } else if (S_ISLNK(mode)) { - // symlink - String path; - if (!path.SetTo(entry->SymlinkPath())) - RETURN_ERROR(B_NO_MEMORY); - - PackageSymlink* symlink = new(std::nothrow) PackageSymlink( - fPackage, mode); - if (symlink == NULL) - RETURN_ERROR(B_NO_MEMORY); - - symlink->SetSymlinkPath(path); - node = symlink; - } else if (S_ISDIR(mode)) { - // directory - node = new(std::nothrow) PackageDirectory(fPackage, mode); - } else - RETURN_ERROR(B_BAD_DATA); - - if (node == NULL) - RETURN_ERROR(B_NO_MEMORY); - BReference nodeReference(node, true); - - String entryName; - if (!entryName.SetTo(entry->Name())) - RETURN_ERROR(B_NO_MEMORY); - - status_t error = node->Init(parentDir, entryName); - if (error != B_OK) - RETURN_ERROR(error); - - node->SetModifiedTime(entry->ModifiedTime()); - - // add it to the parent directory - if (parentDir != NULL) - parentDir->AddChild(node); - else - fPackage->AddNode(node); - - entry->SetUserToken(node); - - return B_OK; - } - - virtual status_t HandleEntryAttribute(BPackageEntryV1* entry, - BPackageEntryAttributeV1* attribute) - { - if (fErrorOccurred) - return B_OK; - - PackageNode* node = (PackageNode*)entry->UserToken(); - - String name; - if (!name.SetTo(attribute->Name())) - RETURN_ERROR(B_NO_MEMORY); - - PackageNodeAttribute* nodeAttribute = new(std::nothrow) - PackageNodeAttribute(attribute->Type(), - PackageData(attribute->Data())); - if (nodeAttribute == NULL) - RETURN_ERROR(B_NO_MEMORY) - - nodeAttribute->Init(name); - node->AddAttribute(nodeAttribute); - - return B_OK; - } - - virtual status_t HandleEntryDone(BPackageEntryV1* entry) - { - return B_OK; - } - - virtual status_t HandlePackageAttribute( - const BPackageInfoAttributeValue& value) - { - switch (value.attributeID) { - case B_PACKAGE_INFO_NAME: - { - String name; - if (!name.SetTo(value.string)) - return B_NO_MEMORY; - fPackage->SetName(name); - return B_OK; - } - - case B_PACKAGE_INFO_INSTALL_PATH: - { - String path; - if (!path.SetTo(value.string)) - return B_NO_MEMORY; - fPackage->SetInstallPath(path); - return B_OK; - } - - case B_PACKAGE_INFO_VERSION: - { - ::Version* version; - status_t error = Version::Create(value.version.major, - value.version.minor, value.version.micro, - value.version.preRelease, value.version.revision, version); - if (error != B_OK) - RETURN_ERROR(error); - - fPackage->SetVersion(version); - - break; - } - - case B_PACKAGE_INFO_ARCHITECTURE: - if (value.unsignedInt >= B_PACKAGE_ARCHITECTURE_ENUM_COUNT) - RETURN_ERROR(B_BAD_VALUE); - - fPackage->SetArchitecture( - (BPackageArchitecture)value.unsignedInt); - break; - - case B_PACKAGE_INFO_PROVIDES: - { - // create a version object, if a version is specified - ::Version* version = NULL; - if (value.resolvable.haveVersion) { - const BPackageVersionData& versionInfo - = value.resolvable.version; - status_t error = Version::Create(versionInfo.major, - versionInfo.minor, versionInfo.micro, - versionInfo.preRelease, versionInfo.revision, version); - if (error != B_OK) - RETURN_ERROR(error); - } - ObjectDeleter< ::Version> versionDeleter(version); - - // create a version object, if a compatible version is specified - ::Version* compatibleVersion = NULL; - if (value.resolvable.haveCompatibleVersion) { - const BPackageVersionData& versionInfo - = value.resolvable.compatibleVersion; - status_t error = Version::Create(versionInfo.major, - versionInfo.minor, versionInfo.micro, - versionInfo.preRelease, versionInfo.revision, - compatibleVersion); - if (error != B_OK) - RETURN_ERROR(error); - } - ObjectDeleter< ::Version> compatibleVersionDeleter( - compatibleVersion); - - // create the resolvable - Resolvable* resolvable = new(std::nothrow) Resolvable(fPackage); - if (resolvable == NULL) - RETURN_ERROR(B_NO_MEMORY); - ObjectDeleter resolvableDeleter(resolvable); - - status_t error = resolvable->Init(value.resolvable.name, - versionDeleter.Detach(), compatibleVersionDeleter.Detach()); - if (error != B_OK) - RETURN_ERROR(error); - - fPackage->AddResolvable(resolvableDeleter.Detach()); - - break; - } - - case B_PACKAGE_INFO_REQUIRES: - { - // create the dependency - Dependency* dependency = new(std::nothrow) Dependency(fPackage); - if (dependency == NULL) - RETURN_ERROR(B_NO_MEMORY); - ObjectDeleter dependencyDeleter(dependency); - - status_t error = dependency->Init( - value.resolvableExpression.name); - if (error != B_OK) - RETURN_ERROR(error); - - // create a version object, if a version is specified - ::Version* version = NULL; - if (value.resolvableExpression.haveOpAndVersion) { - const BPackageVersionData& versionInfo - = value.resolvableExpression.version; - status_t error = Version::Create(versionInfo.major, - versionInfo.minor, versionInfo.micro, - versionInfo.preRelease, versionInfo.revision, version); - if (error != B_OK) - RETURN_ERROR(error); - - dependency->SetVersionRequirement( - value.resolvableExpression.op, version); - } - - fPackage->AddDependency(dependencyDeleter.Detach()); - - break; - } - - default: - break; - } - - return B_OK; - } - - virtual void HandleErrorOccurred() - { - fErrorOccurred = true; - } - -private: - Package* fPackage; - bool fErrorOccurred; -}; - - // #pragma mark - HeapReader @@ -651,46 +389,6 @@ struct Package::HeapReader { }; -// #pragma mark - HeapReaderV1 - - -struct Package::HeapReaderV1 : public HeapReader, private BDataReader { -public: - HeapReaderV1(int fd) - : - fFileReader(fd) - { - } - - ~HeapReaderV1() - { - } - - virtual void UpdateFD(int fd) - { - fFileReader.SetFD(fd); - } - - virtual status_t CreateDataReader(const PackageData& data, - BAbstractBufferedDataReader*& _reader) - { - return GlobalFactory::Default()->CreatePackageDataReader(this, - data.DataV1(), _reader); - } - -private: - // BDataReader - - virtual status_t ReadData(off_t offset, void* buffer, size_t size) - { - return fFileReader.ReadData(offset, buffer, size); - } - -private: - BFDDataReader fFileReader; -}; - - // #pragma mark - HeapReaderV2 @@ -1050,28 +748,8 @@ Package::_Load(const PackageSettings& settings) RETURN_ERROR(error); } - // try package file format version 1 - PackageReaderImplV1 packageReader(&errorOutput); - status_t error = packageReader.Init(fd, false); - if (error != B_OK) - RETURN_ERROR(error); - - // parse content - LoaderContentHandlerV1 handler(this); - error = handler.Init(); - if (error != B_OK) - RETURN_ERROR(error); - - error = packageReader.ParseContent(&handler); - if (error != B_OK) - RETURN_ERROR(error); - - // create a heap reader - fHeapReader = new(std::nothrow) HeapReaderV1(fd); - if (fHeapReader == NULL) - RETURN_ERROR(B_NO_MEMORY); - - return B_OK; + // we don't support this package file format + RETURN_ERROR(B_BAD_DATA); }