diff --git a/headers/build/os/package/hpkg/PackageAttributes.h b/headers/build/os/package/hpkg/PackageAttributes.h new file mode 100644 index 0000000000..3ff207ce0f --- /dev/null +++ b/headers/build/os/package/hpkg/PackageAttributes.h @@ -0,0 +1 @@ +#include <../os/package/hpkg/PackageAttributes.h> diff --git a/headers/os/package/hpkg/HPKGDefs.h b/headers/os/package/hpkg/HPKGDefs.h index f2d6e9e1e8..4650a7ff05 100644 --- a/headers/os/package/hpkg/HPKGDefs.h +++ b/headers/os/package/hpkg/HPKGDefs.h @@ -86,52 +86,10 @@ extern const char* const B_HPKG_PACKAGE_INFO_FILE_NAME; // package attribute IDs enum BHPKGAttributeID { - B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY = 0, - B_HPKG_ATTRIBUTE_ID_FILE_TYPE = 1, - B_HPKG_ATTRIBUTE_ID_FILE_PERMISSIONS = 2, - B_HPKG_ATTRIBUTE_ID_FILE_USER = 3, - B_HPKG_ATTRIBUTE_ID_FILE_GROUP = 4, - B_HPKG_ATTRIBUTE_ID_FILE_ATIME = 5, - B_HPKG_ATTRIBUTE_ID_FILE_MTIME = 6, - B_HPKG_ATTRIBUTE_ID_FILE_CRTIME = 7, - B_HPKG_ATTRIBUTE_ID_FILE_ATIME_NANOS = 8, - B_HPKG_ATTRIBUTE_ID_FILE_MTIME_NANOS = 9, - B_HPKG_ATTRIBUTE_ID_FILE_CRTIM_NANOS = 10, - B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE = 11, - B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE_TYPE = 12, - B_HPKG_ATTRIBUTE_ID_DATA = 13, - B_HPKG_ATTRIBUTE_ID_SYMLINK_PATH = 14, - B_HPKG_ATTRIBUTE_ID_PACKAGE_NAME = 15, - B_HPKG_ATTRIBUTE_ID_PACKAGE_SUMMARY = 16, - B_HPKG_ATTRIBUTE_ID_PACKAGE_DESCRIPTION = 17, - B_HPKG_ATTRIBUTE_ID_PACKAGE_VENDOR = 18, - B_HPKG_ATTRIBUTE_ID_PACKAGE_PACKAGER = 19, - B_HPKG_ATTRIBUTE_ID_PACKAGE_FLAGS = 20, - B_HPKG_ATTRIBUTE_ID_PACKAGE_ARCHITECTURE = 21, - B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MAJOR = 22, - B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MINOR = 23, - B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MICRO = 24, - B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_REVISION = 25, - B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT = 26, - B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE = 27, - B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES = 28, - B_HPKG_ATTRIBUTE_ID_PACKAGE_REQUIRES = 29, - B_HPKG_ATTRIBUTE_ID_PACKAGE_SUPPLEMENTS = 30, - B_HPKG_ATTRIBUTE_ID_PACKAGE_CONFLICTS = 31, - B_HPKG_ATTRIBUTE_ID_PACKAGE_FRESHENS = 32, - B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES = 33, - B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR = 34, - B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM = 35, - B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE = 36, - B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE = 37, - B_HPKG_ATTRIBUTE_ID_PACKAGE_URL = 38, - B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL = 39, - B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH = 40, - B_HPKG_ATTRIBUTE_ID_PACKAGE_BASE_PACKAGE = 41, - B_HPKG_ATTRIBUTE_ID_PACKAGE_GLOBAL_SETTINGS_FILE = 42, - B_HPKG_ATTRIBUTE_ID_PACKAGE_USER_SETTINGS_FILE = 43, - B_HPKG_ATTRIBUTE_ID_PACKAGE_SETTINGS_FILE_UPDATE_TYPE = 44, - B_HPKG_ATTRIBUTE_ID_PACKAGE_SETTINGS_FILE_TEMPLATE = 45, + #define B_DEFINE_HPKG_ATTRIBUTE(id, type, name, constant) \ + B_HPKG_ATTRIBUTE_ID_##constant = id, + #include + #undef B_DEFINE_HPKG_ATTRIBUTE // B_HPKG_ATTRIBUTE_ID_ENUM_COUNT, }; diff --git a/headers/os/package/hpkg/PackageAttributes.h b/headers/os/package/hpkg/PackageAttributes.h new file mode 100644 index 0000000000..90888eb5c1 --- /dev/null +++ b/headers/os/package/hpkg/PackageAttributes.h @@ -0,0 +1,72 @@ +/* + * Copyright 2009-2013, Haiku, Inc. + * Distributed under the terms of the MIT License. + */ + + +// This file defines the HPKG file attributes with all their properties in one +// place. Includers of the file need to define the macro +// B_DEFINE_HPKG_ATTRIBUTE(id, type, name, constant) so that it evaluates to +// whatever is desired in their context. + + +B_DEFINE_HPKG_ATTRIBUTE( 0, STRING, "dir:entry", DIRECTORY_ENTRY) +B_DEFINE_HPKG_ATTRIBUTE( 1, UINT, "file:type", FILE_TYPE) +B_DEFINE_HPKG_ATTRIBUTE( 2, UINT, "file:permissions", FILE_PERMISSIONS) +B_DEFINE_HPKG_ATTRIBUTE( 3, STRING, "file:user", FILE_USER) +B_DEFINE_HPKG_ATTRIBUTE( 4, STRING, "file:group", FILE_GROUP) +B_DEFINE_HPKG_ATTRIBUTE( 5, UINT, "file:atime", FILE_ATIME) +B_DEFINE_HPKG_ATTRIBUTE( 6, UINT, "file:mtime", FILE_MTIME) +B_DEFINE_HPKG_ATTRIBUTE( 7, UINT, "file:crtime", FILE_CRTIME) +B_DEFINE_HPKG_ATTRIBUTE( 8, UINT, "file:atime:nanos", FILE_ATIME_NANOS) +B_DEFINE_HPKG_ATTRIBUTE( 9, UINT, "file:mtime:nanos", FILE_MTIME_NANOS) +B_DEFINE_HPKG_ATTRIBUTE(10, UINT, "file:crtime:nanos", FILE_CRTIM_NANOS) +B_DEFINE_HPKG_ATTRIBUTE(11, STRING, "file:attribute", FILE_ATTRIBUTE) +B_DEFINE_HPKG_ATTRIBUTE(12, UINT, "file:attribute:type", FILE_ATTRIBUTE_TYPE) +B_DEFINE_HPKG_ATTRIBUTE(13, RAW, "data", DATA) +B_DEFINE_HPKG_ATTRIBUTE(14, STRING, "symlink:path", SYMLINK_PATH) +B_DEFINE_HPKG_ATTRIBUTE(15, STRING, "package:name", PACKAGE_NAME) +B_DEFINE_HPKG_ATTRIBUTE(16, STRING, "package:summary", PACKAGE_SUMMARY) +B_DEFINE_HPKG_ATTRIBUTE(17, STRING, "package:description", PACKAGE_DESCRIPTION) +B_DEFINE_HPKG_ATTRIBUTE(18, STRING, "package:vendor", PACKAGE_VENDOR) +B_DEFINE_HPKG_ATTRIBUTE(19, STRING, "package:packager", PACKAGE_PACKAGER) +B_DEFINE_HPKG_ATTRIBUTE(20, UINT, "package:flags", PACKAGE_FLAGS) +B_DEFINE_HPKG_ATTRIBUTE(21, UINT, "package:architecture", + PACKAGE_ARCHITECTURE) +B_DEFINE_HPKG_ATTRIBUTE(22, STRING, "package:version.major", + PACKAGE_VERSION_MAJOR) +B_DEFINE_HPKG_ATTRIBUTE(23, STRING, "package:version.minor", + PACKAGE_VERSION_MINOR) +B_DEFINE_HPKG_ATTRIBUTE(24, STRING, "package:version.micro", + PACKAGE_VERSION_MICRO) +B_DEFINE_HPKG_ATTRIBUTE(25, UINT, "package:version.revision", + PACKAGE_VERSION_REVISION) +B_DEFINE_HPKG_ATTRIBUTE(26, STRING, "package:copyright", PACKAGE_COPYRIGHT) +B_DEFINE_HPKG_ATTRIBUTE(27, STRING, "package:license", PACKAGE_LICENSE) +B_DEFINE_HPKG_ATTRIBUTE(28, STRING, "package:provides", PACKAGE_PROVIDES) +B_DEFINE_HPKG_ATTRIBUTE(29, STRING, "package:requires", PACKAGE_REQUIRES) +B_DEFINE_HPKG_ATTRIBUTE(30, STRING, "package:supplements", PACKAGE_SUPPLEMENTS) +B_DEFINE_HPKG_ATTRIBUTE(31, STRING, "package:conflicts", PACKAGE_CONFLICTS) +B_DEFINE_HPKG_ATTRIBUTE(32, STRING, "package:freshens", PACKAGE_FRESHENS) +B_DEFINE_HPKG_ATTRIBUTE(33, STRING, "package:replaces", PACKAGE_REPLACES) +B_DEFINE_HPKG_ATTRIBUTE(34, UINT, "package:resolvable.operator", + PACKAGE_RESOLVABLE_OPERATOR) +B_DEFINE_HPKG_ATTRIBUTE(35, STRING, "package:checksum", PACKAGE_CHECKSUM) +B_DEFINE_HPKG_ATTRIBUTE(36, STRING, "package:version.prerelease", + PACKAGE_VERSION_PRE_RELEASE) +B_DEFINE_HPKG_ATTRIBUTE(37, STRING, "package:provides.compatible", + PACKAGE_PROVIDES_COMPATIBLE) +B_DEFINE_HPKG_ATTRIBUTE(38, STRING, "package:url", PACKAGE_URL) +B_DEFINE_HPKG_ATTRIBUTE(39, STRING, "package:source-url", PACKAGE_SOURCE_URL) +B_DEFINE_HPKG_ATTRIBUTE(40, STRING, "package:install-path", + PACKAGE_INSTALL_PATH) +B_DEFINE_HPKG_ATTRIBUTE(41, STRING, "package:base-package", + PACKAGE_BASE_PACKAGE) +B_DEFINE_HPKG_ATTRIBUTE(42, STRING, "package:global-settings-file", + PACKAGE_GLOBAL_SETTINGS_FILE) +B_DEFINE_HPKG_ATTRIBUTE(43, STRING, "package:user-settings-file", + PACKAGE_USER_SETTINGS_FILE) +B_DEFINE_HPKG_ATTRIBUTE(44, UINT, "package:settings-file-update-type", + PACKAGE_SETTINGS_FILE_UPDATE_TYPE) +B_DEFINE_HPKG_ATTRIBUTE(45, STRING, "package:settings-file-template", + PACKAGE_SETTINGS_FILE_TEMPLATE) diff --git a/src/kits/package/hpkg/PackageContentHandler.cpp b/src/kits/package/hpkg/PackageContentHandler.cpp index 584af3cb77..6075900b7e 100644 --- a/src/kits/package/hpkg/PackageContentHandler.cpp +++ b/src/kits/package/hpkg/PackageContentHandler.cpp @@ -16,49 +16,12 @@ namespace BHPKG { static const char* kAttributeNames[B_HPKG_ATTRIBUTE_ID_ENUM_COUNT + 1] = { - "dir:entry", - "file:type", - "file:permissions", - "file:user", - "file:group", - "file:atime", - "file:mtime", - "file:crtime", - "file:atime:nanos", - "file:mtime:nanos", - "file:crtime:nanos", - "file:attribute", - "file:attribute:type", - "data", - "symlink:path", - "package:name", - "package:summary", - "package:description", - "package:vendor", - "package:packager", - "package:flags", - "package:architecture", - "package:version.major", - "package:version.minor", - "package:version.micro", - "package:version.revision", - "package:copyright", - "package:license", - "package:provides", - "package:requires", - "package:supplements", - "package:conflicts", - "package:freshens", - "package:replaces", - "package:resolvable.operator", - "package:checksum", - "package:version.prerelease", - "package:provides.compatible", - "package:url", - "package:source-url", - "package:install-path", - "package:base-package", - NULL + #define B_DEFINE_HPKG_ATTRIBUTE(id, type, name, constant) \ + name, + #include + #undef B_DEFINE_HPKG_ATTRIBUTE + // + NULL // B_HPKG_ATTRIBUTE_ID_ENUM_COUNT };