############################################################################
#
# File: zipread.icn
#
# Subject: Procedures for reading files from ZIP archives
#
# Author: Gregg M. Townsend
#
# Date: March 5, 2000
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# These Unix procedures read files from ZIP format archives by
# opening pipes to the "unzip" utility. It is assumed that
# "unzip" is in the shell search path.
#
# iszip(zname) succeeds if zname is a ZIP archive.
# zipdir(zname) opens a ZIP archive directory.
# zipfile(zname, fname) opens a member of a ZIP archive.
#
############################################################################
#
# iszip(zname) succeeds if the named file appears to be
# a ZIP format archive file.
#
############################################################################
#
# zipdir(zname) returns a pipe from which the members of the
# ZIP archive can be read, one per line, as if reading a
# directory. It is assumed that zname is a ZIP archive.
#
############################################################################
#
# zipfile(zname, fname) returns a pipe from which the
# file fname within the ZIP archive zname can be read.
# It is assumed that zname and fname are valid.
#
############################################################################
#
# Requires: UNIX with "unzip" utility.
#
############################################################################
# iszip(zname) -- succeed if zname is a ZIP archive file
procedure iszip(fname) #: check for ZIP archive
local f, s
f := open(fname, "ru") | fail
s := reads(f, 4)
close(f)
return s === "PK\03\04"
end
# zipdir(zname) -- returns a file representing the ZIP directory
procedure zipdir(zname) #: open ZIP directory
return open("unzip -l " || zname || " | sed -n 's/.*:.. //p'", "rp")
end
# zipfile(zname, fname) -- open file fname inside archive zname
procedure zipfile(zname, fname) #: open member of ZIP archive
return open("unzip -p " || zname || " " || fname, "rp")
end
This page produced by UniDoc on 2021/04/15 @ 23:59:44.