diff --git a/headers/os/package/GlobalSettingsFileInfo.h b/headers/os/package/GlobalSettingsFileInfo.h index 735e250e17..88ff8b9877 100644 --- a/headers/os/package/GlobalSettingsFileInfo.h +++ b/headers/os/package/GlobalSettingsFileInfo.h @@ -13,9 +13,17 @@ namespace BPackageKit { +namespace BHPKG { + struct BGlobalSettingsFileInfoData; +} + + class BGlobalSettingsFileInfo { public: BGlobalSettingsFileInfo(); + BGlobalSettingsFileInfo( + const BHPKG::BGlobalSettingsFileInfoData& + infoData); BGlobalSettingsFileInfo(const BString& path, BSettingsFileUpdateType updateType); ~BGlobalSettingsFileInfo(); diff --git a/headers/os/package/User.h b/headers/os/package/User.h index 2a263a45cc..29af4921c9 100644 --- a/headers/os/package/User.h +++ b/headers/os/package/User.h @@ -13,9 +13,15 @@ namespace BPackageKit { +namespace BHPKG { + struct BUserData; +} + + class BUser { public: BUser(); + BUser(const BHPKG::BUserData& userData); BUser(const BString& name, const BString& realName, const BString& home, const BString& shell, diff --git a/headers/os/package/UserSettingsFileInfo.h b/headers/os/package/UserSettingsFileInfo.h index c4639f7972..f92573258c 100644 --- a/headers/os/package/UserSettingsFileInfo.h +++ b/headers/os/package/UserSettingsFileInfo.h @@ -12,9 +12,17 @@ namespace BPackageKit { +namespace BHPKG { + struct BUserSettingsFileInfoData; +} + + class BUserSettingsFileInfo { public: BUserSettingsFileInfo(); + BUserSettingsFileInfo( + const BHPKG::BUserSettingsFileInfoData& + infoData); BUserSettingsFileInfo(const BString& path, const BString& templatePath = BString()); ~BUserSettingsFileInfo(); diff --git a/src/kits/package/GlobalSettingsFileInfo.cpp b/src/kits/package/GlobalSettingsFileInfo.cpp index 36229ae5a4..1cb85c3542 100644 --- a/src/kits/package/GlobalSettingsFileInfo.cpp +++ b/src/kits/package/GlobalSettingsFileInfo.cpp @@ -6,6 +6,8 @@ #include +#include + namespace BPackageKit { @@ -18,6 +20,15 @@ BGlobalSettingsFileInfo::BGlobalSettingsFileInfo() } +BGlobalSettingsFileInfo::BGlobalSettingsFileInfo( + const BHPKG::BGlobalSettingsFileInfoData& infoData) + : + fPath(infoData.path), + fUpdateType(infoData.updateType) +{ +} + + BGlobalSettingsFileInfo::BGlobalSettingsFileInfo(const BString& path, BSettingsFileUpdateType updateType) : diff --git a/src/kits/package/PackageInfoContentHandler.cpp b/src/kits/package/PackageInfoContentHandler.cpp index ecd6857dcd..e6ceacccb6 100644 --- a/src/kits/package/PackageInfoContentHandler.cpp +++ b/src/kits/package/PackageInfoContentHandler.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de. + * Copyright 2011-2013, Ingo Weinhold, ingo_weinhold@gmx.de. * Distributed under the terms of the MIT License. */ @@ -139,6 +139,31 @@ BPackageInfoContentHandler::HandlePackageAttribute( fPackageInfo.SetInstallPath(value.string); break; + case B_PACKAGE_INFO_BASE_PACKAGE: + fPackageInfo.SetBasePackage(value.string); + break; + + case B_PACKAGE_INFO_GLOBAL_SETTINGS_FILES: + fPackageInfo.AddGlobalSettingsFileInfo( + value.globalSettingsFileInfo); + break; + + case B_PACKAGE_INFO_USER_SETTINGS_FILES: + fPackageInfo.AddUserSettingsFileInfo(value.userSettingsFileInfo); + break; + + case B_PACKAGE_INFO_USERS: + fPackageInfo.AddUser(value.user); + break; + + case B_PACKAGE_INFO_GROUPS: + fPackageInfo.AddGroup(value.string); + break; + + case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS: + fPackageInfo.AddPostInstallScript(value.string); + break; + default: if (fErrorOutput != NULL) { fErrorOutput->PrintError( diff --git a/src/kits/package/User.cpp b/src/kits/package/User.cpp index 973b73dd33..2ae6645764 100644 --- a/src/kits/package/User.cpp +++ b/src/kits/package/User.cpp @@ -8,6 +8,8 @@ #include +#include + namespace BPackageKit { @@ -23,6 +25,19 @@ BUser::BUser() } +BUser::BUser(const BHPKG::BUserData& userData) + : + fName(userData.name), + fRealName(userData.realName), + fHome(userData.home), + fShell(userData.shell), + fGroups() +{ + for (size_t i = 0; i < userData.groupCount; i++) + fGroups.Add(userData.groups[i]); +} + + BUser::BUser(const BString& name, const BString& realName, const BString& home, const BString& shell, const BStringList& groups) : diff --git a/src/kits/package/UserSettingsFileInfo.cpp b/src/kits/package/UserSettingsFileInfo.cpp index b23279875d..3993c04154 100644 --- a/src/kits/package/UserSettingsFileInfo.cpp +++ b/src/kits/package/UserSettingsFileInfo.cpp @@ -6,6 +6,8 @@ #include +#include + namespace BPackageKit { @@ -18,6 +20,15 @@ BUserSettingsFileInfo::BUserSettingsFileInfo() } +BUserSettingsFileInfo::BUserSettingsFileInfo( + const BHPKG::BUserSettingsFileInfoData& infoData) + : + fPath(infoData.path), + fTemplatePath(infoData.templatePath) +{ +} + + BUserSettingsFileInfo::BUserSettingsFileInfo(const BString& path, const BString& templatePath) :