- Added extractFile and extractAll to zipfiles.nim

-- Need to wait until libzip_all.c is updated to support Windows.

- Started working on "koch update".
-- Waiting on above to finish work.
This commit is contained in:
Amrykid 2011-12-24 12:14:17 -06:00
commit 2e0f9c8bf7
2 changed files with 42 additions and 0 deletions

View file

@ -142,3 +142,25 @@ iterator walkFiles*(z: var TZipArchive): string =
while i < num:
yield $zip_get_name(z.w, i, 0'i32)
inc(i)
proc extractFile*(z: var TZipArchive, srcFile: string, dest: PStream) =
var strm = getStream(z, srcFile)
while true:
if not strm.atEnd:
dest.write(strm.readStr(1))
else: break
dest.flush()
strm.close()
dest.close()
proc extractFile*(z: var TZipArchive, srcFile: string, dest: string) =
var file = newFileStream(dest, fmReadWrite)
extractFile(z, srcFile, file)
proc extractAll*(z: var TZipArchive, dest: string) =
for file in walkFiles(z):
extractFile(z, file, dest & "/" & extractFilename(file))