package[_repo] list: reduce code duplication
Introduce helper class PackageInfoPrinter that does the printing and is used by both commands.
This commit is contained in:
@@ -0,0 +1,326 @@
|
||||
/*
|
||||
* Copyright 2009-2013, Ingo Weinhold, [email protected].
|
||||
* Distributed under the terms of the MIT License.
|
||||
*/
|
||||
#ifndef PACKAGE_INFO_PRINTER_H
|
||||
#define PACKAGE_INFO_PRINTER_H
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <package/hpkg/PackageInfoAttributeValue.h>
|
||||
#include <package/PackageInfo.h>
|
||||
|
||||
|
||||
using namespace BPackageKit;
|
||||
using BPackageKit::BHPKG::BGlobalWritableFileInfoData;
|
||||
using BPackageKit::BHPKG::BPackageInfoAttributeValue;
|
||||
using BPackageKit::BHPKG::BUserData;
|
||||
using BPackageKit::BHPKG::BUserSettingsFileInfoData;
|
||||
|
||||
|
||||
class PackageInfoPrinter {
|
||||
public:
|
||||
bool PrintAttribute(const BPackageInfoAttributeValue& value)
|
||||
{
|
||||
switch (value.attributeID) {
|
||||
case B_PACKAGE_INFO_NAME:
|
||||
PrintName(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_SUMMARY:
|
||||
PrintSummary(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_DESCRIPTION:
|
||||
PrintDescription(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_VENDOR:
|
||||
PrintVendor(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_PACKAGER:
|
||||
PrintPackager(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_BASE_PACKAGE:
|
||||
PrintBasePackage(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_FLAGS:
|
||||
PrintFlags(value.unsignedInt);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_ARCHITECTURE:
|
||||
PrintArchitecture(value.unsignedInt);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_VERSION:
|
||||
PrintVersion(value.version);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_COPYRIGHTS:
|
||||
PrintCopyright(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_LICENSES:
|
||||
PrintLicense(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_URLS:
|
||||
PrintUrl(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_SOURCE_URLS:
|
||||
PrintSourceUrl(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_PROVIDES:
|
||||
PrintProvides(value.resolvable);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_REQUIRES:
|
||||
PrintRequires(value.resolvableExpression);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_SUPPLEMENTS:
|
||||
PrintSupplements(value.resolvableExpression);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_CONFLICTS:
|
||||
PrintConflicts(value.resolvableExpression);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_FRESHENS:
|
||||
PrintFreshens(value.resolvableExpression);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_REPLACES:
|
||||
PrintReplaces(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
|
||||
PrintGlobalWritableFile(value.globalWritableFileInfo);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_USER_SETTINGS_FILES:
|
||||
PrintUserSettingsFile(value.userSettingsFileInfo);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_USERS:
|
||||
PrintUser(value.user);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_GROUPS:
|
||||
PrintGroup(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||
PrintPostInstallScript(value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
||||
PrintInstallPath(value.string);
|
||||
break;
|
||||
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void PrintName(const char* name) const
|
||||
{
|
||||
printf("\tname: %s\n", name);
|
||||
}
|
||||
|
||||
void PrintSummary(const char* summary) const
|
||||
{
|
||||
printf("\tsummary: %s\n", summary);
|
||||
}
|
||||
|
||||
void PrintDescription(const char* description) const
|
||||
{
|
||||
printf("\tdescription: %s\n", description);
|
||||
}
|
||||
|
||||
void PrintVendor(const char* vendor) const
|
||||
{
|
||||
printf("\tvendor: %s\n", vendor);
|
||||
}
|
||||
|
||||
void PrintPackager(const char* packager) const
|
||||
{
|
||||
printf("\tpackager: %s\n", packager);
|
||||
}
|
||||
|
||||
void PrintBasePackage(const char* basePackage) const
|
||||
{
|
||||
printf("\tbase package: %s\n", basePackage);
|
||||
}
|
||||
|
||||
void PrintFlags(uint32 flags) const
|
||||
{
|
||||
if (flags == 0)
|
||||
return;
|
||||
|
||||
printf("\tflags:\n");
|
||||
if ((flags & B_PACKAGE_FLAG_APPROVE_LICENSE) != 0)
|
||||
printf("\t\tapprove_license\n");
|
||||
if ((flags & B_PACKAGE_FLAG_SYSTEM_PACKAGE) != 0)
|
||||
printf("\t\tsystem_package\n");
|
||||
}
|
||||
|
||||
void PrintArchitecture(uint32 architecture) const
|
||||
{
|
||||
printf("\tarchitecture: %s\n",
|
||||
architecture < B_PACKAGE_ARCHITECTURE_ENUM_COUNT
|
||||
? BPackageInfo::kArchitectureNames[architecture]
|
||||
: "<invalid>");
|
||||
}
|
||||
|
||||
void PrintVersion(const BPackageVersionData& version) const
|
||||
{
|
||||
printf("\tversion: ");
|
||||
_PrintPackageVersion(version);
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void PrintCopyright(const char* copyright) const
|
||||
{
|
||||
printf("\tcopyright: %s\n", copyright);
|
||||
}
|
||||
|
||||
void PrintLicense(const char* license) const
|
||||
{
|
||||
printf("\tlicense: %s\n", license);
|
||||
}
|
||||
|
||||
void PrintUrl(const char* url) const
|
||||
{
|
||||
printf("\tURL: %s\n", url);
|
||||
}
|
||||
|
||||
void PrintSourceUrl(const char* sourceUrl) const
|
||||
{
|
||||
printf("\tsource URL: %s\n", sourceUrl);
|
||||
}
|
||||
|
||||
void PrintProvides(const BPackageResolvableData& provides) const
|
||||
{
|
||||
printf("\tprovides: %s", provides.name);
|
||||
if (provides.haveVersion) {
|
||||
printf(" = ");
|
||||
_PrintPackageVersion(provides.version);
|
||||
}
|
||||
if (provides.haveCompatibleVersion) {
|
||||
printf(" (compatible >= ");
|
||||
_PrintPackageVersion(provides.compatibleVersion);
|
||||
printf(")");
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void PrintRequires(const BPackageResolvableExpressionData& requires) const
|
||||
{
|
||||
_PrintResolvableExpression("requires", requires);
|
||||
}
|
||||
|
||||
void PrintSupplements(const BPackageResolvableExpressionData& supplements)
|
||||
const
|
||||
{
|
||||
_PrintResolvableExpression("supplements", supplements);
|
||||
}
|
||||
|
||||
void PrintConflicts(const BPackageResolvableExpressionData& conflicts) const
|
||||
{
|
||||
_PrintResolvableExpression("conflicts", conflicts);
|
||||
}
|
||||
|
||||
void PrintFreshens(const BPackageResolvableExpressionData& freshens) const
|
||||
{
|
||||
_PrintResolvableExpression("freshens", freshens);
|
||||
}
|
||||
|
||||
void PrintReplaces(const char* replaces) const
|
||||
{
|
||||
printf("\treplaces: %s\n", replaces);
|
||||
}
|
||||
|
||||
void PrintGlobalWritableFile(const BGlobalWritableFileInfoData& info) const
|
||||
{
|
||||
printf("\tglobal writable file: %s", info.path);
|
||||
if (info.isDirectory)
|
||||
printf( " directory");
|
||||
if (info.updateType < B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
|
||||
printf(" %s\n",
|
||||
BPackageInfo::kWritableFileUpdateTypes[info.updateType]);
|
||||
} else
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void PrintUserSettingsFile(const BUserSettingsFileInfoData& info) const
|
||||
{
|
||||
printf("\tuser settings file: %s", info.path);
|
||||
if (info.isDirectory)
|
||||
printf( " directory\n");
|
||||
else if (info.templatePath != NULL)
|
||||
printf(" template %s\n", info.templatePath);
|
||||
else
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
void PrintUser(const BUserData& user) const
|
||||
{
|
||||
printf("\tuser: %s\n", user.name);
|
||||
if (user.realName != NULL)
|
||||
printf("\t\treal name: %s\n", user.realName);
|
||||
if (user.home != NULL)
|
||||
printf("\t\thome: %s\n", user.home);
|
||||
if (user.shell != NULL)
|
||||
printf("\t\tshell: %s\n", user.shell);
|
||||
for (size_t i = 0; i < user.groupCount; i++)
|
||||
printf("\t\tgroup: %s\n", user.groups[i]);
|
||||
}
|
||||
|
||||
void PrintGroup(const char* group) const
|
||||
{
|
||||
printf("\tgroup: %s\n", group);
|
||||
}
|
||||
|
||||
void PrintPostInstallScript(const char* script) const
|
||||
{
|
||||
printf("\tpost install script: %s\n", script);
|
||||
}
|
||||
|
||||
void PrintInstallPath(const char* path) const
|
||||
{
|
||||
printf("\tinstall path: %s\n", path);
|
||||
}
|
||||
|
||||
private:
|
||||
static void _PrintPackageVersion(const BPackageVersionData& version)
|
||||
{
|
||||
printf("%s", BPackageVersion(version).ToString().String());
|
||||
}
|
||||
|
||||
void _PrintResolvableExpression(const char* fieldName,
|
||||
const BPackageResolvableExpressionData& expression) const
|
||||
{
|
||||
printf("\t%s: %s", fieldName, expression.name);
|
||||
if (expression.haveOpAndVersion) {
|
||||
printf(" %s ",
|
||||
expression.op < B_PACKAGE_RESOLVABLE_OP_ENUM_COUNT
|
||||
? BPackageResolvableExpression::kOperatorNames[
|
||||
expression.op]
|
||||
: "<invalid operator>");
|
||||
_PrintPackageVersion(expression.version);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
#endif // PACKAGE_INFO_PRINTER_H
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <package/PackageInfo.h>
|
||||
|
||||
#include "package.h"
|
||||
#include "PackageInfoPrinter.h"
|
||||
|
||||
|
||||
using namespace BPackageKit;
|
||||
@@ -81,6 +82,7 @@ template<typename VersionPolicy>
|
||||
struct PackageContentListHandler : VersionPolicy::PackageContentHandler {
|
||||
PackageContentListHandler(bool listAttributes)
|
||||
:
|
||||
fPrinter(),
|
||||
fLevel(0),
|
||||
fListAttribute(listAttributes)
|
||||
{
|
||||
@@ -167,182 +169,13 @@ struct PackageContentListHandler : VersionPolicy::PackageContentHandler {
|
||||
virtual status_t HandlePackageAttribute(
|
||||
const BPackageInfoAttributeValue& value)
|
||||
{
|
||||
switch (value.attributeID) {
|
||||
case B_PACKAGE_INFO_NAME:
|
||||
printf("package-attributes:\n");
|
||||
printf("\tname: %s\n", value.string);
|
||||
break;
|
||||
if (value.attributeID == B_PACKAGE_INFO_NAME)
|
||||
printf("package-attributes:\n");
|
||||
|
||||
case B_PACKAGE_INFO_SUMMARY:
|
||||
printf("\tsummary: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_DESCRIPTION:
|
||||
printf("\tdescription: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_VENDOR:
|
||||
printf("\tvendor: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_PACKAGER:
|
||||
printf("\tpackager: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_BASE_PACKAGE:
|
||||
printf("\tbase package: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_FLAGS:
|
||||
if (value.unsignedInt == 0)
|
||||
break;
|
||||
printf("\tflags:\n");
|
||||
if ((value.unsignedInt & B_PACKAGE_FLAG_APPROVE_LICENSE) != 0)
|
||||
printf("\t\tapprove_license\n");
|
||||
if ((value.unsignedInt & B_PACKAGE_FLAG_SYSTEM_PACKAGE) != 0)
|
||||
printf("\t\tsystem_package\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_ARCHITECTURE:
|
||||
printf("\tarchitecture: %s\n",
|
||||
BPackageInfo::kArchitectureNames[value.unsignedInt]);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_VERSION:
|
||||
printf("\tversion: ");
|
||||
_PrintPackageVersion(value.version);
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_COPYRIGHTS:
|
||||
printf("\tcopyright: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_LICENSES:
|
||||
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) {
|
||||
printf(" = ");
|
||||
_PrintPackageVersion(value.resolvable.version);
|
||||
}
|
||||
if (value.resolvable.haveCompatibleVersion) {
|
||||
printf(" (compatible >= ");
|
||||
_PrintPackageVersion(value.resolvable.compatibleVersion);
|
||||
printf(")");
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_REQUIRES:
|
||||
printf("\trequires: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_SUPPLEMENTS:
|
||||
printf("\tsupplements: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_CONFLICTS:
|
||||
printf("\tconflicts: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_FRESHENS:
|
||||
printf("\tfreshens: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_REPLACES:
|
||||
printf("\treplaces: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
|
||||
printf("\tglobal writable file: %s",
|
||||
value.globalWritableFileInfo.path);
|
||||
if (value.globalWritableFileInfo.isDirectory)
|
||||
printf( " directory");
|
||||
if (value.globalWritableFileInfo.updateType
|
||||
< B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
|
||||
printf(" %s\n",
|
||||
BPackageInfo::kWritableFileUpdateTypes[
|
||||
value.globalWritableFileInfo.updateType]);
|
||||
} else
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_USER_SETTINGS_FILES:
|
||||
printf("\tuser settings file: %s",
|
||||
value.userSettingsFileInfo.path);
|
||||
if (value.globalWritableFileInfo.isDirectory) {
|
||||
printf( " directory\n");
|
||||
} else if (value.userSettingsFileInfo.templatePath != NULL) {
|
||||
printf(" template %s\n",
|
||||
value.userSettingsFileInfo.templatePath);
|
||||
} else
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_USERS:
|
||||
printf("\tuser: %s\n", value.user.name);
|
||||
if (value.user.realName != NULL)
|
||||
printf("\t\treal name: %s\n", value.user.realName);
|
||||
if (value.user.home != NULL)
|
||||
printf("\t\thome: %s\n", value.user.home);
|
||||
if (value.user.shell != NULL)
|
||||
printf("\t\tshell: %s\n", value.user.shell);
|
||||
for (size_t i = 0; i < value.user.groupCount; i++)
|
||||
printf("\t\tgroup: %s\n", value.user.groups[i]);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_GROUPS:
|
||||
printf("\tgroup: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||
printf("\tpost install script: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
||||
printf("\tinstall path: %s\n", value.string);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf(
|
||||
"*** Invalid package attribute section: unexpected "
|
||||
"package attribute id %d encountered\n", value.attributeID);
|
||||
return B_BAD_DATA;
|
||||
if (!fPrinter.PrintAttribute(value)) {
|
||||
printf("*** Invalid package attribute section: unexpected "
|
||||
"package attribute id %d encountered\n", value.attributeID);
|
||||
return B_BAD_DATA;
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
@@ -373,8 +206,9 @@ private:
|
||||
}
|
||||
|
||||
private:
|
||||
int fLevel;
|
||||
bool fListAttribute;
|
||||
PackageInfoPrinter fPrinter;
|
||||
int fLevel;
|
||||
bool fListAttribute;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,8 @@ SubDir HAIKU_TOP src bin package_repo ;
|
||||
|
||||
UsePrivateHeaders kernel shared ;
|
||||
|
||||
UseHeaders [ FDirName $(HAIKU_TOP) src bin package ] ;
|
||||
|
||||
DEFINES += B_ENABLE_INCOMPLETE_POSIX_AT_SUPPORT ;
|
||||
# TODO: Remove when it is complete!
|
||||
|
||||
@@ -13,4 +15,3 @@ BinCommand package_repo :
|
||||
package be
|
||||
$(TARGET_LIBSUPC++)
|
||||
;
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include <package/RepositoryInfo.h>
|
||||
|
||||
#include "package_repo.h"
|
||||
#include "PackageInfoPrinter.h"
|
||||
|
||||
|
||||
using namespace BPackageKit::BHPKG;
|
||||
@@ -27,6 +28,7 @@ using namespace BPackageKit;
|
||||
struct RepositoryContentListHandler : BRepositoryContentHandler {
|
||||
RepositoryContentListHandler(bool verbose)
|
||||
:
|
||||
fPrinter(),
|
||||
fLevel(0),
|
||||
fVerbose(verbose)
|
||||
{
|
||||
@@ -40,221 +42,18 @@ struct RepositoryContentListHandler : BRepositoryContentHandler {
|
||||
virtual status_t HandlePackageAttribute(
|
||||
const BPackageInfoAttributeValue& value)
|
||||
{
|
||||
switch (value.attributeID) {
|
||||
case B_PACKAGE_INFO_NAME:
|
||||
if (fVerbose) {
|
||||
printf("package-attributes:\n");
|
||||
printf("\tname: %s\n", value.string);
|
||||
} else
|
||||
printf("package: %s", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_SUMMARY:
|
||||
if (fVerbose)
|
||||
printf("\tsummary: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_DESCRIPTION:
|
||||
if (fVerbose)
|
||||
printf("\tdescription: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_VENDOR:
|
||||
if (fVerbose)
|
||||
printf("\tvendor: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_PACKAGER:
|
||||
if (fVerbose)
|
||||
printf("\tpackager: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_BASE_PACKAGE:
|
||||
if (fVerbose)
|
||||
printf("\tbase package: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_FLAGS:
|
||||
if (value.unsignedInt == 0 || !fVerbose)
|
||||
break;
|
||||
printf("\tflags:\n");
|
||||
if ((value.unsignedInt & B_PACKAGE_FLAG_APPROVE_LICENSE) != 0)
|
||||
printf("\t\tapprove_license\n");
|
||||
if ((value.unsignedInt & B_PACKAGE_FLAG_SYSTEM_PACKAGE) != 0)
|
||||
printf("\t\tsystem_package\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_ARCHITECTURE:
|
||||
if (fVerbose) {
|
||||
printf("\tarchitecture: %s\n",
|
||||
BPackageInfo::kArchitectureNames[value.unsignedInt]);
|
||||
}
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_VERSION:
|
||||
if (!fVerbose)
|
||||
printf("(");
|
||||
_PrintPackageVersion(value.version);
|
||||
if (!fVerbose)
|
||||
printf(")\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_COPYRIGHTS:
|
||||
if (fVerbose)
|
||||
printf("\tcopyright: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_LICENSES:
|
||||
if (fVerbose)
|
||||
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;
|
||||
printf("\tprovides: %s", value.resolvable.name);
|
||||
if (value.resolvable.haveVersion) {
|
||||
printf(" = ");
|
||||
_PrintPackageVersion(value.resolvable.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_REQUIRES:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\trequires: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_SUPPLEMENTS:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tsupplements: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_CONFLICTS:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tconflicts: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_FRESHENS:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tfreshens: %s", value.resolvableExpression.name);
|
||||
if (value.resolvableExpression.haveOpAndVersion) {
|
||||
printf(" %s ", BPackageResolvableExpression::kOperatorNames[
|
||||
value.resolvableExpression.op]);
|
||||
_PrintPackageVersion(value.resolvableExpression.version);
|
||||
}
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_REPLACES:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\treplaces: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_CHECKSUM:
|
||||
printf("\tchecksum: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_GLOBAL_WRITABLE_FILES:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tglobal writable file: %s",
|
||||
value.globalWritableFileInfo.path);
|
||||
if (value.globalWritableFileInfo.isDirectory)
|
||||
printf( " directory");
|
||||
if (value.globalWritableFileInfo.updateType
|
||||
< B_WRITABLE_FILE_UPDATE_TYPE_ENUM_COUNT) {
|
||||
printf(" %s\n",
|
||||
BPackageInfo::kWritableFileUpdateTypes[
|
||||
value.globalWritableFileInfo.updateType]);
|
||||
} else
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_USER_SETTINGS_FILES:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tuser settings file: %s",
|
||||
value.userSettingsFileInfo.path);
|
||||
if (value.globalWritableFileInfo.isDirectory) {
|
||||
printf( " directory\n");
|
||||
} else if (value.userSettingsFileInfo.templatePath != NULL) {
|
||||
printf(" template %s\n",
|
||||
value.userSettingsFileInfo.templatePath);
|
||||
} else
|
||||
printf("\n");
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_USERS:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tuser: %s\n", value.user.name);
|
||||
if (value.user.realName != NULL)
|
||||
printf("\t\treal name: %s\n", value.user.realName);
|
||||
if (value.user.home != NULL)
|
||||
printf("\t\thome: %s\n", value.user.home);
|
||||
if (value.user.shell != NULL)
|
||||
printf("\t\tshell: %s\n", value.user.shell);
|
||||
for (size_t i = 0; i < value.user.groupCount; i++)
|
||||
printf("\t\tgroup: %s\n", value.user.groups[i]);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_GROUPS:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tgroup: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_POST_INSTALL_SCRIPTS:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tpost install script: %s\n", value.string);
|
||||
break;
|
||||
|
||||
case B_PACKAGE_INFO_INSTALL_PATH:
|
||||
if (!fVerbose)
|
||||
break;
|
||||
printf("\tinstall path: %s\n", value.string);
|
||||
break;
|
||||
|
||||
default:
|
||||
printf(
|
||||
"*** Invalid package attribute section: unexpected "
|
||||
if (value.attributeID == B_PACKAGE_INFO_NAME) {
|
||||
if (fVerbose) {
|
||||
printf("package-attributes:\n");
|
||||
fPrinter.PrintName(value.string);
|
||||
} else
|
||||
printf("package: %s", value.string);
|
||||
} else {
|
||||
if (fVerbose && !fPrinter.PrintAttribute(value)) {
|
||||
printf("*** Invalid package attribute section: unexpected "
|
||||
"package attribute id %d encountered\n", value.attributeID);
|
||||
return B_BAD_DATA;
|
||||
}
|
||||
}
|
||||
|
||||
return B_OK;
|
||||
@@ -296,8 +95,9 @@ private:
|
||||
}
|
||||
|
||||
private:
|
||||
int fLevel;
|
||||
bool fVerbose;
|
||||
PackageInfoPrinter fPrinter;
|
||||
int fLevel;
|
||||
bool fVerbose;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user