Subversion Repositories spk

Rev

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

Rev 111 Rev 118
Line 58... Line 58...
58
	m_sFile.removeChar(13);
58
	m_sFile.removeChar(13);
59
 
59
 
60
	this->_readFileSize();
60
	this->_readFileSize();
61
	return true;
61
	return true;
62
}
62
}
63
bool CFileIO::Open ( CyString filename, bool binary )
63
/*bool CFileIO::Open ( CyString filename, bool binary )
64
{
64
{
65
	return open(filename.ToString(), binary);
65
	return open(filename.ToString(), binary);
66
}
66
}
67
 
67
*/
68
unsigned char *CFileIO::read(size_t iAmount)
68
unsigned char *CFileIO::read(size_t iAmount)
69
{
69
{
70
	if ( !this->isOpened() ) startRead();
70
	if ( !this->isOpened() ) startRead();
71
	if ( !this->isOpened() ) return NULL;
71
	if ( !this->isOpened() ) return NULL;
72
 
72
 
Line 97... Line 97...
97
	if ( !this->isOpened() ) return NULL;
97
	if ( !this->isOpened() ) return NULL;
98
 
98
 
99
	unsigned char *data;
99
	unsigned char *data;
100
	try {
100
	try {
101
		data = new unsigned char[m_lSize + 1];
101
		data = new unsigned char[m_lSize + 1];
102
	}
102
	}
103
	catch (std::exception &e) {
103
	catch (std::exception &e) {
104
		CLog::logf(CLog::Log_IO, 2, "ERROR: CFileIO::readAll() unable to malloc data, %d (%s)", m_lSize + 1, e.what());
104
		CLog::logf(CLog::Log_IO, 2, "ERROR: CFileIO::readAll() unable to malloc data, %d (%s)", m_lSize + 1, e.what());
105
		return NULL;
105
		return NULL;
106
	}
106
	}
107
 
107
 
108
	if ( !read(data, m_lSize, true) ) {
108
	if ( !read(data, m_lSize, true) ) {
Line 133... Line 133...
133
 
133
 
134
	return !m_fId.bad();
134
	return !m_fId.bad();
135
}
135
}
136
 
136
 
137
bool CFileIO::WritePartFile ( size_t *offsets, size_t numOffset )
137
bool CFileIO::WritePartFile ( size_t *offsets, size_t numOffset )
138
{
138
{
139
	if ( NoFile() )	return false;
139
	if ( NoFile() )	return false;
140
 
140
 
141
	std::fstream File(m_sFilename, _in());
141
	std::fstream File(m_sFilename, _in());
142
	if ( !File.is_open() ) return false;
142
	if ( !File.is_open() ) return false;
143
 
143
 
144
	// first find file size
144
	// first find file size
Line 153... Line 153...
153
	}
153
	}
154
 
154
 
155
	size_t off = 0;
155
	size_t off = 0;
156
	size_t startPos = 0;
156
	size_t startPos = 0;
157
	size_t remainingSize = fullsize;
157
	size_t remainingSize = fullsize;
158
 
158
 
159
	while ( off < numOffset ) {
159
	while ( off < numOffset ) {
160
		startPos = File.tellg();
160
		startPos = File.tellg();
161
		size_t offset = offsets[off++];
161
		size_t offset = offsets[off++];
162
		size_t size = offset - startPos;
162
		size_t size = offset - startPos;
163
		try {
163
		try {
Line 204... Line 204...
204
	std::rename(CPackages::tempDirectory() + "/temp.tmp", m_sFilename);
204
	std::rename(CPackages::tempDirectory() + "/temp.tmp", m_sFilename);
205
 
205
 
206
	return true;
206
	return true;
207
}
207
}
208
 
208
 
-
 
209
 
-
 
210
void CFileIO::setDir(const Utils::String &dir)
-
 
211
{
-
 
212
	if ( m_sFile.empty() )	m_sDirIO.SetDir(dir);
-
 
213
	else					open(dir + "/" + m_sFile, m_bBinary);
-
 
214
}
209
 
215
 
210
void CFileIO::SetDir ( CyString dir )
216
void CFileIO::SetDir ( CyString dir )
211
{
217
{
212
	if ( m_sFile.empty() )	m_sDirIO.SetDir(dir);
218
	setDir(dir.ToString());
213
	else					Open(dir + "/" + m_sFile, m_bBinary);
-
 
214
}
219
}
215
 
220
 
216
void CFileIO::_readFileSize ()
221
void CFileIO::_readFileSize ()
217
{
222
{
218
	m_lSize = 0;
223
	m_lSize = 0;