summaryrefslogtreecommitdiff
path: root/library
Unidiff
Diffstat (limited to 'library') (more/less context) (ignore whitespace changes)
-rw-r--r--library/filemanager.cpp29
1 files changed, 14 insertions, 15 deletions
diff --git a/library/filemanager.cpp b/library/filemanager.cpp
index 47af1c6..2e5efdd 100644
--- a/library/filemanager.cpp
+++ b/library/filemanager.cpp
@@ -23,16 +23,17 @@
23 23
24/* QT */ 24/* QT */
25#include <qdir.h> 25#include <qdir.h>
26#include <qfileinfo.h> 26#include <qfileinfo.h>
27#include <qtextstream.h> 27#include <qtextstream.h>
28 28
29/* STD */ 29/* STD */
30#include <stdlib.h> 30#include <stdlib.h>
31#include <errno.h>
31#include <sys/stat.h> 32#include <sys/stat.h>
32 33
33/*! 34/*!
34 \class FileManager 35 \class FileManager
35 \brief The FileManager class assists with AppLnk input/output. 36 \brief The FileManager class assists with AppLnk input/output.
36*/ 37*/
37 38
38/*! 39/*!
@@ -58,28 +59,28 @@ bool FileManager::saveFile( const DocLnk &f, const QByteArray &data )
58{ 59{
59 QString fileName = f.file() + ".new"; 60 QString fileName = f.file() + ".new";
60 ensurePathExists( fileName ); 61 ensurePathExists( fileName );
61 QFile file( fileName ); 62 QFile file( fileName );
62 63
63 //write data in temporary .new file 64 //write data in temporary .new file
64 if ( !file.open( IO_WriteOnly|IO_Raw ) ) 65 if ( !file.open( IO_WriteOnly|IO_Raw ) )
65 { 66 {
66 qWarning("open failed"); 67 qWarning( "open failed" );
67 return FALSE; 68 return FALSE;
68 } 69 }
69 int total_written = file.writeBlock( data ); 70 int total_written = file.writeBlock( data );
70 file.close(); 71 file.close();
71 //check if every was written 72 //check if every was written
72 if ( total_written != int(data.size()) || !f.writeLink() ) 73 if ( total_written != int( data.size() ) || !f.writeLink() )
73 { 74 {
74 QFile::remove( fileName ); 75 QFile::remove( fileName );
75 return FALSE; 76 return FALSE;
76 } 77 }
77 qDebug("total written %d out of %d", total_written, data.size()); 78 qDebug( "total written %d out of %d", total_written, data.size() );
78 79
79 //rename temporary .new file in original filenam 80 //rename temporary .new file in original filenam
80 if ( !renameFile( fileName, f.file() ) ) 81 if ( !renameFile( fileName, f.file() ) )
81 QFile::remove( fileName); 82 QFile::remove( fileName);
82 return TRUE; 83 return TRUE;
83} 84}
84 85
85/*! 86/*!
@@ -93,25 +94,25 @@ bool FileManager::saveFile( const DocLnk &f, const QString &text )
93{ 94{
94 QString fileName = f.file() + ".new"; 95 QString fileName = f.file() + ".new";
95 ensurePathExists( fileName ); 96 ensurePathExists( fileName );
96 QFile file( fileName ); 97 QFile file( fileName );
97 98
98 //write data in temporary .new file 99 //write data in temporary .new file
99 if ( !file.open( IO_WriteOnly|IO_Raw ) ) 100 if ( !file.open( IO_WriteOnly|IO_Raw ) )
100 { 101 {
101 qWarning("open failed"); 102 qWarning( "open failed" );
102 return FALSE; 103 return FALSE;
103 } 104 }
104 105
105 QCString cstr = text.utf8(); 106 QCString cstr = text.utf8();
106 int total_written; 107 int total_written;
107 total_written = file.writeBlock( cstr.data(), cstr.length() ); 108 total_written = file.writeBlock( cstr.data(), cstr.length() );
108 file.close(); 109 file.close();
109 if ( total_written != int(cstr.length()) || !f.writeLink() ) 110 if ( total_written != int( cstr.length()) || !f.writeLink() )
110 { 111 {
111 QFile::remove( fileName ); 112 QFile::remove( fileName );
112 return FALSE; 113 return FALSE;
113 } 114 }
114 115
115 // okay now rename the file.. 116 // okay now rename the file..
116 if ( !renameFile( fileName, f.file() ) ) 117 if ( !renameFile( fileName, f.file() ) )
117 QFile::remove( fileName); 118 QFile::remove( fileName);
@@ -183,23 +184,23 @@ bool FileManager::copyFile( const AppLnk &src, const AppLnk &dest )
183 ok = copyFile( src.file(), fileName ); 184 ok = copyFile( src.file(), fileName );
184 185
185 if ( ok ) 186 if ( ok )
186 ok = dest.writeLink(); 187 ok = dest.writeLink();
187 188
188 if ( ok ) 189 if ( ok )
189 { 190 {
190 // okay now rename the file... 191 // okay now rename the file...
191 if ( !renameFile( fileName.latin1(), dest.file().latin1() ) ) 192 if ( !renameFile( fileName, dest.file() ) )
192 // remove the tmp file, otherwise, it will just lay around... 193 // remove the tmp file, otherwise, it will just lay around...
193 QFile::remove( fileName.latin1() ); 194 QFile::remove( fileName );
194 } 195 }
195 else 196 else
196 { 197 {
197 QFile::remove( fileName.latin1() ); 198 QFile::remove( fileName );
198 } 199 }
199 return ok; 200 return ok;
200} 201}
201 202
202bool FileManager::copyFile( const QString & src, const QString & dest ) 203bool FileManager::copyFile( const QString & src, const QString & dest )
203{ 204{
204 //open read file 205 //open read file
205 QFile srcFile( src ); 206 QFile srcFile( src );
@@ -236,30 +237,29 @@ bool FileManager::copyFile( const QString & src, const QString & dest )
236 else 237 else
237 bytesRead -= bytesWritten; 238 bytesRead -= bytesWritten;
238 } 239 }
239 } 240 }
240 srcFile.close(); 241 srcFile.close();
241 destFile.close(); 242 destFile.close();
242 // Set file permissions 243 // Set file permissions
243 struct stat status; 244 struct stat status;
244 if( stat( (const char *) src, &status ) == 0 ) 245 if( stat( QFile::encodeName( src ), &status ) == 0 )
245 { 246 {
246 chmod( (const char *) dest, status.st_mode ); 247 chmod( QFile::encodeName( dest ), status.st_mode );
247 } 248 }
248 return ok; 249 return ok;
249} 250}
250 251
251 252
252bool FileManager::renameFile( const QString & src, const QString & dest ) 253bool FileManager::renameFile( const QString & src, const QString & dest )
253{ 254{
254 QDir dir( QFileInfo( src ).absFilePath() ); 255 if( rename( QFile::encodeName( src ), QFile::encodeName( dest ) ) == -1);
255 if ( !dir.rename( src, dest ) )
256 { 256 {
257 qWarning( "problem renaming file %s to %s", src, dest ); 257 qWarning( "problem renaming file %s to %s, errno: %d", src.latin1(), dest.latin1(), errno );
258 return false; 258 return false;
259 } 259 }
260 return true; 260 return true;
261} 261}
262 262
263/*! 263/*!
264 Opens the document specified by \a f as a readable QIODevice. 264 Opens the document specified by \a f as a readable QIODevice.
265 The caller must delete the return value. 265 The caller must delete the return value.
@@ -315,14 +315,13 @@ bool FileManager::exists( const DocLnk &f )
315 Returns TRUE if successful. 315 Returns TRUE if successful.
316*/ 316*/
317bool FileManager::ensurePathExists( const QString &fn ) 317bool FileManager::ensurePathExists( const QString &fn )
318{ 318{
319 QFileInfo fi(fn); 319 QFileInfo fi(fn);
320 fi.setFile( fi.dirPath(TRUE) ); 320 fi.setFile( fi.dirPath(TRUE) );
321 if ( !fi.exists() ) 321 if ( !fi.exists() )
322 { 322 {
323 if ( system(("mkdir -p "+fi.filePath())) ) 323 if ( system( ("mkdir -p " + QFile::encodeName( fi.filePath() ) ) ) )
324 return FALSE; 324 return FALSE;
325 } 325 }
326
327 return TRUE; 326 return TRUE;
328} 327}