Subversion Repositories spk

Rev

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

Rev 56 Rev 58
Line 395... Line 395...
395
 
395
 
396
	return true;
396
	return true;
397
}
397
}
398
 
398
 
399
 
399
 
400
bool C_File::readFromFile(CFileIO &File, long lSize, bool bDoSize)
400
bool C_File::readFromFile(CFileIO &File)
401
{
401
{
402
	return this->readFromFile(File.stream(), lSize, bDoSize);
402
	return readFromFile(File, File.fileSize(), false);
403
}
403
}
-
 
404
 
404
bool C_File::readFromFile(std::fstream &stream, long lSize, bool bDoSize)
405
bool C_File::readFromFile(CFileIO &File, int iSize, bool bDoSize)
405
{
406
{
-
 
407
	if ( !File.isOpened() ) File.startRead();
-
 
408
	if ( !File.isOpened() ) return false;
-
 
409
 
406
	m_lDataSize = lSize;
410
	m_lDataSize = File.fileSize();
407
	try {
411
	try {
408
		m_sData = new unsigned char[m_lDataSize];
412
		m_sData = new unsigned char[m_lDataSize];
409
	}
413
	}
410
	catch(std::exception &e) {
414
	catch(std::exception &e) {
411
		CLog::logf(CLog::Log_IO, 2, "C_File::readFromFile() unable to malloc, %d (%s)", lSize, e.what());
415
		CLog::logf(CLog::Log_IO, 2, "C_File::readFromFile() unable to malloc, %d (%s)", File.fileSize(), e.what());
412
		return false;
416
		return false;
413
	}
417
	}
414
 
418
 
415
	if ( bDoSize ) {
419
	if ( bDoSize ) File.readSize();
416
		unsigned char s[4];
-
 
417
		stream.read((char *)s, 4);
-
 
418
	}
-
 
419
 
420
 
420
	try { 
421
	try { 
421
		stream.read((char *)m_sData, m_lDataSize); 
422
		File.read(m_sData, m_lDataSize); 
422
	}
423
	}
423
	catch(std::exception &e) {
424
	catch(std::exception &e) {
424
		CLog::logf(CLog::Log_IO, 2, "C_File::readFromFile() unable to read from file, %d (%s)", lSize, e.what());
425
		CLog::logf(CLog::Log_IO, 2, "C_File::readFromFile() unable to read from file, %d (%s)", File.fileSize(), e.what());
425
		DeleteData ();
-
 
426
		m_lDataSize = 0;
-
 
427
		return false;
-
 
428
	}
-
 
429
	return true;
-
 
430
}
-
 
431
 
-
 
432
/*
-
 
433
	Func:	ReadFromFile
-
 
434
	Accept:	id		- File Pointer Stream of open file
-
 
435
			size	- amount of data to read from file
-
 
436
			dosize	- Read the 4 character size
-
 
437
	Func:	Reads a data stream from a currently open file
-
 
438
			Can be used to read directly from a SPK Package
-
 
439
			dosize will read the initial 4 character uncompressed size if needed
-
 
440
*/
-
 
441
bool C_File::ReadFromFile ( FILE *id, long size, bool dosize )
-
 
442
{
-
 
443
	// remove data
-
 
444
 
-
 
445
	m_lDataSize = size ;
-
 
446
	m_sData = new unsigned char[m_lDataSize];
-
 
447
	if ( dosize )
-
 
448
	{
-
 
449
		unsigned char s[4];
-
 
450
		fread ( s, sizeof(unsigned char), 4, id );
-
 
451
	}
-
 
452
 
-
 
453
	fread ( m_sData, sizeof(unsigned char), m_lDataSize, id );
-
 
454
 
-
 
455
	if ( ferror (id) )
-
 
456
	{
-
 
457
		DeleteData ();
426
		DeleteData ();
458
		m_lDataSize = 0;
427
		m_lDataSize = 0;
459
		return false;
428
		return false;
460
	}
429
	}
461
 
-
 
462
	return true;
430
	return true;
463
}
431
}
464
 
432
 
465
 
-
 
466
void C_File::copyData(const unsigned char *data, size_t size)
433
void C_File::copyData(const unsigned char *data, size_t size)
467
{
434
{
468
	m_lDataSize = (long)size;
435
	m_lDataSize = (long)size;
469
	delete m_sData;
436
	delete m_sData;
470
	m_sData = new unsigned char[size];
437
	m_sData = new unsigned char[size];
Line 1495... Line 1462...
1495
			m_bUsedMalloc = false;
1462
			m_bUsedMalloc = false;
1496
			m_sData = new unsigned char[size];
1463
			m_sData = new unsigned char[size];
1497
			memcpy(m_sData, data, size);
1464
			memcpy(m_sData, data, size);
1498
			m_lDataSize = (long)size;
1465
			m_lDataSize = (long)size;
1499
			delete []data;
1466
			delete []data;
-
 
1467
			return true;
1500
		}
1468
		}
1501
 
-
 
1502
		return true;
-
 
1503
	}
1469
	}
1504
 
1470
 
1505
	return false;
1471
	return false;
1506
}
1472
}
1507
 
1473