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 20180714 28 29 /* The version string 30 */ 31 #define LIBPFF_VERSION_STRING "20180714" 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 */ 38 enum 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 */ 55 enum 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 */ 63 enum 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 */ 72 enum 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 */ 81 enum 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 */ 121 enum 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 */ 157 enum 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 */ 167 enum 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 */ 175 enum 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 */ 183 enum 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