From e1d6d633e57b1ce3fbbfc5e843ad80a68f04d0f3 Mon Sep 17 00:00:00 2001 From: dsandersoremutah Date: Fri, 31 Mar 2006 22:18:07 +0000 Subject: [PATCH] Modified to use enum for tag numbers. Moved tag name table from viewrfl.cpp to rflread.h. git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@242 0109f412-320b-0410-ab79-c3e0c5ffbbe6 --- flaim/util/rflread.cpp | 429 +++++++++++++++++++++++++++++++---------- flaim/util/rflread.h | 281 +++++++++++++++++++-------- flaim/util/viewrfl.cpp | 124 ++---------- 3 files changed, 547 insertions(+), 287 deletions(-) diff --git a/flaim/util/rflread.cpp b/flaim/util/rflread.cpp index 70ec20b..d159d67 100644 --- a/flaim/util/rflread.cpp +++ b/flaim/util/rflread.cpp @@ -100,7 +100,7 @@ FSTATIC RCODE rflPutNum( POOL * pPool, NODE * pLinkToNode, FLMBOOL bPutAsSib, - FLMUINT uiTagNum, + eDispTag eDispTag, FLMUINT uiNum, FLMUINT uiOffset, FLMUINT uiNumExpectedBytes, @@ -186,6 +186,11 @@ FSTATIC RCODE rflExpandEncryptionPacket( POOL * pPool, NODE ** ppForest); +FSTATIC RCODE rflExpandConfigSizePacket( + RFL_PACKET * pRflPacket, + POOL * pPool, + NODE ** ppForest); + FSTATIC void rflFormatCount( RFL_PACKET * pRflPacket, char ** ppszTmp); @@ -667,7 +672,10 @@ void RflFormatPacket( f_strcpy( pszTmp, " DataRec "); break; case RFL_ENC_DATA_RECORD_PACKET: - f_strcpy( pszTmp, " EncDataRec "); + f_strcpy( pszTmp, " EDataRec "); + break; + case RFL_DATA_RECORD_PACKET_VER_3: + f_strcpy( pszTmp, " DataRec3 "); break; case RFL_INDEX_SET_PACKET: f_strcpy( pszTmp, " IndexSet "); @@ -683,7 +691,7 @@ void RflFormatPacket( rflFormatDRNRange( pRflPacket, &pszTmp); break; case RFL_BLK_CHAIN_FREE_PACKET: - f_strcpy( pszTmp, "BlockChainFree"); + f_strcpy( pszTmp, "BlkChainFree "); rflFormatTransID( pRflPacket, &pszTmp); rflFormatDRN( pRflPacket, &pszTmp); rflFormatCount( pRflPacket, &pszTmp); @@ -718,15 +726,18 @@ void RflFormatPacket( rflFormatIndex( pRflPacket, &pszTmp); break; case RFL_WRAP_KEY_PACKET: - f_strcpy( pszTmp, "Wrap Key "); + f_strcpy( pszTmp, "Wrap Key "); rflFormatTransID( pRflPacket, &pszTmp); rflFormatDBKeyLen( pRflPacket, &pszTmp); break; case RFL_ENABLE_ENCRYPTION_PACKET: - f_strcpy( pszTmp, "Enable Enc "); + f_strcpy( pszTmp, "Enable Enc "); rflFormatTransID( pRflPacket, &pszTmp); rflFormatDBKeyLen( pRflPacket, &pszTmp); break; + case RFL_CONFIG_SIZE_EVENT_PACKET: + f_strcpy( pszTmp, "Config Size "); + break; } } } @@ -1111,6 +1122,7 @@ FSTATIC RCODE rflRetrievePacket( case RFL_CHANGE_FIELDS_PACKET: case RFL_DATA_RECORD_PACKET: case RFL_ENC_DATA_RECORD_PACKET: + case RFL_DATA_RECORD_PACKET_VER_3: case RFL_UNKNOWN_PACKET: uiExpectedBodyLen = pRflPacket->uiPacketBodyLength; if (uiExpectedBodyLen & 0x03) @@ -1188,6 +1200,12 @@ FSTATIC RCODE rflRetrievePacket( case RFL_ENABLE_ENCRYPTION_PACKET: uiExpectedBodyLen = pRflPacket->uiPacketBodyLength; break; + case RFL_CONFIG_SIZE_EVENT_PACKET: + uiExpectedBodyLen = 16; + pRflPacket->uiNextPacketAddress = + uiFileOffset + RFL_PACKET_OVERHEAD + + uiExpectedBodyLen; + break; default: pRflPacket->bValidPacketType = FALSE; pRflPacket->uiNextPacketAddress = @@ -1224,9 +1242,10 @@ FSTATIC RCODE rflRetrievePacket( // determine where the next packet starts, starting from // the packet overhead. - if ((pRflPacket->uiPacketType == RFL_CHANGE_FIELDS_PACKET) || - (pRflPacket->uiPacketType == RFL_DATA_RECORD_PACKET) || - (pRflPacket->uiPacketType == RFL_ENC_DATA_RECORD_PACKET)) + if (pRflPacket->uiPacketType == RFL_CHANGE_FIELDS_PACKET || + pRflPacket->uiPacketType == RFL_DATA_RECORD_PACKET || + pRflPacket->uiPacketType == RFL_ENC_DATA_RECORD_PACKET || + pRflPacket->uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { if ((uiBytesRead != uiExpectedBodyLen) || (!pRflPacket->bHavePacketChecksum) || @@ -1619,6 +1638,26 @@ FSTATIC RCODE rflRetrievePacket( uiFileOffset + RFL_PACKET_OVERHEAD + 6 + pRflPacket->uiCount; break; + + case RFL_CONFIG_SIZE_EVENT_PACKET: + + // Get transaction ID, size threshhold, time interval, and + // size interval + + rflGetNumValue( pucPacketBody, uiBytesRead, 0, + 4, &pRflPacket->uiTransID, + &pRflPacket->uiTransIDBytes); + rflGetNumValue( pucPacketBody, uiBytesRead, 4, + 4, &pRflPacket->uiSizeThreshold, + &pRflPacket->uiSizeThresholdBytes); + rflGetNumValue( pucPacketBody, uiBytesRead, 8, + 4, &pRflPacket->uiTimeInterval, + &pRflPacket->uiTimeIntervalBytes); + rflGetNumValue( pucPacketBody, uiBytesRead, 12, + 4, &pRflPacket->uiSizeInterval, + &pRflPacket->uiSizeInterval); + break; + default: break; } @@ -1644,9 +1683,11 @@ FSTATIC RCODE rflGetNextOpPacket( // Stop when we either don't have a valid packet, or it is an // operation packet. - if ((!pRflPacket->bValidPacketType) || - ((pRflPacket->uiPacketType != RFL_CHANGE_FIELDS_PACKET) && - (pRflPacket->uiPacketType != RFL_DATA_RECORD_PACKET))) + if (!pRflPacket->bValidPacketType || + (pRflPacket->uiPacketType != RFL_CHANGE_FIELDS_PACKET && + pRflPacket->uiPacketType != RFL_DATA_RECORD_PACKET && + pRflPacket->uiPacketType != RFL_ENC_DATA_RECORD_PACKET && + pRflPacket->uiPacketType != RFL_DATA_RECORD_PACKET_VER_3)) { *pbFoundNext = TRUE; break; @@ -1718,7 +1759,8 @@ RCODE RflGetNextNode( // Create the packet node. - if ((pPacketNode = GedNodeCreate( pPool, RFL_PACKET_FIELD, 0, &rc)) == NULL) + if ((pPacketNode = GedNodeCreate( pPool, RFL_PACKET_FIELD, + 0, &rc)) == NULL) { goto Exit; } @@ -1791,9 +1833,11 @@ FSTATIC RCODE rflGetPrevOpPacket( // Stop when we either don't have a valid packet, or it is an // operation packet. - if ((!pRflPacket->bValidPacketType) || - ((pRflPacket->uiPacketType != RFL_CHANGE_FIELDS_PACKET) && - (pRflPacket->uiPacketType != RFL_DATA_RECORD_PACKET))) + if (!pRflPacket->bValidPacketType || + (pRflPacket->uiPacketType != RFL_CHANGE_FIELDS_PACKET && + pRflPacket->uiPacketType != RFL_DATA_RECORD_PACKET && + pRflPacket->uiPacketType != RFL_ENC_DATA_RECORD_PACKET && + pRflPacket->uiPacketType != RFL_DATA_RECORD_PACKET_VER_3)) { *pbFoundPrev = TRUE; break; @@ -1883,7 +1927,8 @@ RCODE RflGetPrevNode( // Create the packet node. - if ((pPacketNode = GedNodeCreate( pPool, RFL_PACKET_FIELD, 0, &rc)) == NULL) + if ((pPacketNode = GedNodeCreate( pPool, RFL_PACKET_FIELD, + 0, &rc)) == NULL) { goto Exit; } @@ -1984,7 +2029,8 @@ RCODE RflPositionToNode( // Create the packet node. - if ((pPacketNode = GedNodeCreate( pPool, RFL_PACKET_FIELD, 0, &rc)) == NULL) + if ((pPacketNode = GedNodeCreate( pPool, RFL_PACKET_FIELD, + 0, &rc)) == NULL) { goto Exit; } @@ -2085,7 +2131,7 @@ FSTATIC RCODE rflPutNum( POOL * pPool, NODE * pLinkToNode, FLMBOOL bPutAsSib, - FLMUINT uiTagNum, + eDispTag eDispTag, FLMUINT uiNum, FLMUINT uiOffset, FLMUINT uiNumExpectedBytes, @@ -2102,7 +2148,7 @@ FSTATIC RCODE rflPutNum( // Create the number node. - if ((pNode = GedNodeCreate( pPool, uiTagNum, uiOffset, &rc)) == NULL) + if ((pNode = GedNodeCreate( pPool, makeTagNum( eDispTag), uiOffset, &rc)) == NULL) { goto Exit; } @@ -2133,7 +2179,8 @@ FSTATIC RCODE rflPutNum( // Create the number of bytes valid node. - if ((pNode2 = GedNodeCreate( pPool, RFL_NUM_BYTES_VALID_FIELD, + if ((pNode2 = GedNodeCreate( pPool, + makeTagNum( RFL_NUM_BYTES_VALID_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -2171,97 +2218,103 @@ FSTATIC RCODE rflExpandPacketHdr( ) { RCODE rc = FERR_OK; - FLMUINT uiTagNum; + eDispTag eTagNum; NODE * pParent; FLMUINT uiOffset; NODE * pNode; if (!pRflPacket->bValidPacketType) { - uiTagNum = RFL_UNKNOWN_PACKET_FIELD; + eTagNum = RFL_UNKNOWN_PACKET_FIELD; } else { switch (pRflPacket->uiPacketType) { case RFL_TRNS_BEGIN_PACKET: - uiTagNum = RFL_TRNS_BEGIN_FIELD; + eTagNum = RFL_TRNS_BEGIN_FIELD; break; case RFL_TRNS_BEGIN_EX_PACKET: - uiTagNum = RFL_TRNS_BEGIN_EX_FIELD; + eTagNum = RFL_TRNS_BEGIN_EX_FIELD; break; case RFL_TRNS_COMMIT_PACKET: - uiTagNum = RFL_TRNS_COMMIT_FIELD; + eTagNum = RFL_TRNS_COMMIT_FIELD; break; case RFL_TRNS_ABORT_PACKET: - uiTagNum = RFL_TRNS_ABORT_FIELD; + eTagNum = RFL_TRNS_ABORT_FIELD; break; case RFL_ADD_RECORD_PACKET: case RFL_ADD_RECORD_PACKET_VER_2: - uiTagNum = RFL_RECORD_ADD_FIELD; + eTagNum = RFL_RECORD_ADD_FIELD; break; case RFL_MODIFY_RECORD_PACKET: case RFL_MODIFY_RECORD_PACKET_VER_2: - uiTagNum = RFL_RECORD_MODIFY_FIELD; + eTagNum = RFL_RECORD_MODIFY_FIELD; break; case RFL_DELETE_RECORD_PACKET: case RFL_DELETE_RECORD_PACKET_VER_2: - uiTagNum = RFL_RECORD_DELETE_FIELD; - break; - case RFL_ENC_DATA_RECORD_PACKET: - uiTagNum = RFL_ENC_FIELD; + eTagNum = RFL_RECORD_DELETE_FIELD; break; case RFL_RESERVE_DRN_PACKET: - uiTagNum = RFL_RESERVE_DRN_FIELD; + eTagNum = RFL_RESERVE_DRN_FIELD; break; case RFL_CHANGE_FIELDS_PACKET: - uiTagNum = RFL_CHANGE_FIELDS_FIELD; + eTagNum = RFL_CHANGE_FIELDS_FIELD; break; case RFL_DATA_RECORD_PACKET: - uiTagNum = RFL_DATA_RECORD_FIELD; + eTagNum = RFL_DATA_RECORD_FIELD; + break; + case RFL_ENC_DATA_RECORD_PACKET: + eTagNum = RFL_ENC_DATA_RECORD_FIELD; + break; + case RFL_DATA_RECORD_PACKET_VER_3: + eTagNum = RFL_DATA_RECORD3_FIELD; break; case RFL_INDEX_SET_PACKET: - uiTagNum = RFL_INDEX_SET_FIELD; + eTagNum = RFL_INDEX_SET_FIELD; break; case RFL_INDEX_SET_PACKET_VER_2: - uiTagNum = RFL_INDEX_SET2_FIELD; + eTagNum = RFL_INDEX_SET2_FIELD; break; case RFL_BLK_CHAIN_FREE_PACKET: - uiTagNum = RFL_BLK_CHAIN_FREE_FIELD; + eTagNum = RFL_BLK_CHAIN_FREE_FIELD; break; case RFL_START_UNKNOWN_PACKET: - uiTagNum = RFL_START_UNKNOWN_FIELD; + eTagNum = RFL_START_UNKNOWN_FIELD; break; case RFL_UNKNOWN_PACKET: - uiTagNum = RFL_UNKNOWN_USER_PACKET_FIELD; + eTagNum = RFL_UNKNOWN_USER_PACKET_FIELD; break; case RFL_REDUCE_PACKET: - uiTagNum = RFL_REDUCE_PACKET_FIELD; + eTagNum = RFL_REDUCE_PACKET_FIELD; break; case RFL_UPGRADE_PACKET: - uiTagNum = RFL_UPGRADE_PACKET_FIELD; + eTagNum = RFL_UPGRADE_PACKET_FIELD; break; case RFL_INDEX_SUSPEND_PACKET: - uiTagNum = RFL_INDEX_SUSPEND_FIELD; + eTagNum = RFL_INDEX_SUSPEND_FIELD; break; case RFL_INDEX_RESUME_PACKET: - uiTagNum = RFL_INDEX_RESUME_FIELD; + eTagNum = RFL_INDEX_RESUME_FIELD; break; case RFL_WRAP_KEY_PACKET: - uiTagNum = RFL_WRAP_KEY_FIELD; + eTagNum = RFL_WRAP_KEY_FIELD; break; case RFL_ENABLE_ENCRYPTION_PACKET: - uiTagNum = RFL_ENABLE_ENCRYPTION_FIELD; + eTagNum = RFL_ENABLE_ENCRYPTION_FIELD; + break; + case RFL_CONFIG_SIZE_EVENT_PACKET: + eTagNum = RFL_CONFIG_SIZE_EVENT_FIELD; break; default: - uiTagNum = RFL_UNKNOWN_PACKET_FIELD; + eTagNum = RFL_UNKNOWN_PACKET_FIELD; break; } } // Create the packet node. - if ((pParent = GedNodeCreate( pPool, uiTagNum, + if ((pParent = GedNodeCreate( pPool, makeTagNum( eTagNum), pRflPacket->uiFileOffset, &rc)) == NULL) { goto Exit; @@ -2270,7 +2323,7 @@ FSTATIC RCODE rflExpandPacketHdr( // If packet type is unknown, put it into the data portion of the // field - if we have it. - if ((uiTagNum == RFL_UNKNOWN_PACKET_FIELD) && + if ((eTagNum == RFL_UNKNOWN_PACKET_FIELD) && (pRflPacket->bHavePacketType)) { if (RC_BAD( rc = GedPutUINT( pPool, pParent, @@ -3132,8 +3185,8 @@ FSTATIC RCODE rflExpandDataPacket( { for (;;) { - if ((pTmpNode = GedNodeCreate( pPool, RFL_MORE_DATA_FIELD, - 0, &rc)) == 0) + if ((pTmpNode = GedNodeCreate( pPool, + makeTagNum( RFL_MORE_DATA_FIELD), 0, &rc)) == 0) { goto Exit; } @@ -3155,7 +3208,7 @@ FSTATIC RCODE rflExpandDataPacket( // Create a GEDCOM node. - if ((pTagNode = GedNodeCreate( pPool, RFL_MORE_DATA_FIELD, + if ((pTagNode = GedNodeCreate( pPool, makeTagNum( RFL_MORE_DATA_FIELD), uiOffset, &rc)) == NULL) { goto Exit; @@ -3227,14 +3280,25 @@ FSTATIC RCODE rflExpandDataPacket( pucPacketBody += uiLevelLen; uiBytesRead -= uiLevelLen; - rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiDataLen, &uiDataLenLen); + if (uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) + { + rflGetNumValue( pucPacketBody, uiBytesRead, 0, 4, &uiDataLen, &uiDataLenLen); + if (uiDataLenLen < 4) + { + bIncompleteHdr = TRUE; + } + } + else + { + rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiDataLen, &uiDataLenLen); + if (uiDataLenLen < 2) + { + bIncompleteHdr = TRUE; + } + } pucPacketBody += uiDataLenLen; uiBytesRead -= uiDataLenLen; - if (uiDataLenLen < 2) - { - bIncompleteHdr = TRUE; - } // If we have an encrypted packet, handle the remaining fields here @@ -3244,7 +3308,8 @@ FSTATIC RCODE rflExpandDataPacket( uiEncDefIDLen = 0; uiEncLen = 0; uiEncLenLen = 0; - if (uiPacketType == RFL_ENC_DATA_RECORD_PACKET) + if (uiPacketType == RFL_ENC_DATA_RECORD_PACKET || + uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { rflGetNumValue( pucPacketBody, uiBytesRead, 0, 1, &uiEncrypted, &uiEncryptedLen); pucPacketBody += uiEncryptedLen; @@ -3260,14 +3325,24 @@ FSTATIC RCODE rflExpandDataPacket( pucPacketBody += uiEncDefIDLen; uiBytesRead -= uiEncDefIDLen; - rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiEncLen, &uiEncLenLen); + if (uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) + { + rflGetNumValue( pucPacketBody, uiBytesRead, 0, 4, &uiEncLen, &uiEncLenLen); + if (uiEncLenLen < 4) + { + bIncompleteHdr = TRUE; + } + } + else + { + rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiEncLen, &uiEncLenLen); + if (uiEncLenLen < 2) + { + bIncompleteHdr = TRUE; + } + } pucPacketBody += uiEncLenLen; uiBytesRead -= uiEncLenLen; - - if (uiEncLenLen < 2) - { - bIncompleteHdr = TRUE; - } } } @@ -3307,14 +3382,26 @@ FSTATIC RCODE rflExpandDataPacket( } uiOffset += uiLevelLen; - if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_DATA_LEN_FIELD, - uiDataLen, uiOffset, 2, uiDataLenLen, &pTmpNode))) + if (uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { - goto Exit; + if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_DATA_LEN_FIELD, + uiDataLen, uiOffset, 4, uiDataLenLen, &pTmpNode))) + { + goto Exit; + } + } + else + { + if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_DATA_LEN_FIELD, + uiDataLen, uiOffset, 2, uiDataLenLen, &pTmpNode))) + { + goto Exit; + } } uiOffset += uiDataLenLen; - if (uiPacketType == RFL_ENC_DATA_RECORD_PACKET) + if (uiPacketType == RFL_ENC_DATA_RECORD_PACKET || + uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_ENC_FIELD, uiEncrypted, uiOffset, 1, uiEncryptedLen, &pTmpNode))) @@ -3332,10 +3419,21 @@ FSTATIC RCODE rflExpandDataPacket( } uiOffset += uiEncDefIDLen; - if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_ENC_DATA_LEN_FIELD, - uiEncLen, uiOffset, 2, uiEncLenLen, &pTmpNode))) + if (uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { - goto Exit; + if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_ENC_DATA_LEN_FIELD, + uiEncLen, uiOffset, 4, uiEncLenLen, &pTmpNode))) + { + goto Exit; + } + } + else + { + if ( RC_BAD( rc = rflPutNum( pPool, pTmpNode, TRUE, RFL_ENC_DATA_LEN_FIELD, + uiEncLen, uiOffset, 2, uiEncLenLen, &pTmpNode))) + { + goto Exit; + } } uiOffset += uiEncLenLen; @@ -3351,7 +3449,7 @@ FSTATIC RCODE rflExpandDataPacket( // Create a GEDCOM node for the data. - if ((pDataNode = GedNodeCreate( pPool, RFL_DATA_FIELD, + if ((pDataNode = GedNodeCreate( pPool, makeTagNum( RFL_DATA_FIELD), uiOffset, &rc)) == NULL) { goto Exit; @@ -3502,7 +3600,7 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( FLMBYTE * pucPacketBody; FLMUINT uiBytesRead; FLMUINT uiOffset; - FLMUINT uiChangeTagNum; + eDispTag eChangeTagNum; FLMUINT uiDataTagNum; FLMUINT uiDataLen; FLMUINT uiChangeType; @@ -3511,6 +3609,7 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( FLMUINT uiNodeDataLen; FLMUINT uiTmp; FLMUINT uiLen; + FLMUINT uiDataLenLen; // Output the packet header. @@ -3569,7 +3668,7 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( // Create a dummy change node. - if ((pChangeNode = GedNodeCreate( pPool, RFL_MORE_DATA_FIELD, + if ((pChangeNode = GedNodeCreate( pPool, makeTagNum( RFL_MORE_DATA_FIELD), 0, &rc)) == 0) { goto Exit; @@ -3582,30 +3681,42 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( switch (uiChangeType) { case RFL_INSERT_FIELD: - uiChangeTagNum = RFL_INSERT_FLD_FIELD; + eChangeTagNum = RFL_INSERT_FLD_FIELD; break; case RFL_MODIFY_FIELD: - uiChangeTagNum = RFL_MODIFY_FLD_FIELD; + eChangeTagNum = RFL_MODIFY_FLD_FIELD; break; case RFL_DELETE_FIELD: - uiChangeTagNum = RFL_DELETE_FLD_FIELD; + eChangeTagNum = RFL_DELETE_FLD_FIELD; break; case RFL_END_FIELD_CHANGES: - uiChangeTagNum = RFL_END_CHANGES_FIELD; + eChangeTagNum = RFL_END_CHANGES_FIELD; break; // Added case RFL_INSERT_ENC_FIELD: - uiChangeTagNum = RFL_INSERT_ENC_FLD_FIELD; + eChangeTagNum = RFL_INSERT_ENC_FLD_FIELD; break; case RFL_MODIFY_ENC_FIELD: - uiChangeTagNum = RFL_MODIFY_ENC_FLD_FIELD; + eChangeTagNum = RFL_MODIFY_ENC_FLD_FIELD; + break; + case RFL_INSERT_LARGE_FIELD: + eChangeTagNum = RFL_INSERT_LARGE_FLD_FIELD; + break; + case RFL_INSERT_ENC_LARGE_FIELD: + eChangeTagNum = RFL_INSERT_ENC_LARGE_FLD_FIELD; + break; + case RFL_MODIFY_LARGE_FIELD: + eChangeTagNum = RFL_MODIFY_LARGE_FLD_FIELD; + break; + case RFL_MODIFY_ENC_LARGE_FIELD: + eChangeTagNum = RFL_MODIFY_ENC_LARGE_FLD_FIELD; break; default: - uiChangeTagNum = RFL_UNKNOWN_CHANGE_TYPE_FIELD; + eChangeTagNum = RFL_UNKNOWN_CHANGE_TYPE_FIELD; break; } if (RC_BAD( rc = rflPutNum( pPool, pLastNode, TRUE, - uiChangeTagNum, + eChangeTagNum, uiChangeType, uiOffset, 1, 1, &pChangeNode))) { @@ -3632,7 +3743,9 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( uiDataLen = 0; if (uiChangeType == RFL_INSERT_FIELD || - uiChangeType == RFL_INSERT_ENC_FIELD) + uiChangeType == RFL_INSERT_ENC_FIELD || + uiChangeType == RFL_INSERT_LARGE_FIELD || + uiChangeType == RFL_INSERT_ENC_LARGE_FIELD) { // Output tag number. @@ -3682,12 +3795,16 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( // Output data length + uiDataLenLen = (uiChangeType == RFL_INSERT_LARGE_FIELD || + uiChangeType == RFL_INSERT_ENC_LARGE_FIELD) + ? 4 + : 2; rflGetNumValue( pucPacketBody, uiBytesRead, 0, - 2, &uiTmp, &uiLen); + uiDataLenLen, &uiTmp, &uiLen); if (RC_BAD( rc = rflPutNum( pPool, pChangeNode, FALSE, RFL_DATA_LEN_FIELD, uiTmp, uiOffset, - 2, uiLen, NULL))) + uiDataLenLen, uiLen, NULL))) { goto Exit; } @@ -3700,7 +3817,8 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( } uiDataTagNum = RFL_DATA_FIELD; - if ( uiChangeType == RFL_INSERT_ENC_FIELD) + if (uiChangeType == RFL_INSERT_ENC_FIELD || + uiChangeType == RFL_INSERT_ENC_LARGE_FIELD) { // Output the encryption definition id rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiTmp, &uiLen); @@ -3714,9 +3832,9 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( uiBytesRead -= uiLen; // Output the encrypted data length - rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiTmp, &uiLen); + rflGetNumValue( pucPacketBody, uiBytesRead, 0, uiDataLenLen, &uiTmp, &uiLen); if ( RC_BAD( rc = rflPutNum( pPool, pChangeNode, FALSE, RFL_ENC_DATA_LEN_FIELD, - uiTmp, uiOffset, 2, uiLen, NULL))) + uiTmp, uiOffset, uiDataLenLen, uiLen, NULL))) { goto Exit; } @@ -3730,7 +3848,9 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( } } else if (uiChangeType == RFL_MODIFY_FIELD || - uiChangeType == RFL_MODIFY_ENC_FIELD) + uiChangeType == RFL_MODIFY_ENC_FIELD || + uiChangeType == RFL_MODIFY_LARGE_FIELD || + uiChangeType == RFL_MODIFY_ENC_LARGE_FIELD) { // Output change bytes type @@ -3763,24 +3883,29 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( // Output data length + uiDataLenLen = (uiChangeType == RFL_MODIFY_LARGE_FIELD || + uiChangeType == RFL_MODIFY_ENC_LARGE_FIELD) + ? 4 + : 2; rflGetNumValue( pucPacketBody, uiBytesRead, 0, - 2, &uiTmp, &uiLen); + uiDataLenLen, &uiTmp, &uiLen); if (RC_BAD( rc = rflPutNum( pPool, pChangeNode, FALSE, RFL_DATA_LEN_FIELD, uiTmp, uiOffset, - 2, uiLen, NULL))) + uiDataLenLen, uiLen, NULL))) { goto Exit; } uiOffset += uiLen; pucPacketBody += uiLen; uiBytesRead -= uiLen; - if (uiLen == 2) + if (uiLen == uiDataLenLen) { uiDataLen = uiTmp; } uiDataTagNum = RFL_DATA_FIELD; - if ( uiChangeType == RFL_MODIFY_ENC_FIELD) + if (uiChangeType == RFL_MODIFY_ENC_FIELD || + uiChangeType == RFL_MODIFY_ENC_LARGE_FIELD) { // Output the encryption definition id rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiTmp, &uiLen); @@ -3794,16 +3919,16 @@ FSTATIC RCODE rflExpandChangeFieldsPacket( uiBytesRead -= uiLen; // Output the encrypted data length - rflGetNumValue( pucPacketBody, uiBytesRead, 0, 2, &uiTmp, &uiLen); + rflGetNumValue( pucPacketBody, uiBytesRead, 0, uiDataLenLen, &uiTmp, &uiLen); if ( RC_BAD( rc = rflPutNum( pPool, pChangeNode, FALSE, RFL_ENC_DATA_LEN_FIELD, - uiTmp, uiOffset, 2, uiLen, NULL))) + uiTmp, uiOffset, uiDataLenLen, uiLen, NULL))) { goto Exit; } uiOffset += uiLen; pucPacketBody += uiLen; uiBytesRead -= uiLen; - if (uiLen == 2) + if (uiLen == uiDataLenLen) { uiDataLen = uiTmp; } @@ -3918,8 +4043,10 @@ FSTATIC RCODE rflExpandRecordPackets( if (uiPacketType == 0xFF) { - if ((RflPacket.uiPacketType == RFL_DATA_RECORD_PACKET) || - (RflPacket.uiPacketType == RFL_CHANGE_FIELDS_PACKET)) + if (RflPacket.uiPacketType == RFL_DATA_RECORD_PACKET || + RflPacket.uiPacketType == RFL_ENC_DATA_RECORD_PACKET || + RflPacket.uiPacketType == RFL_DATA_RECORD_PACKET_VER_3 || + RflPacket.uiPacketType == RFL_CHANGE_FIELDS_PACKET) { uiPacketType = RflPacket.uiPacketType; } @@ -3931,8 +4058,8 @@ FSTATIC RCODE rflExpandRecordPackets( // Stop when we don't have a valid data packet. - if ((!RflPacket.bValidPacketType) || - (RflPacket.uiPacketType != uiPacketType)) + if (!RflPacket.bValidPacketType || + RflPacket.uiPacketType != uiPacketType) { break; } @@ -3942,7 +4069,9 @@ FSTATIC RCODE rflExpandRecordPackets( ? (FLMBOOL)TRUE : (FLMBOOL)FALSE); - if (uiPacketType == RFL_DATA_RECORD_PACKET || uiPacketType == RFL_ENC_DATA_RECORD_PACKET) + if (uiPacketType == RFL_DATA_RECORD_PACKET || + uiPacketType == RFL_ENC_DATA_RECORD_PACKET || + uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { if (RC_BAD( rc = rflExpandDataPacket( &RflPacket, pPool, bOutputPacket, uiPacketType, @@ -4127,7 +4256,7 @@ FSTATIC RCODE rflExpandRecOpPacket( { if (RC_BAD( rc = rflExpandRecordPackets( pPool, pRflPacket->uiNextPacketAddress, - RFL_DATA_RECORD_PACKET, + 0xFF, &pParent, uiPacketOffset))) { goto Exit; @@ -4220,7 +4349,7 @@ FSTATIC RCODE rflExpandUnkPacket( // Create a GEDCOM node for the data. - if ((pTmpNode2 = GedNodeCreate( pPool, RFL_DATA_FIELD, + if ((pTmpNode2 = GedNodeCreate( pPool, makeTagNum( RFL_DATA_FIELD), uiOffset, &rc)) == NULL) { goto Exit; @@ -4300,7 +4429,7 @@ FSTATIC RCODE rflExpandEncryptionPacket( // Create a data node, if there is data to output. - if ((pDataNode = GedNodeCreate( pPool, RFL_DATA_FIELD, + if ((pDataNode = GedNodeCreate( pPool, makeTagNum( RFL_DATA_FIELD), uiOffset, &rc)) == NULL) { goto Exit; @@ -4344,6 +4473,91 @@ Exit: return( rc); } +/******************************************************************** +Desc: Expands a config rfl size packet (RFL_CONFIG_SIZE_EVENT_PACKET) +*********************************************************************/ +FSTATIC RCODE rflExpandConfigSizePacket( + RFL_PACKET * pRflPacket, + POOL * pPool, + NODE ** ppForest + ) +{ + RCODE rc = FERR_OK; + void * pvMark = GedPoolMark( pPool); + NODE * pParent = NULL; + NODE * pLastNode; + FLMUINT uiOffset; + + // Output generic packet header information. + + if (RC_BAD( rc = rflExpandPacketHdr( pRflPacket, pPool, &pParent))) + { + goto Exit; + } + + // Output transaction ID + + uiOffset = pRflPacket->uiFileOffset + RFL_PACKET_OVERHEAD; + if (RC_BAD( rc = rflPutNum( pPool, pParent, FALSE, + RFL_TRANS_ID_FIELD, + pRflPacket->uiTransID, uiOffset, + 4, pRflPacket->uiTransIDBytes, &pLastNode))) + { + goto Exit; + } + uiOffset += 4; + + // Output size threshhold + + if (RC_BAD( rc = rflPutNum( pPool, pParent, FALSE, + RFL_SIZE_THRESHOLD_FIELD, + pRflPacket->uiSizeThreshold, uiOffset, + 4, pRflPacket->uiSizeThresholdBytes, &pLastNode))) + { + goto Exit; + } + uiOffset += 4; + + // Output time interval + + if (RC_BAD( rc = rflPutNum( pPool, pParent, FALSE, + RFL_TIME_INTERVAL_FIELD, + pRflPacket->uiTimeInterval, uiOffset, + 4, pRflPacket->uiTimeInterval, &pLastNode))) + { + goto Exit; + } + uiOffset += 4; + + // Output size interval + + if (RC_BAD( rc = rflPutNum( pPool, pParent, FALSE, + RFL_SIZE_INTERVAL_FIELD, + pRflPacket->uiSizeInterval, uiOffset, + 4, pRflPacket->uiSizeInterval, &pLastNode))) + { + goto Exit; + } + uiOffset += 4; + +Exit: + + if (RC_BAD( rc) || !pParent) + { + if (rc == FERR_IO_END_OF_FILE) + { + rc = FERR_OK; + } + *ppForest = NULL; + GedPoolReset( pPool, pvMark); + } + else + { + *ppForest = pParent; + } + return( rc); +} + /******************************************************************** Desc: Expands a packet into multiple GEDCOM nodes for display of all of the subcomponents. @@ -4401,6 +4615,7 @@ RCODE RflExpandPacket( case RFL_CHANGE_FIELDS_PACKET: case RFL_DATA_RECORD_PACKET: case RFL_ENC_DATA_RECORD_PACKET: + case RFL_DATA_RECORD_PACKET_VER_3: f_memcpy( &tmpPacket, pRflPacket, sizeof( RFL_PACKET)); bFoundPrev = FALSE; if (RC_BAD( rc = rflGetPrevOpPacket( &tmpPacket, &bFoundPrev))) @@ -4412,7 +4627,8 @@ RCODE RflExpandPacket( uiDataLen = 0xFFFF; uiLevel = 0; if (pRflPacket->uiPacketType == RFL_DATA_RECORD_PACKET || - pRflPacket->uiPacketType == RFL_ENC_DATA_RECORD_PACKET) + pRflPacket->uiPacketType == RFL_ENC_DATA_RECORD_PACKET || + pRflPacket->uiPacketType == RFL_DATA_RECORD_PACKET_VER_3) { rc = rflExpandDataPacket( pRflPacket, pPool, TRUE, pRflPacket->uiPacketType, @@ -4457,6 +4673,9 @@ RCODE RflExpandPacket( case RFL_ENABLE_ENCRYPTION_PACKET: rc = rflExpandEncryptionPacket( pRflPacket, pPool, &pForest); goto Exit; + case RFL_CONFIG_SIZE_EVENT_PACKET: + rc = rflExpandConfigSizePacket( pRflPacket, pPool, &pForest); + goto Exit; default: rc = rflExpandUnkPacket( pRflPacket, pPool, &pForest); goto Exit; diff --git a/flaim/util/rflread.h b/flaim/util/rflread.h index 123728b..4efd973 100644 --- a/flaim/util/rflread.h +++ b/flaim/util/rflread.h @@ -47,82 +47,205 @@ REXTERN FLMUINT gv_uiRflEof; // Tag numbers for internal fields. -#define RFL_TRNS_BEGIN_FIELD 32769 -#define RFL_TRNS_COMMIT_FIELD 32770 -#define RFL_TRNS_ABORT_FIELD 32771 -#define RFL_RECORD_ADD_FIELD 32772 -#define RFL_RECORD_MODIFY_FIELD 32773 -#define RFL_RECORD_DELETE_FIELD 32774 -#define RFL_RESERVE_DRN_FIELD 32775 -#define RFL_CHANGE_FIELDS_FIELD 32776 -#define RFL_DATA_RECORD_FIELD 32777 -#define RFL_UNKNOWN_PACKET_FIELD 32778 -#define RFL_NUM_BYTES_VALID_FIELD 32779 -#define RFL_PACKET_ADDRESS_FIELD 32780 -#define RFL_PACKET_CHECKSUM_FIELD 32781 -#define RFL_PACKET_CHECKSUM_VALID_FIELD 32782 -#define RFL_PACKET_BODY_LENGTH_FIELD 32783 -#define RFL_NEXT_PACKET_ADDRESS_FIELD 32784 -#define RFL_PREV_PACKET_ADDRESS_FIELD 32785 -#define RFL_TRANS_ID_FIELD 32786 -#define RFL_START_SECONDS_FIELD 32787 -#define RFL_START_MSEC_FIELD 32788 -#define RFL_END_SECONDS_FIELD 32789 -#define RFL_END_MSEC_FIELD 32790 -#define RFL_START_TRNS_ADDR_FIELD 32791 -#define RFL_CONTAINER_FIELD 32792 -#define RFL_DRN_FIELD 32793 -#define RFL_TAG_NUM_FIELD 32794 -#define RFL_TYPE_FIELD 32795 -#define RFL_LEVEL_FIELD 32796 -#define RFL_DATA_LEN_FIELD 32797 -#define RFL_DATA_FIELD 32798 -#define RFL_MORE_DATA_FIELD 32799 -#define RFL_INSERT_FLD_FIELD 32800 -#define RFL_MODIFY_FLD_FIELD 32801 -#define RFL_DELETE_FLD_FIELD 32802 -#define RFL_END_CHANGES_FIELD 32803 -#define RFL_UNKNOWN_CHANGE_TYPE_FIELD 32804 -#define RFL_POSITION_FIELD 32805 -#define RFL_REPLACE_BYTES_FIELD 32806 -#define RFL_UNKNOWN_CHANGE_BYTES_FIELD 32807 -#define RFL_INDEX_SET_FIELD 32808 -#define RFL_INDEX_NUM_FIELD 32809 -#define RFL_START_DRN_FIELD 32810 -#define RFL_END_DRN_FIELD 32811 -#define RFL_START_UNKNOWN_FIELD 32812 -#define RFL_UNKNOWN_USER_PACKET_FIELD 32813 -#define RFL_HDR_NAME_FIELD 32814 -#define RFL_HDR_VERSION_FIELD 32815 -#define RFL_HDR_FILE_NUMBER_FIELD 32816 -#define RFL_HDR_EOF_FIELD 32817 -#define RFL_HDR_DB_SERIAL_NUM_FIELD 32818 -#define RFL_HDR_FILE_SERIAL_NUM_FIELD 32819 -#define RFL_HDR_NEXT_FILE_SERIAL_NUM_FIELD 32820 -#define RFL_HDR_KEEP_SIGNATURE_FIELD 32821 -#define RFL_TRNS_BEGIN_EX_FIELD 32822 -#define RFL_UPGRADE_PACKET_FIELD 32823 -#define RFL_OLD_DB_VERSION_FIELD 32824 -#define RFL_NEW_DB_VERSION_FIELD 32825 -#define RFL_REDUCE_PACKET_FIELD 32826 -#define RFL_BLOCK_COUNT_FIELD 32827 -#define RFL_LAST_COMMITTED_TRANS_ID_FIELD 32828 -#define RFL_INDEX_SET2_FIELD 32829 -#define RFL_INDEX_SUSPEND_FIELD 32830 -#define RFL_INDEX_RESUME_FIELD 32831 -#define RFL_BLK_CHAIN_FREE_FIELD 32832 -#define RFL_TRACKER_REC_FIELD 32833 -#define RFL_END_BLK_ADDR_FIELD 32834 -#define RFL_FLAGS_FIELD 32835 -#define RFL_INSERT_ENC_FLD_FIELD 32836 -#define RFL_MODIFY_ENC_FLD_FIELD 32837 -#define RFL_ENC_FIELD 32838 -#define RFL_ENC_DEF_ID_FIELD 32839 -#define RFL_ENC_DATA_LEN_FIELD 32840 -#define RFL_DB_KEY_LEN_FIELD 32841 -#define RFL_DB_KEY_FIELD 32842 -#define RFL_WRAP_KEY_FIELD 32843 -#define RFL_ENABLE_ENCRYPTION_FIELD 32844 +typedef enum +{ + RFL_TRNS_BEGIN_FIELD = 0, + RFL_TRNS_COMMIT_FIELD, + RFL_TRNS_ABORT_FIELD, + RFL_RECORD_ADD_FIELD, + RFL_RECORD_MODIFY_FIELD, + RFL_RECORD_DELETE_FIELD, + RFL_RESERVE_DRN_FIELD, + RFL_CHANGE_FIELDS_FIELD, + RFL_DATA_RECORD_FIELD, + RFL_UNKNOWN_PACKET_FIELD, + RFL_NUM_BYTES_VALID_FIELD, + RFL_PACKET_ADDRESS_FIELD, + RFL_PACKET_CHECKSUM_FIELD, + RFL_PACKET_CHECKSUM_VALID_FIELD, + RFL_PACKET_BODY_LENGTH_FIELD, + RFL_NEXT_PACKET_ADDRESS_FIELD, + RFL_PREV_PACKET_ADDRESS_FIELD, + RFL_TRANS_ID_FIELD, + RFL_START_SECONDS_FIELD, + RFL_START_MSEC_FIELD, + RFL_END_SECONDS_FIELD, + RFL_END_MSEC_FIELD, + RFL_START_TRNS_ADDR_FIELD, + RFL_CONTAINER_FIELD, + RFL_DRN_FIELD, + RFL_TAG_NUM_FIELD, + RFL_TYPE_FIELD, + RFL_LEVEL_FIELD, + RFL_DATA_LEN_FIELD, + RFL_DATA_FIELD, + RFL_MORE_DATA_FIELD, + RFL_INSERT_FLD_FIELD, + RFL_MODIFY_FLD_FIELD, + RFL_DELETE_FLD_FIELD, + RFL_END_CHANGES_FIELD, + RFL_UNKNOWN_CHANGE_TYPE_FIELD, + RFL_POSITION_FIELD, + RFL_REPLACE_BYTES_FIELD, + RFL_UNKNOWN_CHANGE_BYTES_FIELD, + RFL_INDEX_SET_FIELD, + RFL_INDEX_NUM_FIELD, + RFL_START_DRN_FIELD, + RFL_END_DRN_FIELD, + RFL_START_UNKNOWN_FIELD, + RFL_UNKNOWN_USER_PACKET_FIELD, + RFL_HDR_NAME_FIELD, + RFL_HDR_VERSION_FIELD, + RFL_HDR_FILE_NUMBER_FIELD, + RFL_HDR_EOF_FIELD, + RFL_HDR_DB_SERIAL_NUM_FIELD, + RFL_HDR_FILE_SERIAL_NUM_FIELD, + RFL_HDR_NEXT_FILE_SERIAL_NUM_FIELD, + RFL_HDR_KEEP_SIGNATURE_FIELD, + RFL_TRNS_BEGIN_EX_FIELD, + RFL_UPGRADE_PACKET_FIELD, + RFL_OLD_DB_VERSION_FIELD, + RFL_NEW_DB_VERSION_FIELD, + RFL_REDUCE_PACKET_FIELD, + RFL_BLOCK_COUNT_FIELD, + RFL_LAST_COMMITTED_TRANS_ID_FIELD, + RFL_INDEX_SET2_FIELD, + RFL_INDEX_SUSPEND_FIELD, + RFL_INDEX_RESUME_FIELD, + RFL_BLK_CHAIN_FREE_FIELD, + RFL_TRACKER_REC_FIELD, + RFL_END_BLK_ADDR_FIELD, + RFL_FLAGS_FIELD, + RFL_INSERT_ENC_FLD_FIELD, + RFL_MODIFY_ENC_FLD_FIELD, + RFL_ENC_FIELD, + RFL_ENC_DEF_ID_FIELD, + RFL_ENC_DATA_LEN_FIELD, + RFL_DB_KEY_LEN_FIELD, + RFL_DB_KEY_FIELD, + RFL_WRAP_KEY_FIELD, + RFL_ENABLE_ENCRYPTION_FIELD, + RFL_ENC_DATA_RECORD_FIELD, + RFL_DATA_RECORD3_FIELD, + RFL_INSERT_LARGE_FLD_FIELD, + RFL_INSERT_ENC_LARGE_FLD_FIELD, + RFL_MODIFY_LARGE_FLD_FIELD, + RFL_MODIFY_ENC_LARGE_FLD_FIELD, + RFL_CONFIG_SIZE_EVENT_FIELD, + RFL_SIZE_THRESHOLD_FIELD, + RFL_TIME_INTERVAL_FIELD, + RFL_SIZE_INTERVAL_FIELD, + + // IMPORTANT NOTE: WHEN ADDING TO THIS TABLE, BE SURE TO ADD + // STRING TO gv_szTagNames TABLE BELOW - STRINGS MUST BE + // IN THE ORDER THEY APPEAR IN THIS TABLE + + RFL_TOTAL_FIELDS +} eDispTag; + +FINLINE FLMUINT makeTagNum( + eDispTag eTagNum) +{ + return( (FLMUINT)eTagNum + 32769); +} + +#ifdef MAIN_MODULE + +// Put this table in the header file so that the enums +// are right next to the tags that go with them. + +const char * gv_szTagNames [] = +{ + "TransBegin", // RFL_TRNS_BEGIN_FIELD + "TransCommit", // RFL_TRNS_COMMIT_FIELD + "TransAbort", // RFL_TRNS_ABORT_FIELD + "RecAdd", // RFL_RECORD_ADD_FIELD + "RecModify", // RFL_RECORD_MODIFY_FIELD + "RecDelete", // RFL_RECORD_DELETE_FIELD + "ReserveDRN", // RFL_RESERVE_DRN_FIELD + "ChangeFields", // RFL_CHANGE_FIELDS_FIELD + "DataRecord", // RFL_DATA_RECORD_FIELD + "UnknownPacket", // RFL_UNKNOWN_PACKET_FIELD + "NumBytesValid", // RFL_NUM_BYTES_VALID_FIELD + "PacketAddress", // RFL_PACKET_ADDRESS_FIELD + "PacketChecksum", // RFL_PACKET_CHECKSUM_FIELD + "PacketChecksumValid", // RFL_PACKET_CHECKSUM_VALID_FIELD + "PacketBodyLength", // RFL_PACKET_BODY_LENGTH_FIELD + "NextPacketAddress", // RFL_NEXT_PACKET_ADDRESS_FIELD + "PrevPacketAddress", // RFL_PREV_PACKET_ADDRESS_FIELD + "TransID", // RFL_TRANS_ID_FIELD + "StartSeconds", // RFL_START_SECONDS_FIELD + "StartMillisec", // RFL_START_MSEC_FIELD + "EndSeconds", // RFL_END_SECONDS_FIELD + "EndMillisec", // RFL_END_MSEC_FIELD + "StartTransAddr", // RFL_START_TRNS_ADDR_FIELD + "ContainerNum", // RFL_CONTAINER_FIELD + "RecordID", // RFL_DRN_FIELD + "TagNum", // RFL_TAG_NUM_FIELD + "FieldType", // RFL_TYPE_FIELD + "Level", // RFL_LEVEL_FIELD + "DataLen", // RFL_DATA_LEN_FIELD + "Data", // RFL_DATA_FIELD + "MoreData", // RFL_MORE_DATA_FIELD + "InsertFld", // RFL_INSERT_FLD_FIELD + "ModifyFld", // RFL_MODIFY_FLD_FIELD + "DeleteFld", // RFL_DELETE_FLD_FIELD + "EndChanges", // RFL_END_CHANGES_FIELD + "UnknownChangeType", // RFL_UNKNOWN_CHANGE_TYPE_FIELD + "Position", // RFL_POSITION_FIELD + "ReplaceBytes", // RFL_REPLACE_BYTES_FIELD + "UnknownChangeBytes", // RFL_UNKNOWN_CHANGE_BYTES_FIELD + "IndexSet", // RFL_INDEX_SET_FIELD + "IndexNum", // RFL_INDEX_NUM_FIELD + "StartDRN", // RFL_START_DRN_FIELD + "EndDRN", // RFL_END_DRN_FIELD + "StartUnknown", // RFL_START_UNKNOWN_FIELD + "UserUnknown", // RFL_UNKNOWN_USER_PACKET_FIELD + "RFLName", // RFL_HDR_NAME_FIELD + "RFLVersion", // RFL_HDR_VERSION_FIELD + "FileNumber", // RFL_HDR_FILE_NUMBER_FIELD + "FileEOF", // RFL_HDR_EOF_FIELD + "DBSerialNum", // RFL_HDR_DB_SERIAL_NUM_FIELD + "FileSerialNum", // RFL_HDR_FILE_SERIAL_NUM_FIELD + "NextFileSerialNum", // RFL_HDR_NEXT_FILE_SERIAL_NUM_FIELD + "KeepSignature", // RFL_HDR_KEEP_SIGNATURE_FIELD + "TransBeginEx", // RFL_TRNS_BEGIN_EX_FIELD + "UpgradeDB", // RFL_UPGRADE_PACKET_FIELD + "OldDbVersion", // RFL_OLD_DB_VERSION_FIELD + "NewDbVersion", // RFL_NEW_DB_VERSION_FIELD + "ReduceDb", // RFL_REDUCE_PACKET_FIELD + "BlockCount", // RFL_BLOCK_COUNT_FIELD + "LastCommitTransID", // RFL_LAST_COMMITTED_TRANS_ID_FIELD + "IndexSet2", // RFL_INDEX_SET2_FIELD + "IndexSuspend", // RFL_INDEX_SUSPEND_FIELD + "IndexResume", // RFL_INDEX_RESUME_FIELD + "BlockChainFree", // RFL_BLK_CHAIN_FREE_FIELD + "TrackerRecDRN", // RFL_TRACKER_REC_FIELD + "EndBlockAddr", // RFL_END_BLK_ADDR_FIELD + "Flags", // RFL_FLAGS_FIELD + "InsertEncFld", // RFL_INSERT_ENC_FLD_FIELD + "ModifyEncFld", // RFL_MODIFY_ENC_FLD_FIELD + "Encrypted", // RFL_ENC_FIELD + "EncryptedDefId", // RFL_ENC_DEF_ID_FIELD + "EncryptedDataLen", // RFL_ENC_DATA_LEN_FIELD + "DataBaseKeyLen", // RFL_DB_KEY_LEN_FIELD + "DataBaseKey", // RFL_DB_KEY_FIELD + "WrapKey", // RFL_WRAP_KEY_FIELD + "EnableEncryption", // RFL_ENABLE_ENCRYPTION_FIELD + "EncDataRecord", // RFL_ENC_DATA_RECORD_FIELD + "DataRecord3", // RFL_DATA_RECORD3_FIELD + "InsertLargeFld", // RFL_INSERT_LARGE_FLD_FIELD + "InsertLargeEncFld", // RFL_INSERT_ENC_LARGE_FLD_FIELD + "ModifyLargeFld", // RFL_MODIFY_LARGE_FLD_FIELD + "ModifyLargeEncFld", // RFL_MODIFY_ENC_LARGE_FLD_FIELD + "ConfigSizeEvent", // RFL_CONFIG_SIZE_EVENT_FIELD + "SizeThreshold", // RFL_SIZE_THRESHOLD_FIELD + "TimeInterval", // RFL_TIME_INTERVAL_FIELD + "SizeInterval", // RFL_SIZE_INTERVAL_FIELD + NULL +}; +#endif + typedef struct Rfl_Packet { @@ -166,6 +289,12 @@ typedef struct Rfl_Packet FLMUINT uiFlagsBytes; // Bytes that were in flags FLMUINT uiCount; // Count (number of blocks, etc.) FLMUINT uiCountBytes; // Bytes that were in count + FLMUINT uiSizeThreshold; // Size threshhold + FLMUINT uiSizeThresholdBytes; // Bytes in size threshhold + FLMUINT uiTimeInterval; // Time interval + FLMUINT uiTimeIntervalBytes; // Bytes that were in tine interval + FLMUINT uiSizeInterval; // Size interval + FLMUINT uiSizeIntervalBytes; // Bytes that were in size interval FLMUINT uiMultiFileSearch; // Is search to span multiple files? } RFL_PACKET, * RFL_PACKET_p; diff --git a/flaim/util/viewrfl.cpp b/flaim/util/viewrfl.cpp index c992aa2..793c76d 100644 --- a/flaim/util/viewrfl.cpp +++ b/flaim/util/viewrfl.cpp @@ -86,95 +86,6 @@ FSTATIC RCODE rflOpenNewFile( NetWare hooks */ -// Data - -typedef struct RflTagName -{ - const char * pszTagName; - FLMUINT uiTagNum; -} RFL_TAG_NAME; - -RFL_TAG_NAME RflDictTags[] = -{ - { "TransBegin", RFL_TRNS_BEGIN_FIELD}, - { "TransCommit", RFL_TRNS_COMMIT_FIELD}, - { "TransAbort", RFL_TRNS_ABORT_FIELD}, - { "RecAdd", RFL_RECORD_ADD_FIELD}, - { "RecModify", RFL_RECORD_MODIFY_FIELD}, - { "RecDelete", RFL_RECORD_DELETE_FIELD}, - { "ReserveDRN", RFL_RESERVE_DRN_FIELD}, - { "ChangeFields", RFL_CHANGE_FIELDS_FIELD}, - { "DataRecord", RFL_DATA_RECORD_FIELD}, - { "IndexNum", RFL_INDEX_NUM_FIELD}, - { "StartDRN", RFL_START_DRN_FIELD}, - { "EndDRN", RFL_END_DRN_FIELD}, - { "UnknownPacket", RFL_UNKNOWN_PACKET_FIELD}, - { "NumBytesValid", RFL_NUM_BYTES_VALID_FIELD}, - { "PacketAddress", RFL_PACKET_ADDRESS_FIELD}, - { "PacketChecksum", RFL_PACKET_CHECKSUM_FIELD}, - { "PacketChecksumValid", RFL_PACKET_CHECKSUM_VALID_FIELD}, - { "PacketBodyLength", RFL_PACKET_BODY_LENGTH_FIELD}, - { "NextPacketAddress", RFL_NEXT_PACKET_ADDRESS_FIELD}, - { "PrevPacketAddress", RFL_PREV_PACKET_ADDRESS_FIELD}, - { "TransID", RFL_TRANS_ID_FIELD}, - { "StartSeconds", RFL_START_SECONDS_FIELD}, - { "StartMillisec", RFL_START_MSEC_FIELD}, - { "EndSeconds", RFL_END_SECONDS_FIELD}, - { "EndMillisec", RFL_END_MSEC_FIELD}, - { "StartTransAddr", RFL_START_TRNS_ADDR_FIELD}, - { "ContainerNum", RFL_CONTAINER_FIELD}, - { "RecordID", RFL_DRN_FIELD}, - { "TagNum", RFL_TAG_NUM_FIELD}, - { "FieldType", RFL_TYPE_FIELD}, - { "Level", RFL_LEVEL_FIELD}, - { "DataLen", RFL_DATA_LEN_FIELD}, - { "Data", RFL_DATA_FIELD}, - { "MoreData", RFL_MORE_DATA_FIELD}, - { "InsertFld", RFL_INSERT_FLD_FIELD}, - { "ModifyFld", RFL_MODIFY_FLD_FIELD}, - { "DeleteFld", RFL_DELETE_FLD_FIELD}, - { "EndChanges", RFL_END_CHANGES_FIELD}, - { "UnknownChangeType", RFL_UNKNOWN_CHANGE_TYPE_FIELD}, - { "Position", RFL_POSITION_FIELD}, - { "ReplaceBytes", RFL_REPLACE_BYTES_FIELD}, - { "UnknownChangeBytes", RFL_UNKNOWN_CHANGE_BYTES_FIELD}, - { "IndexSet", RFL_INDEX_SET_FIELD}, - { "IndexSet2", RFL_INDEX_SET2_FIELD}, - { "StartUnknown", RFL_START_UNKNOWN_FIELD}, - { "UserUnknown", RFL_UNKNOWN_USER_PACKET_FIELD}, - { "RFLName", RFL_HDR_NAME_FIELD}, - { "RFLVersion", RFL_HDR_VERSION_FIELD}, - { "FileNumber", RFL_HDR_FILE_NUMBER_FIELD}, - { "FileEOF", RFL_HDR_EOF_FIELD}, - { "DBSerialNum", RFL_HDR_DB_SERIAL_NUM_FIELD}, - { "FileSerialNum", RFL_HDR_FILE_SERIAL_NUM_FIELD}, - { "NextFileSerialNum", RFL_HDR_NEXT_FILE_SERIAL_NUM_FIELD}, - { "KeepSignature", RFL_HDR_KEEP_SIGNATURE_FIELD}, - { "TransBeginEx", RFL_TRNS_BEGIN_EX_FIELD}, - { "UpgradeDB", RFL_UPGRADE_PACKET_FIELD}, - { "OldDbVersion", RFL_OLD_DB_VERSION_FIELD}, - { "NewDbVersion", RFL_NEW_DB_VERSION_FIELD}, - { "ReduceDb", RFL_REDUCE_PACKET_FIELD}, - { "BlockCount", RFL_BLOCK_COUNT_FIELD}, - { "LastCommitTransID", RFL_LAST_COMMITTED_TRANS_ID_FIELD}, - { "IndexSuspend", RFL_INDEX_SUSPEND_FIELD}, - { "IndexResume", RFL_INDEX_RESUME_FIELD}, - { "BlockChainFree", RFL_BLK_CHAIN_FREE_FIELD}, - { "TrackerRecDRN", RFL_TRACKER_REC_FIELD}, - { "EndBlockAddr", RFL_END_BLK_ADDR_FIELD}, - { "Flags", RFL_FLAGS_FIELD}, - { "InsertEncrypted", RFL_INSERT_ENC_FLD_FIELD}, - { "ModifyEncrypted", RFL_MODIFY_ENC_FLD_FIELD}, - { "Encrypted", RFL_ENC_FIELD}, - { "EncryptedDefId", RFL_ENC_DEF_ID_FIELD}, - { "EncryptedDataLen", RFL_ENC_DATA_LEN_FIELD}, - { "DataBaseKeyLen", RFL_DB_KEY_LEN_FIELD}, - { "DataBaseKey", RFL_DB_KEY_FIELD}, - { "WrapKey", RFL_WRAP_KEY_FIELD}, - { "EnableEncryption", RFL_ENABLE_ENCRYPTION_FIELD}, - { NULL, 0} -}; - // Local Prototypes void UIMain( @@ -1159,7 +1070,8 @@ FSTATIC RCODE viewRflShowHeader( // Create the name field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_NAME_FIELD, 0, &rc)) == NULL) + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_NAME_FIELD), + 0, &rc)) == NULL) { goto Exit; } @@ -1173,7 +1085,8 @@ FSTATIC RCODE viewRflShowHeader( // Create the version field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_VERSION_FIELD, 0, &rc)) == NULL) + if ((pNode = GedNodeCreate( &tmpPool, + makeTagNum( RFL_HDR_VERSION_FIELD), 0, &rc)) == NULL) { goto Exit; } @@ -1187,7 +1100,7 @@ FSTATIC RCODE viewRflShowHeader( // Create the file number field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_FILE_NUMBER_FIELD, + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_FILE_NUMBER_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -1201,7 +1114,7 @@ FSTATIC RCODE viewRflShowHeader( // Create the EOF field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_EOF_FIELD, + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_EOF_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -1215,7 +1128,7 @@ FSTATIC RCODE viewRflShowHeader( // Create the database serial number field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_DB_SERIAL_NUM_FIELD, + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_DB_SERIAL_NUM_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -1229,7 +1142,7 @@ FSTATIC RCODE viewRflShowHeader( // Create the file serial number field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_FILE_SERIAL_NUM_FIELD, + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_FILE_SERIAL_NUM_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -1243,7 +1156,7 @@ FSTATIC RCODE viewRflShowHeader( // Create the next file serial number field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_NEXT_FILE_SERIAL_NUM_FIELD, + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_NEXT_FILE_SERIAL_NUM_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -1257,7 +1170,7 @@ FSTATIC RCODE viewRflShowHeader( // Create the next file serial number field - if ((pNode = GedNodeCreate( &tmpPool, RFL_HDR_KEEP_SIGNATURE_FIELD, + if ((pNode = GedNodeCreate( &tmpPool, makeTagNum( RFL_HDR_KEEP_SIGNATURE_FIELD), 0, &rc)) == NULL) { goto Exit; @@ -2571,12 +2484,10 @@ RCODE viewRflNameTableInit( char szFileName[ F_PATH_MAX_SIZE]; HFDB hDb = HFDB_NULL; F_NameTable * pNameTable = NULL; - RFL_TAG_NAME * pTag; + FLMUINT uiTagNum; RCODE rc = FERR_OK; - /* - Try to open the database - */ + // Try to open the database if( RC_BAD( f_pathReduce( gv_szRflPath, szIoDbPath, szFileName))) { @@ -2625,16 +2536,16 @@ RCODE viewRflNameTableInit( // Build the name table - pTag = &RflDictTags[ 0]; - while( pTag->pszTagName) + uiTagNum = 0; + while (gv_szTagNames [uiTagNum]) { - if( RC_BAD( rc = pNameTable->addTag( NULL, pTag->pszTagName, - pTag->uiTagNum, FLM_FIELD_TAG, 0))) + if( RC_BAD( rc = pNameTable->addTag( NULL, gv_szTagNames [uiTagNum], + uiTagNum + 32769, FLM_FIELD_TAG, 0))) { flmAssert( 0); goto Exit; } - pTag++; + uiTagNum++; } *ppNameTable = pNameTable; @@ -2654,3 +2565,4 @@ Exit: return( rc); } +