Ejemplo n.º 1
0
// Try to apply
void CFStream::applyDelayedItems()
{
	ReceiverItems& res = receiver_items;
	SourceItems& src = source_items;
	for(ReceiverItems::iterator it = receiver_items.begin(); it != receiver_items.end();)
	{
		const CFRecordType::TypeId receiver_id = it->receiver_id;
		SourceItems::iterator its = std::find_if(source_items.begin(), source_items.end(), boost::bind(&SourceItem::receiver_id, _1) == receiver_id || boost::bind(&SourceItem::receiver_id, _1) == rt_ANY_TYPE);
		if(its != source_items.end())
		{
			if(NULL != it->fn)
			{
				it->fn(*this, it->data_place, its->data); // receiver_items and source_items may be expanded here.
			}
			else
			{
				seekFromBegin(it->data_place);
				write(&its->data, it->data_size);
			}
			receiver_items.erase(++it);
			source_items.erase(its);
			continue;
		}
		++it;
	}
	seekToEnd();
}
Ejemplo n.º 2
0
static void GetDstFileSize(void){
    unsigned char ebmpHeaderSize[4] = {0};
    unsigned long maskFileOffset = _4bytesToULong(bmpHeader.fileSize);
    seekFromBegin(srcFile, maskFileOffset);
    readFile(srcFile, 4, ebmpHeaderSize);
    srcSize = fileSize(srcFile);
    dstSize = srcSize - maskFileOffset - _4bytesToULong(ebmpHeaderSize);
}
Ejemplo n.º 3
0
static unsigned long JudgeEBmpValidity(void){
    seekFromBegin(srcFile, 0);
    readFile(srcFile, sizeof(bmpHeader), &bmpHeader);
    if(!IsEBmpFile(&bmpHeader)){
        EXIT(ERR_NOT_A_EBMP);
    }
    return 0;
}
Ejemplo n.º 4
0
static void SaveCarryFile(char* hashPwd){
    unsigned char temp = 0;
    unsigned long loop = 0;
    seekFromBegin(srcFile, (srcSize - dstSize));
    for(loop = 0; loop < dstSize; loop++){
        readFile(srcFile, 1, &temp);
        if(NULL != hashPwd){
            temp -= hashPwd[loop % HASH_PWD_LEN];
        }
        writeBuffToFile(&temp, 1, dstFile);
    }
}