Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5335 in orxonox.OLD for trunk/src/util/resource_manager.cc


Ignore:
Timestamp:
Oct 9, 2005, 1:27:58 AM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: more fool-proov loading of important paths (data and image)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/util/resource_manager.cc

    r5334 r5335  
    6060  this->dataDir = NULL;
    6161  this->setDataDir("./");
    62   this->imageDirs = new tList<char>();
    63   this->resourceList = new tList<Resource>();
     62  this->imageDirs = new tList<char>;
     63  this->resourceList = new tList<Resource>;
    6464}
    6565
     
    105105    {
    106106      delete[] this->dataDir;
    107       this->dataDir = new char[strlen(realDir)+1];
    108       strcpy(this->dataDir, realDir);
     107      if (dataDir[strlen(dataDir)-1] == '/' || dataDir[strlen(dataDir)-1] == '\\')
     108      {
     109        this->dataDir = new char[strlen(realDir)+1];
     110        strcpy(this->dataDir, realDir);
     111      }
     112      else
     113      {
     114        this->dataDir = new char[strlen(realDir)+2];
     115        strcpy(this->dataDir, realDir);
     116        this->dataDir[strlen(realDir)] = '/';
     117        this->dataDir[strlen(realDir)+1] = '\0';
     118      }
    109119      delete[] realDir;
    110120      return true;
     
    147157bool ResourceManager::addImageDir(const char* imageDir)
    148158{
     159  if (imageDir == NULL)
     160    return false;
     161
     162  char* newDir;
     163  if (imageDir[strlen(imageDir)-1] == '/' || imageDir[strlen(imageDir)-1] == '\\')
     164  {
     165    newDir = new char[strlen(imageDir)+1];
     166    strcpy(newDir, imageDir);
     167  }
     168  else
     169  {
     170    newDir = new char[strlen(imageDir)+2];
     171    strcpy(newDir, imageDir);
     172    newDir[strlen(imageDir)] = '/';
     173    newDir[strlen(imageDir)+1] = '\0';
     174  }
    149175  // check if the param is a Directory
    150   if (isDir(imageDir))
     176  if (isDir(newDir))
    151177    {
    152178      // check if the Directory has been added before
     
    155181      while(tmpDir)
    156182        {
    157           if (!strcmp(tmpDir, imageDir))
     183          if (!strcmp(tmpDir, newDir))
    158184            {
    159               PRINTF(4)("Path %s already loaded\n", imageDir);
     185              PRINTF(3)("Path %s already loaded\n", newDir);
     186              delete[] newDir;
    160187              delete tmpImageDirs;
    161188              return true;
     
    166193
    167194      // adding the directory to the List
    168       tmpDir  = new char[strlen(imageDir)+1];
    169       strcpy(tmpDir, imageDir);
    170       this->imageDirs->add(tmpDir);
     195      this->imageDirs->add(newDir);
    171196      return true;
    172197    }
    173198  else
    174199    {
    175       PRINTF(1)("%s is not a Directory, and can not be added to the Paths of Images\n", dataDir);
     200      PRINTF(1)("%s is not a Directory, and can not be added to the Paths of Images\n", newDir);
     201      delete[] newDir;
    176202      return false;
    177203    }
     
    660686      directoryName[strlen(directoryName)-1] == '\\')
    661687    {
    662       tmpDirName = new char[strlen(directoryName)+1];
     688      tmpDirName = new char[strlen(directoryName)];
    663689      strncpy(tmpDirName, directoryName, strlen(directoryName)-1);
    664690      tmpDirName[strlen(directoryName)-1] = '\0';
     
    800826char* ResourceManager::getFullName(const char* fileName)
    801827{
    802   if (fileName == NULL)
     828  if (fileName == NULL || ResourceManager::getInstance()->getDataDir() == NULL)
    803829    return NULL;
    804830
     
    813839      return NULL;
    814840    }
     841}
     842
     843
     844/**
     845 * checks wether a file is in the DataDir.
     846 * @param fileName the File to check if it is in the Data-Dir structure.
     847 * @returns true if the file exists, false otherwise
     848 */
     849bool ResourceManager::isInDataDir(const char* fileName)
     850{
     851  if (fileName == NULL || ResourceManager::getInstance()->getDataDir() == NULL)
     852    return false;
     853
     854  bool retVal = false;
     855  char* checkFile = new char[strlen(ResourceManager::getInstance()->getDataDir())
     856      + strlen(fileName) + 1];
     857  sprintf(checkFile, "%s%s", ResourceManager::getInstance()->getDataDir(), fileName);
     858
     859  if (ResourceManager::isFile(checkFile) || ResourceManager::isDir(checkFile))
     860    retVal = true;
     861  else
     862    retVal = false;
     863  delete[] checkFile;
     864  return retVal;
    815865}
    816866
Note: See TracChangeset for help on using the changeset viewer.