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

文件路径过长导致合并失败 #386

Closed wang931150 closed 3 weeks ago

wang931150 commented 2 months ago

在ios手机端实测时,如果传入文件路径过长,会出现 HPATCH_OPENREAD_ERROR 同样,生成文件路径过长,会出现 HPATCH_OPENWRITE_ERROR 是否路径长度受到 127字符长度限制?

sisong commented 2 months ago

不知道你如何测试的,按理说 hdiffpatch设计的文件名支持长度为4k,实际上按mac和ios操作系统说明应该可以到2k(应该是1k)。

wang931150 commented 2 months ago

不知道你如何测试的,按理说 hdiffpatch设计的文件名支持长度为4k,实际上按mac和ios操作系统说明应该可以到2k。

同样的文件,只进行了重命名,当文件名长一点时,就会返回 2,必须将总长度控制到一定长度之下,才可以正常生成,安卓下没有这个问题。

sisong commented 2 months ago

我查询资料,发现MaxOS的限制是文件和目录名称最大长度255,路径总和最长支持1k;
而我在Mac电脑上测试了hdiffz&hpatchz命令行,都能正确处理长路径: 实际测试的文件名长度超过200字节,单个文件路径+文件名长度约900字节(3个文件参数总和长度超2k),并且含中文字符。
而iOS系统上长度上限制应该是一样的(没有真机测试),而且库也并没有特别处理和限制。