install-ds.h (7717B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 #ifndef INSTALL_DS_H 6 #define INSTALL_DS_H 7 8 #include <stdio.h> 9 #include <prio.h> 10 #include <prmem.h> 11 12 extern PRFileDesc* Pk11Install_FD; 13 extern int Pk11Install_yylex(); 14 extern int Pk11Install_yylinenum; 15 extern char* Pk11Install_yyerrstr; 16 17 typedef enum { STRING_VALUE, 18 PAIR_VALUE } ValueType; 19 20 typedef struct Pk11Install_Pair_str Pk11Install_Pair; 21 typedef union Pk11Install_Pointer_str Pk11Install_Pointer; 22 typedef struct Pk11Install_Value_str Pk11Install_Value; 23 typedef struct Pk11Install_ValueList_str Pk11Install_ValueList; 24 typedef struct Pk11Install_ListIter_str Pk11Install_ListIter; 25 typedef struct Pk11Install_File_str Pk11Install_File; 26 typedef struct Pk11Install_PlatformName_str Pk11Install_PlatformName; 27 typedef struct Pk11Install_Platform_str Pk11Install_Platform; 28 typedef struct Pk11Install_Info_str Pk11Install_Info; 29 30 extern Pk11Install_Pointer Pk11Install_yylval; 31 extern Pk11Install_ValueList* Pk11Install_valueList; 32 33 /* 34 ////////////////////////////////////////////////////////////////////////// 35 // Pk11Install_Pair 36 ////////////////////////////////////////////////////////////////////////// 37 */ 38 39 struct Pk11Install_Pair_str { 40 char* key; 41 Pk11Install_ValueList* list; 42 }; 43 44 Pk11Install_Pair* 45 Pk11Install_Pair_new_default(); 46 Pk11Install_Pair* 47 Pk11Install_Pair_new(char* _key, Pk11Install_ValueList* _list); 48 void 49 Pk11Install_Pair_delete(Pk11Install_Pair* _this); 50 void 51 Pk11Install_Pair_Print(Pk11Install_Pair* _this, int pad); 52 53 /* 54 ////////////////////////////////////////////////////////////////////////// 55 // Pk11Install_Pointer 56 ////////////////////////////////////////////////////////////////////////// 57 */ 58 union Pk11Install_Pointer_str { 59 Pk11Install_ValueList* list; 60 Pk11Install_Value* value; 61 Pk11Install_Pair* pair; 62 char* string; 63 }; 64 65 /* 66 ////////////////////////////////////////////////////////////////////////// 67 // Pk11Install_Value 68 ////////////////////////////////////////////////////////////////////////// 69 */ 70 struct Pk11Install_Value_str { 71 72 ValueType type; 73 char* string; 74 Pk11Install_Pair* pair; 75 struct Pk11Install_Value_str* next; 76 }; 77 78 Pk11Install_Value* 79 Pk11Install_Value_new_default(); 80 Pk11Install_Value* 81 Pk11Install_Value_new(ValueType _type, Pk11Install_Pointer ptr); 82 void 83 Pk11Install_Value_delete(Pk11Install_Value* _this); 84 void 85 Pk11Install_Value_Print(Pk11Install_Value* _this, int pad); 86 87 /* 88 ////////////////////////////////////////////////////////////////////////// 89 // Pk11Install_ValueList 90 ////////////////////////////////////////////////////////////////////////// 91 */ 92 struct Pk11Install_ValueList_str { 93 int numItems; 94 int numPairs; 95 int numStrings; 96 Pk11Install_Value* head; 97 }; 98 99 Pk11Install_ValueList* 100 Pk11Install_ValueList_new(); 101 void 102 Pk11Install_ValueList_delete(Pk11Install_ValueList* _this); 103 void 104 Pk11Install_ValueList_AddItem(Pk11Install_ValueList* _this, 105 Pk11Install_Value* item); 106 void 107 Pk11Install_ValueList_Print(Pk11Install_ValueList* _this, int pad); 108 109 /* 110 ////////////////////////////////////////////////////////////////////////// 111 // Pk11Install_ListIter 112 ////////////////////////////////////////////////////////////////////////// 113 */ 114 struct Pk11Install_ListIter_str { 115 const Pk11Install_ValueList* list; 116 Pk11Install_Value* current; 117 }; 118 119 Pk11Install_ListIter* 120 Pk11Install_ListIter_new_default(); 121 void 122 Pk11Install_ListIter_init(Pk11Install_ListIter* _this); 123 Pk11Install_ListIter* 124 Pk11Install_ListIter_new(const Pk11Install_ValueList* _list); 125 void 126 Pk11Install_ListIter_delete(Pk11Install_ListIter** _this); 127 void 128 Pk11Install_ListIter_reset(Pk11Install_ListIter* _this); 129 Pk11Install_Value* 130 Pk11Install_ListIter_nextItem(Pk11Install_ListIter* _this); 131 132 /************************************************************************ 133 * 134 * Pk11Install_File 135 */ 136 struct Pk11Install_File_str { 137 char* jarPath; 138 char* relativePath; 139 char* absolutePath; 140 PRBool executable; 141 int permissions; 142 }; 143 144 Pk11Install_File* 145 Pk11Install_File_new(); 146 void 147 Pk11Install_File_init(Pk11Install_File* _this); 148 void 149 Pk11Install_file_delete(Pk11Install_File* _this); 150 /*// Parses a syntax tree to obtain all attributes. 151 // Returns NULL for success, error message if parse error.*/ 152 char* 153 Pk11Install_File_Generate(Pk11Install_File* _this, 154 const Pk11Install_Pair* pair); 155 void 156 Pk11Install_File_Print(Pk11Install_File* _this, int pad); 157 void 158 Pk11Install_File_Cleanup(Pk11Install_File* _this); 159 160 /************************************************************************ 161 * 162 * Pk11Install_PlatformName 163 */ 164 struct Pk11Install_PlatformName_str { 165 char* OS; 166 char** verString; 167 int numDigits; 168 char* arch; 169 }; 170 171 Pk11Install_PlatformName* 172 Pk11Install_PlatformName_new(); 173 void 174 Pk11Install_PlatformName_init(Pk11Install_PlatformName* _this); 175 void 176 Pk11Install_PlatformName_delete(Pk11Install_PlatformName* _this); 177 char* 178 Pk11Install_PlatformName_Generate(Pk11Install_PlatformName* _this, 179 const char* str); 180 char* 181 Pk11Install_PlatformName_GetString(Pk11Install_PlatformName* _this); 182 char* 183 Pk11Install_PlatformName_GetVerString(Pk11Install_PlatformName* _this); 184 void 185 Pk11Install_PlatformName_Print(Pk11Install_PlatformName* _this, int pad); 186 void 187 Pk11Install_PlatformName_Cleanup(Pk11Install_PlatformName* _this); 188 PRBool 189 Pk11Install_PlatformName_equal(Pk11Install_PlatformName* _this, 190 Pk11Install_PlatformName* cmp); 191 PRBool 192 Pk11Install_PlatformName_lteq(Pk11Install_PlatformName* _this, 193 Pk11Install_PlatformName* cmp); 194 PRBool 195 Pk11Install_PlatformName_lt(Pk11Install_PlatformName* _this, 196 Pk11Install_PlatformName* cmp); 197 198 /************************************************************************ 199 * 200 * Pk11Install_Platform 201 */ 202 struct Pk11Install_Platform_str { 203 Pk11Install_PlatformName name; 204 Pk11Install_PlatformName equivName; 205 struct Pk11Install_Platform_str* equiv; 206 PRBool usesEquiv; 207 char* moduleFile; 208 char* moduleName; 209 int modFile; 210 unsigned long mechFlags; 211 unsigned long cipherFlags; 212 Pk11Install_File* files; 213 int numFiles; 214 }; 215 216 Pk11Install_Platform* 217 Pk11Install_Platform_new(); 218 void 219 Pk11Install_Platform_init(Pk11Install_Platform* _this); 220 void 221 Pk11Install_Platform_delete(Pk11Install_Platform* _this); 222 /*// Returns NULL for success, error message if parse error.*/ 223 char* 224 Pk11Install_Platform_Generate(Pk11Install_Platform* _this, 225 const Pk11Install_Pair* pair); 226 void 227 Pk11Install_Platform_Print(Pk11Install_Platform* _this, int pad); 228 void 229 Pk11Install_Platform_Cleanup(Pk11Install_Platform* _this); 230 231 /************************************************************************ 232 * 233 * Pk11Install_Info 234 */ 235 struct Pk11Install_Info_str { 236 Pk11Install_Platform* platforms; 237 int numPlatforms; 238 Pk11Install_PlatformName* forwardCompatible; 239 int numForwardCompatible; 240 }; 241 242 Pk11Install_Info* 243 Pk11Install_Info_new(); 244 void 245 Pk11Install_Info_init(Pk11Install_Info* _this); 246 void 247 Pk11Install_Info_delete(Pk11Install_Info* _this); 248 /*// Returns NULL for success, error message if parse error.*/ 249 char* 250 Pk11Install_Info_Generate(Pk11Install_Info* _this, 251 const Pk11Install_ValueList* list); 252 /*// Returns NULL if there is no matching platform*/ 253 Pk11Install_Platform* 254 Pk11Install_Info_GetBestPlatform(Pk11Install_Info* _this, char* myPlatform); 255 void 256 Pk11Install_Info_Print(Pk11Install_Info* _this, int pad); 257 void 258 Pk11Install_Info_Cleanup(Pk11Install_Info* _this); 259 260 #endif /* INSTALL_DS_H */