1/* 2 * Copyright 2009,2011, Haiku, Inc. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _PACKAGE__HPKG__V1__HPKG_DEFS_H_ 6#define _PACKAGE__HPKG__V1__HPKG_DEFS_H_ 7 8 9#include <SupportDefs.h> 10 11 12namespace BPackageKit { 13 14namespace BHPKG { 15 16namespace V1 { 17 18 19// magic & version of package and repository files 20enum { 21 B_HPKG_MAGIC = 'hpkg', 22 B_HPKG_VERSION = 1, 23 // 24 B_HPKG_REPO_MAGIC = 'hpkr', 25 B_HPKG_REPO_VERSION = 1 26}; 27 28 29// package attribute IDs 30enum BHPKGPackageSectionID { 31 B_HPKG_SECTION_HEADER = 0, 32 B_HPKG_SECTION_HEAP = 1, 33 B_HPKG_SECTION_PACKAGE_TOC = 2, 34 B_HPKG_SECTION_PACKAGE_ATTRIBUTES = 3, 35 B_HPKG_SECTION_REPOSITORY_INFO = 4, 36 // 37 B_HPKG_SECTION_ENUM_COUNT 38}; 39 40 41// attribute types 42enum { 43 // types 44 B_HPKG_ATTRIBUTE_TYPE_INVALID = 0, 45 B_HPKG_ATTRIBUTE_TYPE_INT = 1, 46 B_HPKG_ATTRIBUTE_TYPE_UINT = 2, 47 B_HPKG_ATTRIBUTE_TYPE_STRING = 3, 48 B_HPKG_ATTRIBUTE_TYPE_RAW = 4, 49 // 50 B_HPKG_ATTRIBUTE_TYPE_ENUM_COUNT 51}; 52 53 54// attribute encodings 55enum { 56 // signed/unsigned int encodings 57 B_HPKG_ATTRIBUTE_ENCODING_INT_8_BIT = 0, 58 B_HPKG_ATTRIBUTE_ENCODING_INT_16_BIT = 1, 59 B_HPKG_ATTRIBUTE_ENCODING_INT_32_BIT = 2, 60 B_HPKG_ATTRIBUTE_ENCODING_INT_64_BIT = 3, 61 62 // string encodings 63 B_HPKG_ATTRIBUTE_ENCODING_STRING_INLINE = 0, 64 // null-terminated string 65 B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE = 1, 66 // unsigned LEB128 index into string table 67 68 // raw data encodings 69 B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE = 0, 70 // unsigned LEB128 size, raw bytes 71 B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP = 1 72 // unsigned LEB128 size, unsigned LEB128 offset into the heap 73}; 74 75 76// maximum number of bytes of data to be encoded inline; more will be allocated 77// on the heap 78enum { 79 B_HPKG_MAX_INLINE_DATA_SIZE = 8 80}; 81 82 83// name of file containing package information (in package's root folder) 84extern const char* const B_HPKG_PACKAGE_INFO_FILE_NAME; 85 86 87// package attribute IDs 88enum BHPKGAttributeID { 89 B_HPKG_ATTRIBUTE_ID_DIRECTORY_ENTRY = 0, 90 B_HPKG_ATTRIBUTE_ID_FILE_TYPE = 1, 91 B_HPKG_ATTRIBUTE_ID_FILE_PERMISSIONS = 2, 92 B_HPKG_ATTRIBUTE_ID_FILE_USER = 3, 93 B_HPKG_ATTRIBUTE_ID_FILE_GROUP = 4, 94 B_HPKG_ATTRIBUTE_ID_FILE_ATIME = 5, 95 B_HPKG_ATTRIBUTE_ID_FILE_MTIME = 6, 96 B_HPKG_ATTRIBUTE_ID_FILE_CRTIME = 7, 97 B_HPKG_ATTRIBUTE_ID_FILE_ATIME_NANOS = 8, 98 B_HPKG_ATTRIBUTE_ID_FILE_MTIME_NANOS = 9, 99 B_HPKG_ATTRIBUTE_ID_FILE_CRTIM_NANOS = 10, 100 B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE = 11, 101 B_HPKG_ATTRIBUTE_ID_FILE_ATTRIBUTE_TYPE = 12, 102 B_HPKG_ATTRIBUTE_ID_DATA = 13, 103 B_HPKG_ATTRIBUTE_ID_DATA_SIZE = 14, 104 B_HPKG_ATTRIBUTE_ID_DATA_COMPRESSION = 15, 105 B_HPKG_ATTRIBUTE_ID_DATA_CHUNK_SIZE = 16, 106 B_HPKG_ATTRIBUTE_ID_SYMLINK_PATH = 17, 107 B_HPKG_ATTRIBUTE_ID_PACKAGE_NAME = 18, 108 B_HPKG_ATTRIBUTE_ID_PACKAGE_SUMMARY = 19, 109 B_HPKG_ATTRIBUTE_ID_PACKAGE_DESCRIPTION = 20, 110 B_HPKG_ATTRIBUTE_ID_PACKAGE_VENDOR = 21, 111 B_HPKG_ATTRIBUTE_ID_PACKAGE_PACKAGER = 22, 112 B_HPKG_ATTRIBUTE_ID_PACKAGE_FLAGS = 23, 113 B_HPKG_ATTRIBUTE_ID_PACKAGE_ARCHITECTURE = 24, 114 B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MAJOR = 25, 115 B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MINOR = 26, 116 B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_MICRO = 27, 117 B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_REVISION = 28, 118 B_HPKG_ATTRIBUTE_ID_PACKAGE_COPYRIGHT = 29, 119 B_HPKG_ATTRIBUTE_ID_PACKAGE_LICENSE = 30, 120 B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES = 31, 121 B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_TYPE = 32, 122 B_HPKG_ATTRIBUTE_ID_PACKAGE_REQUIRES = 33, 123 B_HPKG_ATTRIBUTE_ID_PACKAGE_SUPPLEMENTS = 34, 124 B_HPKG_ATTRIBUTE_ID_PACKAGE_CONFLICTS = 35, 125 B_HPKG_ATTRIBUTE_ID_PACKAGE_FRESHENS = 36, 126 B_HPKG_ATTRIBUTE_ID_PACKAGE_REPLACES = 37, 127 B_HPKG_ATTRIBUTE_ID_PACKAGE_RESOLVABLE_OPERATOR = 38, 128 B_HPKG_ATTRIBUTE_ID_PACKAGE_CHECKSUM = 39, 129 B_HPKG_ATTRIBUTE_ID_PACKAGE_VERSION_PRE_RELEASE = 40, 130 B_HPKG_ATTRIBUTE_ID_PACKAGE_PROVIDES_COMPATIBLE = 41, 131 B_HPKG_ATTRIBUTE_ID_PACKAGE_URL = 42, 132 B_HPKG_ATTRIBUTE_ID_PACKAGE_SOURCE_URL = 43, 133 B_HPKG_ATTRIBUTE_ID_PACKAGE_INSTALL_PATH = 44, 134 // 135 B_HPKG_ATTRIBUTE_ID_ENUM_COUNT, 136}; 137 138 139// compression types 140enum { 141 B_HPKG_COMPRESSION_NONE = 0, 142 B_HPKG_COMPRESSION_ZLIB = 1 143}; 144 145 146// file types (B_HPKG_ATTRIBUTE_ID_FILE_TYPE) 147enum { 148 B_HPKG_FILE_TYPE_FILE = 0, 149 B_HPKG_FILE_TYPE_DIRECTORY = 1, 150 B_HPKG_FILE_TYPE_SYMLINK = 2 151}; 152 153 154// default values 155enum { 156 B_HPKG_DEFAULT_FILE_TYPE = B_HPKG_FILE_TYPE_FILE, 157 B_HPKG_DEFAULT_FILE_PERMISSIONS = 0644, 158 B_HPKG_DEFAULT_DIRECTORY_PERMISSIONS = 0755, 159 B_HPKG_DEFAULT_SYMLINK_PERMISSIONS = 0777, 160 B_HPKG_DEFAULT_DATA_COMPRESSION = B_HPKG_COMPRESSION_NONE, 161 B_HPKG_DEFAULT_DATA_CHUNK_SIZE_ZLIB = 64 * 1024 162}; 163 164 165// Writer Init() flags 166enum { 167 B_HPKG_WRITER_UPDATE_PACKAGE = 0x01, 168 // update the package (don't truncate) 169 B_HPKG_WRITER_FORCE_ADD = 0x02, 170 // when updating a pre-existing entry, don't fail, but replace the 171 // entry, if possible (directories will be merged, but won't replace a 172 // non-directory) 173}; 174 175 176} // namespace V1 177 178} // namespace BHPKG 179 180} // namespace BPackageKit 181 182 183#endif // _PACKAGE__HPKG__V1__HPKG_DEFS_H_ 184