ViewVC Help
View File | Revision Log | View Changeset | Root Listing
root/Oni2/AE/Installer/trunk/source/installer.cpp
(Generate patch)

Comparing AE/Installer/trunk/source/installer.cpp (file contents):
Revision 504 by gumby, Sat Mar 27 03:48:25 2010 UTC vs.
Revision 505 by gumby, Sat Mar 27 14:17:32 2010 UTC

# Line 349 | Line 349 | vector<ModPackage> getPackages(string pa
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
# Line 373 | Line 373 | vector<ModPackage> getPackages(string pa
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.
# Line 383 | Line 383 | ModPackage fileToModPackage(fstream &fil
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);
# Line 425 | Line 428 | ModPackage fileToModPackage(fstream &fil
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++;
# Line 442 | Line 450 | ModPackage fileToModPackage(fstream &fil
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))
# Line 975 | Line 983 | int GetUpdateStatus(Install_info_cfg *cu
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                          {
# Line 987 | Line 995 | int GetUpdateStatus(Install_info_cfg *cu
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                          {
# Line 1269 | Line 1277 | bool ProcessInstallerUpdate(Install_info
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));                  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)