diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/fileaccess.cpp | 39 | ||||
| -rw-r--r-- | src/fileaccess.h | 2 | ||||
| -rw-r--r-- | src/kdiff3_part.cpp | 19 | 
3 files changed, 50 insertions, 10 deletions
| diff --git a/src/fileaccess.cpp b/src/fileaccess.cpp index 0dc0511..205b75e 100644 --- a/src/fileaccess.cpp +++ b/src/fileaccess.cpp @@ -46,7 +46,14 @@  ProgressDialog* g_pProgressDialog=0; -FileAccess::FileAccess( const TQString& name, bool bWantToWrite ) +FileAccess::FileAccess( const TQString& name, bool bWantToWrite ) : +   m_workingDir(TQString::null) +{ +   setFile( name, bWantToWrite ); +} + +FileAccess::FileAccess( const TQString& workingDir, const TQString& name, bool bWantToWrite ) : +   m_workingDir(workingDir)  {     setFile( name, bWantToWrite );  } @@ -111,7 +118,15 @@ void FileAccess::setFile( const TQString& name, bool bWantToWrite )        //   1. When the local file exists and the remote location is wanted nevertheless. (unlikely)        //   2. When the local file doesn't exist and should be written to. -      bool bExistsLocal = TQDir().exists(name); +      bool bExistsLocal = false; +      if (!m_workingDir.isEmpty()) +      { +         bExistsLocal = TQDir(m_workingDir).exists(name); +      } +      else +      { +         bExistsLocal = TQDir().exists(name); +      }        if ( m_url.isLocalFile() || !m_url.isValid() || bExistsLocal ) // assuming that invalid means relative        {           TQString localName = name; @@ -119,7 +134,15 @@ void FileAccess::setFile( const TQString& name, bool bWantToWrite )           {              localName = m_url.path(); // I want the path without preceding "file:"           } -         TQFileInfo fi( localName ); +         TQFileInfo fi; +         if (!m_workingDir.isEmpty()) +         { +            fi = TQFileInfo( m_workingDir, localName ); +         } +         else +         { +            fi = TQFileInfo( localName ); +         }  #if defined(TQ_WS_WIN)           // On some windows machines in a network this takes very long.           // and it's not so important anyway. @@ -158,7 +181,15 @@ void FileAccess::setFile( const TQString& name, bool bWantToWrite )              TQString cmd = "cleartool get -to \"" + m_localCopy + "\"  \"" + m_absFilePath + "\"";              ::system( cmd.local8Bit() ); -            TQFileInfo fi( m_localCopy ); +            TQFileInfo fi; +            if (!m_workingDir.isEmpty()) +            { +               fi = TQFileInfo( m_workingDir, m_localCopy ); +            } +            else +            { +               fi = TQFileInfo( m_localCopy ); +            }  #if defined(TQ_WS_WIN)              m_bReadable    = true;//fi.isReadable();              m_bWritable    = true;//fi.isWritable(); diff --git a/src/fileaccess.h b/src/fileaccess.h index 9338a85..d6afad0 100644 --- a/src/fileaccess.h +++ b/src/fileaccess.h @@ -31,6 +31,7 @@ public:     FileAccess();     ~FileAccess();     FileAccess( const TQString& name, bool bWantToWrite=false ); // name: local file or dirname or url (when supported) +   FileAccess( const TQString& workingDir, const TQString& name, bool bWantToWrite=false ); // name: local file or dirname or url (when supported)     void setFile( const TQString& name, bool bWantToWrite=false );     bool isValid() const; @@ -101,6 +102,7 @@ private:     bool m_bHidden;     long m_fileType; // for testing only +   TQString m_workingDir;     TQString m_linkTarget;     TQString m_user;     TQString m_group; diff --git a/src/kdiff3_part.cpp b/src/kdiff3_part.cpp index 82da11a..8c4e9c3 100644 --- a/src/kdiff3_part.cpp +++ b/src/kdiff3_part.cpp @@ -98,7 +98,7 @@ void KDiff3Part::setModified(bool /*modified*/)  */  } -static void getNameAndVersion( const TQString& str, const TQString& lineStart, TQString& fileName, TQString& version ) +static void getNameAndVersion( const TQString& workingDir, const TQString& str, const TQString& lineStart, TQString& fileName, TQString& version )  {     if ( str.left( lineStart.length() )==lineStart && fileName.isEmpty() )     { @@ -110,7 +110,12 @@ static void getNameAndVersion( const TQString& str, const TQString& lineStart, T           while (pos2>pos && str[pos2]!=' ' && str[pos2]!='\t') --pos2;           fileName = str.mid( pos, pos2-pos );           std::cerr << "KDiff3: " << fileName.latin1() << std::endl; -         if ( FileAccess(fileName).exists() ) break; +         FileAccess fa(workingDir, fileName); +         if (fa.exists()) +         { +            fileName = fa.absFilePath(); +            break; +         }           --pos2;        } @@ -135,6 +140,8 @@ bool KDiff3Part::openFile()     // our example widget is text-based, so we use TQTextStream instead     // of a raw TQDataStream +   TQFileInfo fileinfo(m_file); +   TQString workingDir = fileinfo.dirPath(true);     TQTextStream stream(&file);     TQString str;     TQString fileName1; @@ -144,8 +151,8 @@ bool KDiff3Part::openFile()     while (!stream.eof() && (fileName1.isEmpty() || fileName2.isEmpty()) )     {        str = stream.readLine() + "\n"; -      getNameAndVersion( str, "---", fileName1, version1 ); -      getNameAndVersion( str, "+++", fileName2, version2 ); +      getNameAndVersion( workingDir, str, "---", fileName1, version1 ); +      getNameAndVersion( workingDir, str, "+++", fileName2, version2 );     }     file.close(); @@ -156,8 +163,8 @@ bool KDiff3Part::openFile()        return false;     } -   FileAccess f1(fileName1); -   FileAccess f2(fileName2); +   FileAccess f1(workingDir, fileName1); +   FileAccess f2(workingDir, fileName2);     if ( f1.exists() && f2.exists() && fileName1!=fileName2 )     { | 
