sisong / HDiffPatch

a C\C++ library and command-line tools for Diff & Patch between binary files or directories(folder); cross-platform; runs fast; create small delta/differential; support large files and limit memory requires when diff & patch.
Other
1.52k stars 280 forks source link

兼容问题 #390

Closed 1029543947 closed 3 weeks ago

1029543947 commented 1 month ago

能否生成兼容bsdiff4.3并且压缩方式是lzma

sisong commented 1 month ago

这个就不叫兼容了吧,因为bsdiff4不支持lzma解码。
如果只是让hdiffz支持,理论上当然可以(我本地改了一下,都OK)。这需要一些小的修改:

  1. 替换压缩器和解压缩器,删除阻止bz2外其他压缩器和解压缩器的代码
  2. 需要修改解压缩器的代码才能兼容(否则就需要保存数据压缩前的大小),参考 _bz2DecompressPlugin_unsz 对 bz2DecompressPlugin的修改(即解压完所有数据后剩余输出数据填充0)。
  3. 如果不是为了一定要兼容已有的旧patch端,那推荐用hdiffz的格式就好了(比如 -c-zstd -SD格式),这个业界用的也很多,特别是大厂。