(file) Return to FileSystem.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/FileSystem.cpp between version 1.40 and 1.40.2.1

version 1.40, 2002/09/11 19:11:54 version 1.40.2.1, 2002/10/28 15:43:21
Line 34 
Line 34 
 #include <Pegasus/Common/System.h> #include <Pegasus/Common/System.h>
 #include "Destroyer.h" #include "Destroyer.h"
 #include "FileSystem.h" #include "FileSystem.h"
   #include "System.h"
 #include "Dir.h" #include "Dir.h"
  
 PEGASUS_NAMESPACE_BEGIN PEGASUS_NAMESPACE_BEGIN
  
 // Clone the path as a C String but discard trailing slash if any: // Clone the path as a C String but discard trailing slash if any:
  
 static CString _clonePath(const String& path)  static char* _clonePath(const String& path)
 { {
     String clone = path;      char* p = path.allocateCString();
  
     if (clone.size() && clone[clone.size()-1] == '/')      if (!*p)
         clone.remove(clone.size()-1);          return p;
  
     return clone.getCString();      char* last = p + path.size() - 1;
   
       if (*last == '/')
           *last = '\0';
   
       return p;
 } }
  
 Boolean FileSystem::exists(const String& path) Boolean FileSystem::exists(const String& path)
 { {
     return System::exists(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::exists(p.getPointer());
 } }
  
 Boolean FileSystem::getCurrentDirectory(String& path) Boolean FileSystem::getCurrentDirectory(String& path)
Line 70 
Line 77 
 Boolean FileSystem::existsNoCase(const String& path, String& realPath) Boolean FileSystem::existsNoCase(const String& path, String& realPath)
 { {
     realPath.clear();     realPath.clear();
     CString cpath = _clonePath(path);      ArrayDestroyer<char> destroyer(_clonePath(path));
     const char* p = cpath;      char* p = destroyer.getPointer();
  
     const char* dirPath;     const char* dirPath;
     const char* fileName;      char* fileName;
     char* slash = (char *) strrchr(p, '/');      char* slash = strrchr(p, '/');
  
     if (slash)     if (slash)
     {     {
Line 95 
Line 102 
  
     for (Dir dir(dirPath); dir.more(); dir.next())     for (Dir dir(dirPath); dir.more(); dir.next())
     {     {
         if (System::strcasecmp(fileName, dir.getName()) == 0)          if (CompareNoCase(fileName, dir.getName()) == 0)
         {         {
             if (strcmp(dirPath, ".") == 0)             if (strcmp(dirPath, ".") == 0)
                 realPath = dir.getName();                 realPath = dir.getName();
             else             else
             {             {
                 realPath = dirPath;                 realPath = dirPath;
                 realPath.append('/');                  realPath += '/';
                 realPath.append(dir.getName());                  realPath += dir.getName();
             }             }
             return true;             return true;
         }         }
Line 114 
Line 121 
  
 Boolean FileSystem::canRead(const String& path) Boolean FileSystem::canRead(const String& path)
 { {
     return System::canRead(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::canRead(p.getPointer());
 } }
  
 Boolean FileSystem::canWrite(const String& path) Boolean FileSystem::canWrite(const String& path)
 { {
     return System::canWrite(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::canWrite(p.getPointer());
 } }
  
 Boolean FileSystem::getFileSize(const String& path, Uint32& size) Boolean FileSystem::getFileSize(const String& path, Uint32& size)
 { {
     return System::getFileSize(_clonePath(path), size);      ArrayDestroyer<char> p(_clonePath(path));
       return System::getFileSize(p.getPointer(), size);
 } }
  
 Boolean FileSystem::removeFile(const String& path) Boolean FileSystem::removeFile(const String& path)
 { {
     return System::removeFile(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::removeFile(p.getPointer());
 } }
  
 void FileSystem::loadFileToMemory( void FileSystem::loadFileToMemory(
Line 141 
Line 152 
     if (!getFileSize(fileName, fileSize))     if (!getFileSize(fileName, fileSize))
         throw CannotOpenFile(fileName);         throw CannotOpenFile(fileName);
  
     FILE* fp = fopen(fileName.getCString(), "rb");      char* tmp = fileName.allocateCString();
       FILE* fp = fopen(tmp, "rb");
       delete [] tmp;
  
     if (fp == NULL)     if (fp == NULL)
         throw CannotOpenFile(fileName);         throw CannotOpenFile(fileName);
Line 173 
Line 186 
     if (fileSize1 != fileSize2)     if (fileSize1 != fileSize2)
         return false;         return false;
  
     FILE* fp1 = fopen(path1.getCString(), "rb");      char* tmp1 = path1.allocateCString();
       FILE* fp1 = fopen(tmp1, "rb");
       delete [] tmp1;
  
     if (fp1 == NULL)     if (fp1 == NULL)
         throw CannotOpenFile(path1);         throw CannotOpenFile(path1);
  
     FILE* fp2 = fopen(path2.getCString(), "rb");      char* tmp2 = path2.allocateCString();
       FILE* fp2 = fopen(tmp2, "rb");
       delete [] tmp2;
  
     if (fp2 == NULL)     if (fp2 == NULL)
     {     {
Line 208 
Line 225 
     const String& oldPath,     const String& oldPath,
     const String& newPath)     const String& newPath)
 { {
     return System::renameFile(oldPath.getCString(), newPath.getCString());      ArrayDestroyer<char> p(oldPath.allocateCString());
       ArrayDestroyer<char> q(newPath.allocateCString());
       return System::renameFile(p.getPointer(), q.getPointer());
 } }
  
 Boolean FileSystem::copyFile( Boolean FileSystem::copyFile(
     const String& fromPath,     const String& fromPath,
     const String& toPath)     const String& toPath)
 { {
     return System::copyFile(fromPath.getCString(), toPath.getCString());      ArrayDestroyer<char> p(fromPath.allocateCString());
       ArrayDestroyer<char> q(toPath.allocateCString());
       return System::copyFile(p.getPointer(), q.getPointer());
 } }
  
 Boolean FileSystem::openNoCase(PEGASUS_STD(ifstream)& is, const String& path) Boolean FileSystem::openNoCase(PEGASUS_STD(ifstream)& is, const String& path)
Line 225 
Line 246 
     if (!existsNoCase(path, realPath))     if (!existsNoCase(path, realPath))
         return false;         return false;
  
     is.open(_clonePath(realPath) PEGASUS_IOS_BINARY);      ArrayDestroyer<char> p(_clonePath(realPath));
   
       is.open(p.getPointer() PEGASUS_IOS_BINARY);
     return !!is;     return !!is;
 } }
  
Line 239 
Line 262 
     if (!existsNoCase(path, realPath))     if (!existsNoCase(path, realPath))
         return false;         return false;
  
     fs.open(_clonePath(realPath), mode);      ArrayDestroyer<char> p(_clonePath(realPath));
   
       fs.open(p.getPointer(), mode);
     return !!fs;     return !!fs;
 } }
  
 Boolean FileSystem::isDirectory(const String& path) Boolean FileSystem::isDirectory(const String& path)
 { {
     return System::isDirectory(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::isDirectory(p.getPointer());
 } }
  
 Boolean FileSystem::changeDirectory(const String& path) Boolean FileSystem::changeDirectory(const String& path)
 { {
     return System::changeDirectory(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::changeDirectory(p.getPointer());
 } }
  
 Boolean FileSystem::makeDirectory(const String& path) Boolean FileSystem::makeDirectory(const String& path)
 { {
     return System::makeDirectory(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::makeDirectory(p.getPointer());
 } }
  
 Boolean FileSystem::removeDirectory(const String& path) Boolean FileSystem::removeDirectory(const String& path)
 { {
     return System::removeDirectory(_clonePath(path));      ArrayDestroyer<char> p(_clonePath(path));
       return System::removeDirectory(p.getPointer());
 } }
  
 Boolean FileSystem::removeDirectoryHier(const String& path) Boolean FileSystem::removeDirectoryHier(const String& path)


Legend:
Removed from v.1.40  
changed lines
  Added in v.1.40.2.1

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2