Subversion Repositories spk

Rev

Rev 58 | Rev 82 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 58 Rev 81
Line 7... Line 7...
7
#include <locale>
7
#include <locale>
8
 
8
 
9
#include "DirIO.h"
9
#include "DirIO.h"
10
#include "File.h"
10
#include "File.h"
11
#include "Logging/Log.h"
11
#include "Logging/Log.h"
-
 
12
#include "Packages.h"
12
 
13
 
13
CFileIO::CFileIO () : m_lSize(0), m_bBinary(true), m_bAutoDelete(false), m_bSeekP(false)
14
CFileIO::CFileIO () : m_lSize(0), m_bBinary(true), m_bAutoDelete(false), m_bSeekP(false)
14
{
15
{
15
}
16
}
16
 
17
 
Line 137... Line 138...
137
	// first find file size
138
	// first find file size
138
	File.seekg(0, std::ios::end);
139
	File.seekg(0, std::ios::end);
139
	size_t fullsize = File.tellg(), size = fullsize;
140
	size_t fullsize = File.tellg(), size = fullsize;
140
	File.seekg(0, std::ios::beg);
141
	File.seekg(0, std::ios::beg);
141
 
142
 
142
	std::fstream writeFile("temp.tmp", _out());
143
	std::fstream writeFile(CPackages::tempDirectory() + "/temp.tmp", _out());
143
	if ( !File.is_open() ) {
144
	if ( !File.is_open() ) {
144
		File.close();
145
		File.close();
145
		return false;
146
		return false;
146
	}
147
	}
147
 
148
 
Line 192... Line 193...
192
	File.close();
193
	File.close();
193
	writeFile.close();
194
	writeFile.close();
194
 
195
 
195
	// now copy to original file
196
	// now copy to original file
196
	std::remove(m_sFilename);
197
	std::remove(m_sFilename);
197
	std::rename("temp.tmp", m_sFilename);
198
	std::rename(CPackages::tempDirectory() + "/temp.tmp", m_sFilename);
198
 
199
 
199
	return true;
200
	return true;
200
}
201
}
201
 
202
 
202
 
203
 
Line 235... Line 236...
235
	if ( NoFile() ) return FILEERR_NOFILE;
236
	if ( NoFile() ) return FILEERR_NOFILE;
236
 
237
 
237
	if ( !this->startRead() ) return FILEERR_NOOPEN;
238
	if ( !this->startRead() ) return FILEERR_NOOPEN;
238
	if ( (offset + datasize) > m_lSize ) return FILEERR_TOSMALL;
239
	if ( (offset + datasize) > m_lSize ) return FILEERR_TOSMALL;
239
 
240
 
240
	CFileIO File("temp.tmp");
241
	CFileIO File(CPackages::tempDirectory() + "/temp.tmp");
241
	if ( !File.startWrite() ) return FILEERR_NOWRITE;
242
	if ( !File.startWrite() ) return FILEERR_NOWRITE;
242
	File.setAutoDelete(true);
243
	File.setAutoDelete(true);
243
 
244
 
244
	if ( !File.write(*this, offset) ) return false;
245
	if ( !File.write(*this, offset) ) return false;
245
 
246
 
Line 254... Line 255...
254
	this->close();
255
	this->close();
255
	File.setAutoDelete(false);
256
	File.setAutoDelete(false);
256
 
257
 
257
	// now copy to original file
258
	// now copy to original file
258
	if ( std::remove(m_sFilename.c_str()) == 0 ) {
259
	if ( std::remove(m_sFilename.c_str()) == 0 ) {
259
		std::rename("temp.tmp", m_sFilename.c_str());
260
		std::rename(CPackages::tempDirectory() + "/temp.tmp", m_sFilename.c_str());
260
		return FILEERR_NONE;
261
		return FILEERR_NONE;
261
	}
262
	}
262
 
263
 
263
	return FILEERR_NOWRITE;
264
	return FILEERR_NOWRITE;
264
}
265
}