1/* 2 * Definitions for libpff 3 * 4 * Copyright (C) 2008-2018, Joachim Metz <joachim.metz@gmail.com> 5 * 6 * Refer to AUTHORS for acknowledgements. 7 * 8 * This software is free software: you can redistribute it and/or modify 9 * it under the terms of the GNU Lesser General Public License as published by 10 * the Free Software Foundation, either version 3 of the License, or 11 * (at your option) any later version. 12 * 13 * This software is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public License 19 * along with this software. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22#if !defined( _LIBPFF_DEFINITIONS_H ) 23#define _LIBPFF_DEFINITIONS_H 24 25#include <libpff/types.h> 26 27#define LIBPFF_VERSION @VERSION@ 28 29/* The version string 30 */ 31#define LIBPFF_VERSION_STRING "@VERSION@" 32 33/* The access flags definitions 34 * bit 1 set to 1 for read access 35 * bit 2 set to 1 for write access 36 * bit 3-8 not used 37 */ 38enum LIBPFF_ACCESS_FLAGS 39{ 40 LIBPFF_ACCESS_FLAG_READ = 0x01, 41/* Reserved: not supported yet */ 42 LIBPFF_ACCESS_FLAG_WRITE = 0x02 43}; 44 45/* The file access macros 46 */ 47#define LIBPFF_OPEN_READ ( LIBPFF_ACCESS_FLAG_READ ) 48/* Reserved: not supported yet */ 49#define LIBPFF_OPEN_WRITE ( LIBPFF_ACCESS_FLAG_WRITE ) 50/* Reserved: not supported yet */ 51#define LIBPFF_OPEN_READ_WRITE ( LIBPFF_ACCESS_FLAG_READ | LIBPFF_ACCESS_FLAG_WRITE ) 52 53/* The recovery flags 54 */ 55enum LIBPFF_RECOVERY_FLAGS 56{ 57 LIBPFF_RECOVERY_FLAG_IGNORE_ALLOCATION_DATA = 0x01, 58 LIBPFF_RECOVERY_FLAG_SCAN_FOR_FRAGMENTS = 0x02 59}; 60 61/* The file types 62 */ 63enum LIBPFF_FILE_TYPES 64{ 65 LIBPFF_FILE_TYPE_32BIT = 32, 66 LIBPFF_FILE_TYPE_64BIT = 64, 67 LIBPFF_FILE_TYPE_64BIT_4K_PAGE = 65 68}; 69 70/* The file content types 71 */ 72enum LIBPFF_FILE_CONTENT_TYPES 73{ 74 LIBPFF_FILE_CONTENT_TYPE_PAB = (int) 'a', 75 LIBPFF_FILE_CONTENT_TYPE_PST = (int) 'p', 76 LIBPFF_FILE_CONTENT_TYPE_OST = (int) 'o' 77}; 78 79/* The encryption types 80 */ 81enum LIBPFF_ENCRYPTION_TYPES 82{ 83 LIBPFF_ENCRYPTION_TYPE_NONE = 0, 84 LIBPFF_ENCRYPTION_TYPE_COMPRESSIBLE = 1, 85 LIBPFF_ENCRYPTION_TYPE_HIGH = 2 86}; 87 88/* The item types 89 * These item types partially map to the message classes 90 * LIBPFF_ITEM_TYPE_UNDEFINED (initialization value) 91 * LIBPFF_ITEM_TYPE_ACTIVITY IPM.Activity 92 * LIBPFF_ITEM_TYPE_APPOINTMENT IPM.Appointment 93 * LIBPFF_ITEM_TYPE_ATTACHMENT (attachment) 94 * LIBPFF_ITEM_TYPE_ATTACHMENTS (attachments) 95 * LIBPFF_ITEM_TYPE_COMMON IPM 96 * LIBPFF_ITEM_TYPE_CONFIGURATION IPM.Configuration.* 97 * LIBPFF_ITEM_TYPE_CONFLICT_MESSAGE IPM.Conflict.Message 98 * LIBPFF_ITEM_TYPE_CONTACT IPM.Contact 99 * LIBPFF_ITEM_TYPE_DISTRIBUTION_LIST IPM.DistList 100 * LIBPFF_ITEM_TYPE_DOCUMENT IPM.Document.* 101 * LIBPFF_ITEM_TYPE_EMAIL IPM.Note, REPORT.IPM.Note.* 102 * LIBPFF_ITEM_TYPE_EMAIL_SMIME IPM.Note.SMIME.* 103 * LIBPFF_ITEM_TYPE_FAX IPM.FAX, IPM.Note.Fax 104 * LIBPFF_ITEM_TYPE_FOLDER (folder/container) 105 * LIBPFF_ITEM_TYPE_MEETING IPM.Schedule.Meeting 106 * LIBPFF_ITEM_TYPE_MMS IPM.Note.Mobile.MMS 107 * LIBPFF_ITEM_TYPE_NOTE IPM.StickyNote 108 * LIBPFF_ITEM_TYPE_POSTING_NOTE IPM.Post 109 * LIBPFF_ITEM_TYPE_RECIPIENTS (recipients) 110 * LIBPFF_ITEM_TYPE_RSS_FEED IPM.Post.RSS 111 * LIBPFF_ITEM_TYPE_SHARING IPM.Sharing.* 112 * LIBPFF_ITEM_TYPE_SMS IPM.Note.Mobile.SMS 113 * LIBPFF_ITEM_TYPE_TASK IPM.Task 114 * LIBPFF_ITEM_TYPE_TASK_REQUEST IPM.TaskRequest.* 115 * LIBPFF_ITEM_TYPE_VOICEMAIL IPM.Note.Voicemail 116 * LIBPFF_ITEM_TYPE_UNKNOWN (unknown item type, used in folder content type) 117 * 118 * Unsupported: 119 * IPM.Post 120 */ 121enum LIBPFF_ITEM_TYPES 122{ 123 LIBPFF_ITEM_TYPE_UNDEFINED, 124 LIBPFF_ITEM_TYPE_ACTIVITY, 125 LIBPFF_ITEM_TYPE_APPOINTMENT, 126 LIBPFF_ITEM_TYPE_ATTACHMENT, 127 LIBPFF_ITEM_TYPE_ATTACHMENTS, 128 LIBPFF_ITEM_TYPE_COMMON, 129 LIBPFF_ITEM_TYPE_CONFIGURATION, 130 LIBPFF_ITEM_TYPE_CONFLICT_MESSAGE, 131 LIBPFF_ITEM_TYPE_CONTACT, 132 LIBPFF_ITEM_TYPE_DISTRIBUTION_LIST, 133 LIBPFF_ITEM_TYPE_DOCUMENT, 134 LIBPFF_ITEM_TYPE_EMAIL, 135 LIBPFF_ITEM_TYPE_EMAIL_SMIME, 136 LIBPFF_ITEM_TYPE_FAX, 137 LIBPFF_ITEM_TYPE_FOLDER, 138 LIBPFF_ITEM_TYPE_MEETING, 139 LIBPFF_ITEM_TYPE_MMS, 140 LIBPFF_ITEM_TYPE_NOTE, 141 LIBPFF_ITEM_TYPE_POSTING_NOTE, 142 LIBPFF_ITEM_TYPE_RECIPIENTS, 143 LIBPFF_ITEM_TYPE_RSS_FEED, 144 LIBPFF_ITEM_TYPE_SHARING, 145 LIBPFF_ITEM_TYPE_SMS, 146 LIBPFF_ITEM_TYPE_SUB_ASSOCIATED_CONTENTS, 147 LIBPFF_ITEM_TYPE_SUB_FOLDERS, 148 LIBPFF_ITEM_TYPE_SUB_MESSAGES, 149 LIBPFF_ITEM_TYPE_TASK, 150 LIBPFF_ITEM_TYPE_TASK_REQUEST, 151 LIBPFF_ITEM_TYPE_VOICEMAIL, 152 LIBPFF_ITEM_TYPE_UNKNOWN 153}; 154 155/* The attachment types 156 */ 157enum LIBPFF_ATTACHMENT_TYPES 158{ 159 LIBPFF_ATTACHMENT_TYPE_UNDEFINED = 0, 160 LIBPFF_ATTACHMENT_TYPE_DATA = (int) 'd', 161 LIBPFF_ATTACHMENT_TYPE_ITEM = (int) 'i', 162 LIBPFF_ATTACHMENT_TYPE_REFERENCE = (int) 'r' 163}; 164 165/* The unallocated block type 166 */ 167enum LIBPFF_UNALLOCATED_BLOCK_TYPES 168{ 169 LIBPFF_UNALLOCATED_BLOCK_TYPE_DATA = (int) 'd', 170 LIBPFF_UNALLOCATED_BLOCK_TYPE_PAGE = (int) 'p' 171}; 172 173/* The name to id map entry types 174 */ 175enum LIBPFF_NAME_TO_ID_MAP_ENTRY_TYPES 176{ 177 LIBPFF_NAME_TO_ID_MAP_ENTRY_TYPE_NUMERIC = (int) 'n', 178 LIBPFF_NAME_TO_ID_MAP_ENTRY_TYPE_STRING = (int) 's' 179}; 180 181/* The entry value flags 182 */ 183enum LIBPFF_ENTRY_VALUE_FLAGS 184{ 185 LIBPFF_ENTRY_VALUE_FLAG_MATCH_ANY_VALUE_TYPE = 0x01, 186 LIBPFF_ENTRY_VALUE_FLAG_IGNORE_NAME_TO_ID_MAP = 0x02 187}; 188 189#endif /* !defined( _LIBPFF_DEFINITIONS_H ) */ 190 191