summaryrefslogtreecommitdiff
path: root/library/filemanager.cpp
Unidiff
Diffstat (limited to 'library/filemanager.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--library/filemanager.cpp3
1 files changed, 0 insertions, 3 deletions
diff --git a/library/filemanager.cpp b/library/filemanager.cpp
index 408be20..1e7384e 100644
--- a/library/filemanager.cpp
+++ b/library/filemanager.cpp
@@ -1,155 +1,152 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000 Trolltech AS. All rights reserved. 2** Copyright (C) 2000 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of Qtopia Environment. 4** This file is part of Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20#include "filemanager.h" 20#include "filemanager.h"
21#include "applnk.h" 21#include "applnk.h"
22 22
23#include <qdir.h>
24#include <qfile.h>
25#include <qfileinfo.h> 23#include <qfileinfo.h>
26#include <qtextstream.h> 24#include <qtextstream.h>
27#include <qtextcodec.h>
28 25
29#include <errno.h> 26#include <errno.h>
30#include <stdlib.h> 27#include <stdlib.h>
31#include <unistd.h> 28#include <unistd.h>
32#include <sys/stat.h> 29#include <sys/stat.h>
33#include <dirent.h> 30#include <dirent.h>
34#ifdef Q_OS_MACX 31#ifdef Q_OS_MACX
35// MacOS X does not have sendfile.. :( 32// MacOS X does not have sendfile.. :(
36// But maybe in the future.. !? 33// But maybe in the future.. !?
37# ifdef SENDFILE 34# ifdef SENDFILE
38# include <sys/types.h> 35# include <sys/types.h>
39# include <sys/socket.h> 36# include <sys/socket.h>
40# endif 37# endif
41#else 38#else
42# include <sys/sendfile.h> 39# include <sys/sendfile.h>
43#endif /* Q_OS_MACX */ 40#endif /* Q_OS_MACX */
44#include <fcntl.h> 41#include <fcntl.h>
45 42
46/*! 43/*!
47 \class FileManager 44 \class FileManager
48 \brief The FileManager class assists with AppLnk input/output. 45 \brief The FileManager class assists with AppLnk input/output.
49*/ 46*/
50 47
51/*! 48/*!
52 Constructs a FileManager. 49 Constructs a FileManager.
53*/ 50*/
54FileManager::FileManager() 51FileManager::FileManager()
55{ 52{
56} 53}
57 54
58/*! 55/*!
59 Destroys a FileManager. 56 Destroys a FileManager.
60*/ 57*/
61FileManager::~FileManager() 58FileManager::~FileManager()
62{ 59{
63 60
64} 61}
65 62
66/*! 63/*!
67 Saves \a data as the document specified by \a f. 64 Saves \a data as the document specified by \a f.
68 65
69 Returns whether the operation succeeded. 66 Returns whether the operation succeeded.
70*/ 67*/
71bool FileManager::saveFile( const DocLnk &f, const QByteArray &data ) 68bool FileManager::saveFile( const DocLnk &f, const QByteArray &data )
72{ 69{
73 QString fn = f.file() + ".new"; 70 QString fn = f.file() + ".new";
74 ensurePathExists( fn ); 71 ensurePathExists( fn );
75 QFile fl( fn ); 72 QFile fl( fn );
76 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) { 73 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) {
77 qWarning("open failed"); 74 qWarning("open failed");
78 return FALSE; 75 return FALSE;
79 } 76 }
80 int total_written = fl.writeBlock( data ); 77 int total_written = fl.writeBlock( data );
81 fl.close(); 78 fl.close();
82 if ( total_written != int(data.size()) || !f.writeLink() ) { 79 if ( total_written != int(data.size()) || !f.writeLink() ) {
83 QFile::remove( fn ); 80 QFile::remove( fn );
84 return FALSE; 81 return FALSE;
85 } 82 }
86 qDebug("total written %d out of %d", total_written, data.size()); 83 qDebug("total written %d out of %d", total_written, data.size());
87 // else rename the file... 84 // else rename the file...
88 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) { 85 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) {
89 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(), 86 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(),
90 f.file().latin1(), errno ); 87 f.file().latin1(), errno );
91 // remove the file... 88 // remove the file...
92 } 89 }
93 return TRUE; 90 return TRUE;
94} 91}
95 92
96/*! 93/*!
97 Saves \a text as the document specified by \a f. 94 Saves \a text as the document specified by \a f.
98 95
99 The text is saved in UTF8 format. 96 The text is saved in UTF8 format.
100 97
101 Returns whether the operation succeeded. 98 Returns whether the operation succeeded.
102*/ 99*/
103bool FileManager::saveFile( const DocLnk &f, const QString &text ) 100bool FileManager::saveFile( const DocLnk &f, const QString &text )
104{ 101{
105 QString fn = f.file() + ".new"; 102 QString fn = f.file() + ".new";
106 ensurePathExists( fn ); 103 ensurePathExists( fn );
107 QFile fl( fn ); 104 QFile fl( fn );
108 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) { 105 if ( !fl.open( IO_WriteOnly|IO_Raw ) ) {
109 qWarning("open failed"); 106 qWarning("open failed");
110 return FALSE; 107 return FALSE;
111 } 108 }
112 109
113 QCString cstr = text.utf8(); 110 QCString cstr = text.utf8();
114 int total_written; 111 int total_written;
115 total_written = fl.writeBlock( cstr.data(), cstr.length() ); 112 total_written = fl.writeBlock( cstr.data(), cstr.length() );
116 fl.close(); 113 fl.close();
117 if ( total_written != int(cstr.length()) || !f.writeLink() ) { 114 if ( total_written != int(cstr.length()) || !f.writeLink() ) {
118 QFile::remove( fn ); 115 QFile::remove( fn );
119 return FALSE; 116 return FALSE;
120 } 117 }
121 // okay now rename the file.. 118 // okay now rename the file..
122 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) { 119 if ( !renameFile( fn.latin1(), f.file().latin1() ) ) {
123 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(), 120 qWarning( "problem renaming file %s to %s, errno: %d", fn.latin1(),
124 f.file().latin1(), errno ); 121 f.file().latin1(), errno );
125 122
126 } 123 }
127 return TRUE; 124 return TRUE;
128} 125}
129 126
130 127
131/*! 128/*!
132 Loads \a text from the document specified by \a f. 129 Loads \a text from the document specified by \a f.
133 130
134 The text is required to be in UTF8 format. 131 The text is required to be in UTF8 format.
135 132
136 Returns whether the operation succeeded. 133 Returns whether the operation succeeded.
137*/ 134*/
138bool FileManager::loadFile( const DocLnk &f, QString &text ) 135bool FileManager::loadFile( const DocLnk &f, QString &text )
139{ 136{
140 QString fn = f.file(); 137 QString fn = f.file();
141 QFile fl( fn ); 138 QFile fl( fn );
142 if ( !fl.open( IO_ReadOnly ) ) 139 if ( !fl.open( IO_ReadOnly ) )
143 return FALSE; 140 return FALSE;
144 QTextStream ts( &fl ); 141 QTextStream ts( &fl );
145#if QT_VERSION <= 230 && defined(QT_NO_CODECS) 142#if QT_VERSION <= 230 && defined(QT_NO_CODECS)
146 // The below should work, but doesn't in Qt 2.3.0 143 // The below should work, but doesn't in Qt 2.3.0
147 ts.setCodec( QTextCodec::codecForMib( 106 ) ); 144 ts.setCodec( QTextCodec::codecForMib( 106 ) );
148#else 145#else
149 ts.setEncoding( QTextStream::UnicodeUTF8 ); 146 ts.setEncoding( QTextStream::UnicodeUTF8 );
150#endif 147#endif
151 text = ts.read(); 148 text = ts.read();
152 fl.close(); 149 fl.close();
153 return TRUE; 150 return TRUE;
154} 151}
155 152