本文整理汇总了C++中PatchData::Reset方法的典型用法代码示例。如果您正苦于以下问题:C++ PatchData::Reset方法的具体用法?C++ PatchData::Reset怎么用?C++ PatchData::Reset使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PatchData
的用法示例。
在下文中一共展示了PatchData::Reset方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main (int argc, char *argv[])
{
#ifndef _DEBUG
if(argc == 1)
{
PrintHelp();
return 0;
}
if(argc != 4)
{
printf("Too few arguments provided. Specify a patch file to create and the updated and original files for comparison.");
PrintHelp();
return 0;
}
#endif
FILE *updated, *original, *patch;
#if _DEBUG
updated = fopen("UWASA1patched.BIN", "rb");
#else
updated = fopen(argv[2], "rb");
#endif
if(!updated)
{
printf("Error opening updated file %s", argv[2]);
return 0;
}
#if _DEBUG
original = fopen("UWASA1.BIN", "rb");
#else
original = fopen(argv[3], "rb");
#endif
if(!original)
{
printf("Error opening original file %s", argv[3]);
return 0;
}
#if _DEBUG
patch = fopen("uwasa_1.ppf", "wb");
#else
patch = fopen(argv[1], "wb");
#endif
if(!patch)
{
printf("Error opening patch file %s", argv[1]);
return 0;
}
PatchHeader header;
header.Serialize(patch);
PatchData pd;
u8 updbyte, origbyte;
fread(&updbyte, 1, 1, updated);
fread(&origbyte, 1, 1, original);
while(!feof(updated))
{
if(!feof(original))
{
if(origbyte != updbyte)
{
if(pd.command != 0)
{
printf("Critical Error: Difference found, but command is add.\n");
return 0;
}
if(pd.size == 0) pd.offset = ftell(original) - 1;
pd.data[pd.size] = updbyte;
pd.size++;
if(pd.size == PATCH_DATA_MAXSIZE)
{
pd.Serialize(patch);
pd.Reset();
}
}
else if(pd.size > 0)
{
pd.Serialize(patch);
pd.Reset();
}
fread(&origbyte, 1, 1, original);
fread(&updbyte, 1, 1, updated);
}
else
{
// process remainder of updated data as additions
if(pd.size > 0)
{
pd.Serialize(patch);
}
pd.Reset();
pd.command = PATCH_CMD_ADD;
while(!feof(updated))
{
pd.data[pd.size] = updbyte;
pd.size++;
if(pd.size == PATCH_DATA_MAXSIZE)
//.........这里部分代码省略.........