| 349 | 
   | 
                          | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 350 | 
   | 
                         if (!file.fail()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 351 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 | 352 | 
 < | 
                                 package = fileToModPackage(file); | 
 
 
 
 
 
 
 
 
 
 | 352 | 
 > | 
                                 package = fileToModPackage(file, dir_itr->path().filename()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 353 | 
   | 
                                 if (package.installerVersion.compare(INSTALLER_VERSION) < 1)  // if mod requires newer version of the Installer, we won't add it to the list | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 354 | 
   | 
                                 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 355 | 
   | 
 #ifdef WIN32 | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 373 | 
   | 
         return packages; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 374 | 
   | 
 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 375 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 | 376 | 
 < | 
 ModPackage fileToModPackage(fstream &file) | 
 
 
 
 
 
 
 
 
 
 | 376 | 
 > | 
 ModPackage fileToModPackage(fstream &file, string modName) | 
 
 
 
 
 
 
 
 
 
 
 
 | 377 | 
   | 
 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 378 | 
   | 
         /* | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 379 | 
   | 
          This converts a file to a ModPackage struct. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 383 | 
   | 
          I refer to (*iter) at the beginning of each if statement block. I could probably store it as a variable, but I'm pretty sure that dereferencing a pointer\iterator isn't much | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 384 | 
   | 
          slower than reading a variable. | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 385 | 
   | 
          */ | 
 
 
 
 
 
 
 
 
 | 386 | 
 + | 
          | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 387 | 
   | 
         ModPackage package; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 388 | 
   | 
         string line; | 
 
 
 
 
 
 
 
 
 
 
 
 | 389 | 
 < | 
         static string AEInstallVersion = "AEInstallVersion"; // used for comparing to the current token... | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 390 | 
 < | 
         static string NameOfMod = "NameOfMod"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 391 | 
 < | 
         static string ARROW = "->"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 392 | 
 < | 
         static string ModString = "ModString"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 393 | 
 < | 
         static string Platform = "Platform"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 394 | 
 < | 
         static string HasOnis = "HasOnis"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 395 | 
 < | 
         static string HasDeltas = "HasDeltas"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 396 | 
 < | 
         static string HasBSL = "HasBSL"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 397 | 
 < | 
         static string HasDats = "HasDats"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 398 | 
 < | 
         static string IsEngine = "IsEngine"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 399 | 
 < | 
         static string Readme = "Readme"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 400 | 
 < | 
         static string GlobalNeeded = "GlobalNeeded"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 401 | 
 < | 
         static string Category = "Category"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 402 | 
 < | 
         static string Creator = "Creator"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 389 | 
 > | 
         const string AEInstallVersion = "AEInstallVersion"; // used for comparing to the current token... | 
 
 
 
 
 
 | 390 | 
 > | 
         const string NameOfMod = "NameOfMod"; | 
 
 
 
 
 
 | 391 | 
 > | 
         const string ARROW = "->"; | 
 
 
 
 
 
 | 392 | 
 > | 
         const string ModString = "ModString"; | 
 
 
 
 
 
 | 393 | 
 > | 
         const string ModVersion = "ModVersion"; | 
 
 
 
 
 
 | 394 | 
 > | 
         const string Platform = "Platform"; | 
 
 
 
 
 
 | 395 | 
 > | 
         const string HasOnis = "HasOnis"; | 
 
 
 
 
 
 | 396 | 
 > | 
         const string HasDeltas = "HasDeltas"; | 
 
 
 
 
 
 | 397 | 
 > | 
         const string HasBSL = "HasBSL"; | 
 
 
 
 
 
 | 398 | 
 > | 
         const string HasDats = "HasDats"; | 
 
 
 
 
 
 | 399 | 
 > | 
         const string IsEngine = "IsEngine"; | 
 
 
 
 
 
 | 400 | 
 > | 
         const string Readme = "Readme"; | 
 
 
 
 
 
 | 401 | 
 > | 
         const string GlobalNeeded = "GlobalNeeded"; | 
 
 
 
 
 
 | 402 | 
 > | 
         const string Category = "Category"; | 
 
 
 
 
 
 | 403 | 
 > | 
         const string Creator = "Creator"; | 
 
 
 
 
 
 | 404 | 
 > | 
         package.modStringName = modName; | 
 
 
 
 
 
 
 
 
 
 
 
 | 405 | 
   | 
         while (!file.eof()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 406 | 
   | 
         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 407 | 
   | 
                 getline(file,line); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 428 | 
   | 
                         else if (!ModString.compare(*iter)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 429 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 430 | 
   | 
                                 iter++; iter++; | 
 
 
 
 
 
 
 
 
 
 
 
 | 431 | 
 < | 
                                 package.modStringName = *iter; | 
 
 
 
 
 
 
 
 
 
 | 431 | 
 > | 
                                 //package.modStringName = *iter; | 
 
 
 
 
 
 
 
 
 
 
 
 | 432 | 
   | 
                                 iter++; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 433 | 
   | 
                                 package.modStringVersion = atof((*iter).c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 434 | 
   | 
                         } | 
 
 
 
 
 
 
 
 
 | 435 | 
 + | 
                         else if (!ModString.compare(*iter)) | 
 
 
 
 
 
 
 
 
 | 436 | 
 + | 
                         { | 
 
 
 
 
 
 
 
 
 | 437 | 
 + | 
                                 iter++; iter++; | 
 
 
 
 
 
 
 
 
 | 438 | 
 + | 
                                 package.modStringVersion = atof((*iter).c_str()); | 
 
 
 
 
 
 
 
 
 | 439 | 
 + | 
                         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 440 | 
   | 
                         else if (!Platform.compare(*iter)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 441 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 442 | 
   | 
                                 iter++; iter++; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 450 | 
   | 
                         else if (!HasBSL.compare(*iter)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 451 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 452 | 
   | 
                                 iter++; iter++; | 
 
 
 
 
 
 
 
 
 
 
 
 | 453 | 
 < | 
                                 if (toupper((*iter)[0]) == 'Y' && toupper((*iter)[1]) == 'E' && toupper((*iter)[2]) == 'S') package.hasBSL = true; | 
 
 
 
 
 
 
 
 
 
 | 453 | 
 > | 
                                 if (boost::iequals(*iter, "Yes")) package.hasBSL = true; | 
 
 
 
 
 
 
 
 
 
 
 
 | 454 | 
   | 
                                 else if (boost::iequals(*iter, "Addon")) package.hasAddon = true; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 455 | 
   | 
                         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 456 | 
   | 
                         else if (!HasDeltas.compare(*iter)) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 983 | 
   | 
                         file.open( (install_iter->path().string() + "/Mod_Info.cfg").c_str());   | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 984 | 
   | 
                         if (!file.fail()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 985 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 | 986 | 
 < | 
                                 ModPackage updatePackage = fileToModPackage(file); | 
 
 
 
 
 
 
 
 
 
 | 986 | 
 > | 
                                 ModPackage updatePackage = fileToModPackage(file, install_iter->path().filename()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 987 | 
   | 
                         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 988 | 
   | 
                         else  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 989 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 995 | 
   | 
                         file.open( ("packages" + install_iter->path().filename() + "/Mod_Info.cfg").c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 996 | 
   | 
                         if (!file.fail()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 997 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 | 998 | 
 < | 
                                 ModPackage installedPackage = fileToModPackage(file); | 
 
 
 
 
 
 
 
 
 
 | 998 | 
 > | 
                                 ModPackage installedPackage = fileToModPackage(file, install_iter->path().filename()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 999 | 
   | 
                         } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1000 | 
   | 
                         else | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1001 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1277 | 
   | 
 void CrawlPackages(string pathToUpdate, string strPathToPackages) { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1278 | 
   | 
         try{ | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1279 | 
   | 
                 directory_iterator end; | 
 
 
 
 
 
 
 
 
 
 
 
 | 1280 | 
 < | 
                 for ( directory_iterator install_iter( pathToUpdate ); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1281 | 
 < | 
                         install_iter != end; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1282 | 
 < | 
                         ++install_iter ) | 
 
 
 
 
 
 
 
 
 
 | 1280 | 
 > | 
                 for ( directory_iterator update_iter( pathToUpdate ); | 
 
 
 
 
 
 | 1281 | 
 > | 
                         update_iter != end; | 
 
 
 
 
 
 | 1282 | 
 > | 
                         ++update_iter ) | 
 
 
 
 
 
 
 
 
 
 
 
 | 1283 | 
   | 
                 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1284 | 
   | 
  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1285 | 
   | 
                         ModPackage installedPackage, updatePackage; | 
 
 
 
 
 
 
 
 
 
 
 
 | 1286 | 
 < | 
                         string updateStr = install_iter->path().string() + "/Mod_Info.cfg"; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1287 | 
 < | 
                         if ( !boost::iequals(install_iter->path().filename(),"Edition") | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1288 | 
 < | 
                                 && !boost::iequals(install_iter->path().filename(),"Edition-patch") | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1289 | 
 < | 
                                 && is_directory( install_iter->path() )  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1290 | 
 < | 
                                 && exists( install_iter->path().string() + "/Mod_Info.cfg" ) )  | 
 
 
 
 
 
 
 
 
 
 | 1286 | 
 > | 
                         string updateStr = update_iter->path().string() + "/Mod_Info.cfg"; | 
 
 
 
 
 
 | 1287 | 
 > | 
                         if ( !boost::iequals(update_iter->path().filename(),"Edition") | 
 
 
 
 
 
 | 1288 | 
 > | 
                                 && !boost::iequals(update_iter->path().filename(),"Edition-patch") | 
 
 
 
 
 
 | 1289 | 
 > | 
                                 && is_directory( update_iter->path() )  | 
 
 
 
 
 
 | 1290 | 
 > | 
                                 && exists( update_iter->path().string() + "/Mod_Info.cfg" ) )  | 
 
 
 
 
 
 
 
 
 
 
 
 | 1291 | 
   | 
                         { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1292 | 
   | 
                                 bool update = 0; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1293 | 
   | 
                                 fstream file; | 
 
 
 
 
 
 
 
 
 
 
 
 | 1294 | 
 < | 
                                 file.open( (install_iter->path().string() + "/Mod_Info.cfg").c_str());   | 
 
 
 
 
 
 
 
 
 
 | 1294 | 
 > | 
                                 file.open( (update_iter->path().string() + "/Mod_Info.cfg").c_str());    | 
 
 
 
 
 
 
 
 
 
 
 
 | 1295 | 
   | 
                                 if (!file.fail()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1296 | 
   | 
                                 { | 
 
 
 
 
 
 
 
 
 
 
 
 | 1297 | 
 < | 
                                         updatePackage = fileToModPackage(file); | 
 
 
 
 
 
 
 
 
 
 | 1297 | 
 > | 
                                         updatePackage = fileToModPackage(file, update_iter->path().filename()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1298 | 
   | 
                                 } | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1299 | 
   | 
                                 else  | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1300 | 
   | 
                                 { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1301 | 
   | 
                                         file.close(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1302 | 
   | 
                                         continue; | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1303 | 
   | 
                                 } | 
 
 
 
 
 
 
 
 
 
 
 
 | 1304 | 
 < | 
                                 if(!exists(strPathToPackages + "/" + install_iter->path().filename() + "/Mod_Info.cfg")); | 
 
 
 
 
 
 
 
 
 
 | 1304 | 
 > | 
                                 if(!exists(strPathToPackages + "/" + update_iter->path().filename() + "/Mod_Info.cfg")); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1305 | 
   | 
                                 file.close(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1306 | 
   | 
                                 file.clear(); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1307 | 
 < | 
                                 file.open((strPathToPackages + "/" + install_iter->path().filename() + "/Mod_Info.cfg").c_str()); | 
 
 
 
 
 
 
 
 
 
 | 1307 | 
 > | 
                                 file.open((strPathToPackages + "/" + update_iter->path().filename() + "/Mod_Info.cfg").c_str()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1308 | 
   | 
                                 if (!file.fail()) | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1309 | 
   | 
                                 { | 
 
 
 
 
 
 
 
 
 
 
 
 | 1310 | 
 < | 
                                         installedPackage = fileToModPackage(file); | 
 
 
 
 
 
 
 
 
 
 | 1310 | 
 > | 
                                         installedPackage = fileToModPackage(file, update_iter->path().filename()); | 
 
 
 
 
 
 
 
 
 
 
 
 | 1311 | 
   | 
                                         file.close(); | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1312 | 
   | 
                                         if(updatePackage.modStringVersion > installedPackage.modStringVersion) { | 
 
 
 
 
 
 
 
 
 
 
 
 
 
 | 1313 | 
   | 
                                                 remove_all((path)(strPathToPackages +  "/" + installedPackage.modStringName));                   |