Add support for adding a package-info to BRepositoryWriter.

This commit is contained in:
Oliver Tappe
2013-09-18 12:05:34 +02:00
parent 30a517bc64
commit 50ae264dad
4 changed files with 42 additions and 0 deletions
@@ -60,6 +60,7 @@ public:
status_t Init(const char* fileName);
status_t AddPackage(const BEntry& packageEntry);
status_t AddPackageInfo(const BPackageInfo& packageInfo);
status_t Finish();
private:
@@ -41,11 +41,14 @@ public:
status_t Init(const char* fileName);
status_t AddPackage(const BEntry& packageEntry);
status_t AddPackageInfo(const BPackageInfo& packageInfo);
status_t Finish();
private:
status_t _Init(const char* fileName);
status_t _AddPackage(const BEntry& packageEntry);
status_t _AddPackageInfo(
const BPackageInfo& packageInfo);
status_t _Finish();
status_t _RegisterCurrentPackageInfo();
@@ -51,6 +51,16 @@ BRepositoryWriter::AddPackage(const BEntry& packageEntry)
}
status_t
BRepositoryWriter::AddPackageInfo(const BPackageInfo& packageInfo)
{
if (fImpl == NULL)
return B_NO_INIT;
return fImpl->AddPackageInfo(packageInfo);
}
status_t
BRepositoryWriter::Finish()
{
@@ -233,6 +233,20 @@ RepositoryWriterImpl::AddPackage(const BEntry& packageEntry)
}
status_t
RepositoryWriterImpl::AddPackageInfo(const BPackageInfo& packageInfo)
{
try {
return _AddPackageInfo(packageInfo);
} catch (status_t error) {
return error;
} catch (std::bad_alloc) {
fListener->PrintError("Out of memory!\n");
return B_NO_MEMORY;
}
}
status_t
RepositoryWriterImpl::Finish()
{
@@ -350,6 +364,20 @@ RepositoryWriterImpl::_AddPackage(const BEntry& packageEntry)
}
status_t
RepositoryWriterImpl::_AddPackageInfo(const BPackageInfo& packageInfo)
{
fPackageInfo = packageInfo;
// register package's attributes
status_t result = _RegisterCurrentPackageInfo();
if (result != B_OK)
return result;
return B_OK;
}
status_t
RepositoryWriterImpl::_RegisterCurrentPackageInfo()
{