Info-zip移植并添加进度callback机制

这几天将解zip文件的开源项目Info-zip移植到了我们的跨平台框架下。
Info-zip的代码是我见到过的比较好的开源代码。首先是注释十分完备,这点对我们porting开源代码的人来说是至关重要的,没有注释的代码可严重影响理解代码的工作效率。而且注释的细节也考虑的很到位,对较长的if-else,#ifdef-#endif代码块的结尾,也都添加了注释,表明以上代码块的逻辑关系,便于阅读代码。
Info-zip本身对多平台的支持也十分完备,按readme上的说法,支持Unix,VMS,MSDOS,OS/2,Windows 9x,Windows NT, Atari, Macintosh, Amiga,  Acorn Risc等系统。本人比较土,有几个名称听都没听说过。对支持的每个平台,都有能编译执行的工程文件,分别放在各自的目录下,windows系列的有win32,wince和windll工程。
我们移植是利用的win32工程,将里面与平台相关的,比如内存操作和文件操作改成我们平台的函数,然后要注意的是在我们平台的编译文件中需要加上win32工程所用到的相关宏。使info-zip在移植后的平台上能够运行起来的过程还是比较简单的,但是接下来整理代码的过程就麻烦多了,以为需要把许多其他平台的无用代码去掉,这就是一个小心翼翼的费时费力过程了。
在Info-zip中添加进度callback,是为了和winzip类似,在解压的过程中能够让用户知道当前解压的进度,不会以为没有响应了。用户注册一个回调后。我们需要先遍历一下待解压文件,得到解压后所有的文件所占size大小,然后在解每个文件成功后,调用回调,返回总size和当前文件的size与名称,是外部可以显示进度。

你可能感兴趣的:(windows,unix,callback,平台,WinCE,跨平台)