Compares the two version numbers given by version1 and version2. Returns -1 if version1 is an earlier version than version2, 0 if they are equal, and 1 if version1 is later than version2.
實際上的用法可以看 tcllib 中 zipfile::decode module。
if {[package vcompare $tcl_patchLevel "8.6"] < 0} {
# Only needed pre-8.6
package require Trf ; # Wrapper to zlib
package require zlibtcl ; # Zlib usage. No commands, access through Trf
set ::zipfile::decode::native_zip_functs 0
} else {
set ::zipfile::decode::native_zip_functs 1
}
也就是如果 >= 8.6,使用內建的 zlib,如果小於就使用 Trf 與 zlibtcl。
接下來我檢查了一下 zipfile::decode module,發現 zipfile::decode module 並沒有修改完全,::zipfile::decode::GetFile 中沒有使用 native_zip_functs 來選擇要使用的 command。下面是修正的 patch。
deflate {
go $fd(fileloc)
nbytes $fd(csize)
- return [zip -mode decompress -nowrap 1 -- [getval]]
+ if {$::zipfile::decode::native_zip_functs} {
+ return [zlib inflate [getval]]
+ } else {
+ return [zip -mode decompress -nowrap 1 -- [getval]]
+ }
}
default {
Error "Unable to handle file \"$src\" compressed with method \"$fd(cm)\"" \
我已經在 Tcl Library Source Repository 開了一個 Ticket 來記錄這件事。
沒有留言:
張貼留言