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與名稱,是外部可以顯示進度。
發佈了31 篇原創文章 · 獲贊 2 · 訪問量 48萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章