mirror of
https://review.haiku-os.org/haiku
synced 2025-02-03 12:16:35 +01:00
47039b852e
* Add minor_version to hpkg_header and hpkg_repo_header and make heap_compression uint16. * If the minor version of a package/repository file is greater than the current one unknown attributes are ignored without error. This allows introducing new harmless attributes without making the resulting files unreadable for older package kit versions.
192 lines
5.0 KiB
C++
192 lines
5.0 KiB
C++
/*
|
|
* Copyright 2009-2013, Haiku, Inc.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _PACKAGE__HPKG__HPKG_DEFS_H_
|
|
#define _PACKAGE__HPKG__HPKG_DEFS_H_
|
|
|
|
|
|
#include <SupportDefs.h>
|
|
|
|
|
|
namespace BPackageKit {
|
|
|
|
namespace BHPKG {
|
|
|
|
|
|
// magic & version of package and repository files
|
|
enum {
|
|
B_HPKG_MAGIC = 'hpkg',
|
|
B_HPKG_VERSION = 2,
|
|
B_HPKG_MINOR_VERSION = 0,
|
|
//
|
|
B_HPKG_REPO_MAGIC = 'hpkr',
|
|
B_HPKG_REPO_VERSION = 2,
|
|
B_HPKG_REPO_MINOR_VERSION = 0
|
|
};
|
|
|
|
|
|
// package attribute IDs
|
|
enum BHPKGPackageSectionID {
|
|
B_HPKG_SECTION_HEADER = 0,
|
|
B_HPKG_SECTION_HEAP = 1,
|
|
B_HPKG_SECTION_PACKAGE_TOC = 2,
|
|
B_HPKG_SECTION_PACKAGE_ATTRIBUTES = 3,
|
|
B_HPKG_SECTION_REPOSITORY_INFO = 4,
|
|
//
|
|
B_HPKG_SECTION_ENUM_COUNT
|
|
};
|
|
|
|
|
|
// attribute types
|
|
enum {
|
|
// types
|
|
B_HPKG_ATTRIBUTE_TYPE_INVALID = 0,
|
|
B_HPKG_ATTRIBUTE_TYPE_INT = 1,
|
|
B_HPKG_ATTRIBUTE_TYPE_UINT = 2,
|
|
B_HPKG_ATTRIBUTE_TYPE_STRING = 3,
|
|
B_HPKG_ATTRIBUTE_TYPE_RAW = 4,
|
|
//
|
|
B_HPKG_ATTRIBUTE_TYPE_ENUM_COUNT
|
|
};
|
|
|
|
|
|
// attribute encodings
|
|
enum {
|
|
// signed/unsigned int encodings
|
|
B_HPKG_ATTRIBUTE_ENCODING_INT_8_BIT = 0,
|
|
B_HPKG_ATTRIBUTE_ENCODING_INT_16_BIT = 1,
|
|
B_HPKG_ATTRIBUTE_ENCODING_INT_32_BIT = 2,
|
|
B_HPKG_ATTRIBUTE_ENCODING_INT_64_BIT = 3,
|
|
|
|
// string encodings
|
|
B_HPKG_ATTRIBUTE_ENCODING_STRING_INLINE = 0,
|
|
// null-terminated string
|
|
B_HPKG_ATTRIBUTE_ENCODING_STRING_TABLE = 1,
|
|
// unsigned LEB128 index into string table
|
|
|
|
// raw data encodings
|
|
B_HPKG_ATTRIBUTE_ENCODING_RAW_INLINE = 0,
|
|
// unsigned LEB128 size, raw bytes
|
|
B_HPKG_ATTRIBUTE_ENCODING_RAW_HEAP = 1
|
|
// unsigned LEB128 size, unsigned LEB128 offset into the heap
|
|
};
|
|
|
|
|
|
// maximum number of bytes of data to be encoded inline; more will be allocated
|
|
// on the heap
|
|
enum {
|
|
B_HPKG_MAX_INLINE_DATA_SIZE = 8
|
|
};
|
|
|
|
|
|
// name of file containing package information (in package's root folder)
|
|
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_ENUM_COUNT,
|
|
};
|
|
|
|
|
|
// compression types
|
|
enum {
|
|
B_HPKG_COMPRESSION_NONE = 0,
|
|
B_HPKG_COMPRESSION_ZLIB = 1
|
|
};
|
|
|
|
|
|
// file types (B_HPKG_ATTRIBUTE_ID_FILE_TYPE)
|
|
enum {
|
|
B_HPKG_FILE_TYPE_FILE = 0,
|
|
B_HPKG_FILE_TYPE_DIRECTORY = 1,
|
|
B_HPKG_FILE_TYPE_SYMLINK = 2
|
|
};
|
|
|
|
|
|
// default values
|
|
enum {
|
|
B_HPKG_DEFAULT_FILE_TYPE = B_HPKG_FILE_TYPE_FILE,
|
|
B_HPKG_DEFAULT_FILE_PERMISSIONS = 0644,
|
|
B_HPKG_DEFAULT_DIRECTORY_PERMISSIONS = 0755,
|
|
B_HPKG_DEFAULT_SYMLINK_PERMISSIONS = 0777
|
|
};
|
|
|
|
|
|
// Writer Init() flags
|
|
enum {
|
|
B_HPKG_WRITER_UPDATE_PACKAGE = 0x01,
|
|
// update the package (don't truncate)
|
|
B_HPKG_WRITER_FORCE_ADD = 0x02,
|
|
// when updating a pre-existing entry, don't fail, but replace the
|
|
// entry, if possible (directories will be merged, but won't replace a
|
|
// non-directory)
|
|
};
|
|
|
|
|
|
// Reader Init() flags
|
|
enum {
|
|
B_HPKG_READER_DONT_PRINT_VERSION_MISMATCH_MESSAGE = 0x01
|
|
// Fail silently when encountering a package format version mismatch.
|
|
// Don't print anything to the error output.
|
|
};
|
|
|
|
|
|
enum {
|
|
B_HPKG_COMPRESSION_LEVEL_NONE = 0,
|
|
B_HPKG_COMPRESSION_LEVEL_FASTEST = 1,
|
|
B_HPKG_COMPRESSION_LEVEL_BEST = 9
|
|
};
|
|
|
|
|
|
} // namespace BHPKG
|
|
|
|
} // namespace BPackageKit
|
|
|
|
|
|
#endif // _PACKAGE__HPKG__HPKG_DEFS_H_
|