1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
|
char *zOut;
if( blob_size(pDiff)<4 || memcmp(zDiff, "SVN", 4)!=0 ){
fossil_fatal("Invalid svndiff0 format");
}
zDiff += 4;
blob_zero(pOut);
while( zDiff<(blob_buffer(pDiff)+blob_size(pDiff)) ){
u64 offSrc = svn_get_varint(&zDiff);
/*u64 lenSrc =*/ svn_get_varint(&zDiff);
u64 lenOut = svn_get_varint(&zDiff);
u64 lenInst = svn_get_varint(&zDiff);
u64 lenData = svn_get_varint(&zDiff);
const char *zInst = zDiff;
const char *zData = zInst+lenInst;
u64 lenOld = blob_size(pOut);
blob_resize(pOut, lenOut+lenOld);
zOut = blob_buffer(pOut)+lenOld;
while( zDiff<zInst+lenInst ){
u64 lenCpy = (*zDiff)&0x3f;
const char *zCpy;
switch( (*zDiff)&0xC0 ){
case 0x00: zCpy = blob_buffer(pSrc)+offSrc; break;
|
>
>
>
>
|
|
|
|
|
|
|
|
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
|
char *zOut;
if( blob_size(pDiff)<4 || memcmp(zDiff, "SVN", 4)!=0 ){
fossil_fatal("Invalid svndiff0 format");
}
zDiff += 4;
blob_zero(pOut);
while( zDiff<(blob_buffer(pDiff)+blob_size(pDiff)) ){
u64 lenOut, lenInst, lenData, lenOld;
const char *zInst;
const char *zData;
u64 offSrc = svn_get_varint(&zDiff);
/*lenSrc =*/ svn_get_varint(&zDiff);
lenOut = svn_get_varint(&zDiff);
lenInst = svn_get_varint(&zDiff);
lenData = svn_get_varint(&zDiff);
zInst = zDiff;
zData = zInst+lenInst;
lenOld = blob_size(pOut);
blob_resize(pOut, lenOut+lenOld);
zOut = blob_buffer(pOut)+lenOld;
while( zDiff<zInst+lenInst ){
u64 lenCpy = (*zDiff)&0x3f;
const char *zCpy;
switch( (*zDiff)&0xC0 ){
case 0x00: zCpy = blob_buffer(pSrc)+offSrc; break;
|