fe707a23fc
Global and user settings files can be declared. For global ones an update policy can be specified. If not specified, the settings file is not included in the package, but created by the program (or user) later. If an update type is specified, it defines what to do with the settings file when updating the package to a newer version. User settings files are never included in the package; they are always created by the program or the user. If the package contains a template/ default settings file, it can be declared, but for informative purposes only.
196 lines
5.5 KiB
C++
196 lines
5.5 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_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,
|
|
//
|
|
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_
|