Subversion Repositories spk

Rev

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

Rev 51 Rev 52
Line 240... Line 240...
240
	return ret;
240
	return ret;
241
}
241
}
242
 
242
 
243
bool CMultiSpkFile::WriteFile ( CyString filename, CProgressInfo *progress )
243
bool CMultiSpkFile::WriteFile ( CyString filename, CProgressInfo *progress )
244
{
244
{
245
	FILE *id = fopen ( filename.c_str(), "wb" );
245
	CFileIO File(filename);
246
	if ( !id )
-
 
247
		return false;
246
	if ( !File.startWrite() ) return false;
248
 
247
 
249
	// make sure we remove all packages that have been marked
248
	// make sure we remove all packages that have been marked
250
	this->RemovePackages();
249
	this->RemovePackages();
251
 
250
 
252
	CyString data = CreateData ();
251
	CyString data = CreateData ();
Line 280... Line 279...
280
		memcpy ( compr, data.c_str(), comprLen );
279
		memcpy ( compr, data.c_str(), comprLen );
281
		valueheader = SPKCOMPRESS_NONE;
280
		valueheader = SPKCOMPRESS_NONE;
282
	}
281
	}
283
 
282
 
284
	// write the main header to the file
283
	// write the main header to the file
285
	fprintf ( id, "MSPKCycrow;%.2f;%d;%d;%d;%d\n", FILEVERSION, valueheader, data.Length(), comprLen, (m_SHeader.bSelection) ? 1 : 0 );
284
	if ( !File.write("MSPKCycrow;%.2f;%d;%d;%d;%d\n", FILEVERSION, valueheader, data.Length(), comprLen, (m_SHeader.bSelection) ? 1 : 0) ) return false;
286
	if ( ferror(id) )
-
 
287
	{
-
 
288
		fclose ( id );
-
 
289
		return false;
-
 
290
	}
-
 
291
 
285
 
292
	// write the compressed data to file
286
	// write the compressed data to file
293
	fputc ( (unsigned char)(uncomprLen >> 24), id ); 
-
 
294
	fputc ( (unsigned char)(uncomprLen >> 16), id ); 
-
 
295
	fputc ( (unsigned char)(uncomprLen >> 8), id ); 
-
 
296
	fputc ( (unsigned char)uncomprLen, id ); 
287
	File.writeSize(uncomprLen);
297
	fwrite ( compr, sizeof(char), comprLen, id );
288
	File.write(compr, comprLen);
298
 
-
 
299
	free ( compr );
289
	free ( compr );
300
 
290
 
301
	for ( CListNode<SMultiSpkFile> *node = m_lFiles.Front(); node; node = node->next() )
291
	for ( CListNode<SMultiSpkFile> *node = m_lFiles.Front(); node; node = node->next() ) {
302
	{
-
 
303
		SMultiSpkFile *ms = node->Data();
292
		SMultiSpkFile *ms = node->Data();
304
		if ( progress )
293
		if ( progress )
305
			progress->UpdatePackage(ms);
294
			progress->UpdatePackage(ms);
306
		if ( (!ms->sData) && (ms->pFile) )
295
		if ( (!ms->sData) && (ms->pFile) )
307
			ms->pFile->WriteData ( id, NULL );
296
			ms->pFile->WriteData(File, NULL);
308
		else
297
		else
309
			fwrite ( ms->sData, sizeof(char), ms->lSize, id );
298
			File.write(ms->sData, ms->lSize);
310
	}
299
	}
311
 
-
 
312
	fclose ( id );
-
 
313
 
300
 
314
	return true;
301
	return true;
315
}
302
}
316
 
303
 
317
bool CMultiSpkFile::ParseHeader ( CyString header )
304
bool CMultiSpkFile::ParseHeader ( CyString header )