home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.cs.arizona.edu
/
ftp.cs.arizona.edu.tar
/
ftp.cs.arizona.edu
/
icon
/
historic
/
v941.tgz
/
icon.v941src.tar
/
icon.v941src
/
ipl
/
progs
/
htget.icn
< prev
next >
Wrap
Text File
|
2001-10-04
|
2KB
|
83 lines
############################################################################
#
# File: htget.icn
#
# Subject: Program to get Web file using HTTP protocol
#
# Author: Gregg M. Townsend
#
# Date: September 27, 2001
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# Htget retrieves the raw text of a file from the world wide web using
# HTTP protocol. (Other protocols such as FTP are not supported.)
#
# usage: htget [-h | -b] URL
#
# The URL may be given with or without the "http://" prefix.
#
# If -h is given, a HEAD request is sent, requesting only information
# instead of the complete file.
#
# If -b is given, the header is stripped and the body is copied
# in binary mode.
#
############################################################################
#
# Links: cfunc, options
#
############################################################################
#
# Requires: UNIX, dynamic loading
#
############################################################################
link cfunc
link options
procedure main(args)
local opts, req, url, host, port, path, f
opts := options(args, "hb")
if \opts["h"] then
req := "HEAD"
else
req := "GET"
url := \args[1] | stop("usage: ", &progname, " [-h] url")
url ? {
="http:" | ="HTTP:" # skip optional http:
tab(many('/')) # skip optional //
host := tab(upto(':/') | 0)
if *host = 0 then
host := "localhost"
if not (=":" & (port := integer(tab(upto('/'))))) then
port := 80
if pos(0) then
path := "/"
else
path := tab(0)
}
if not (f := tconnect(host, port)) then
stop ("cannot connect to ", host, ":", port)
writes(f, req, " ", path, " HTTP/1.0\r\n")
writes(f, "\r\n")
flush(f)
seek(f, 1)
if \opts["b"] then {
while *read(f) > 0
while writes(reads(f, 32768))
}
else
while write(read(f))
end