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
/
hotedit.icn
< prev
next >
Wrap
Text File
|
2000-07-29
|
4KB
|
102 lines
############################################################################
#
# File: hotedit.icn
#
# Subject: Program to edit a Mosaic hotlist
#
# Author: Gregg M. Townsend
#
# Date: June 23, 2000
#
############################################################################
#
# This file is in the public domain.
#
############################################################################
#
# ===> IMPORTANT NOTE: This program was written for "NCSA Mosaic 2.4"
# ===> and is incompatible with the current version of Mosaic.
#
# Hotedit makes it easy to edit the "hotlist" used with NCSA Mosaic,
# a program for grazing the Wide World Web (WWW). The Mosaic hotlist
# is a text file, and it can be edited directly, but this is difficult
# and error-prone. Pairs of lines must be kept together, and the long
# "Uniform Record Locator" (URL) lines make it hard to pick out the
# title lines, which are of more interest.
#
# Hotedit works by extracting the titles, bringing up an editor of the
# user's choice, then processing the results when the editor exits.
# The user can reorder, retitle, or delete lines; adding new entries
# is best done within NCSA Mosaic. It is vital that any editing
# preserve the three-digit number at the front of each line; hotedit
# uses this to reconnect the titles with the corresponding URLs.
#
# The editor is determined by the environment variable VISUAL (or, if
# that is missing, EDITOR). The hotlist file is assumed to be in the
# usual place, $HOME/.mosaic-hotlist-default. Because not all editors
# return a reasonable exit status, the hotlist is *always* rewritten;
# the previous edition is saved in $HOME/.mosaic-hotlist-backup.
#
# Hotedit shouldn't be run while NCSA Mosaic is running; when Mosaic
# exits, it is likely to overwrite the edited hotlist.
#
############################################################################
#
# Requires: Unix, NCSA Mosaic
#
############################################################################
$define TMPFILE "hotlist.tmp"
$define HOTFILE ".mosaic-hotlist-default"
$define HOTOLD ".mosaic-hotlist-backup"
$define HOTNEW ".mosaic-hotlist-revised"
$define HOTFORMAT "ncsa-xmosaic-hotlist-format-1"
procedure main()
local home, f, t, line, n, editor, command, urllist
home := getenv("HOME") | stop("no $HOME value")
chdir(home) | stop("can't chdir to ", home)
f := open(HOTFILE) | stop("can't open ", HOTFILE)
line := read(f) | stop("empty hotlist file")
line == HOTFORMAT | stop("unrecognized hotlist format")
line := read(f) | stop("truncated hotlist file")
line == "Default" | stop("unrecognized hotlist format")
t := open(TMPFILE, "w") | stop("can't write ", TMPFILE)
urllist := []
while put(urllist, read(f)) do {
line := read(f) | stop("ill-formated hotlist file")
if *urllist < 1000 then
n := right(*urllist, 3, "0")
else
n := *urllist
write(t, n, " ", line)
}
close(f)
close(t)
f := open(HOTNEW, "w") | stop("can't write ", HOTNEW)
editor := getenv("VISUAL") | getenv("EDITOR") | "/bin/vi"
command := editor || " " || TMPFILE
system(command)
t := open(TMPFILE) | stop("can't reopen ", TMPFILE)
write(f, HOTFORMAT)
write(f, "Default")
while line := read(t) do line ? {
if write(f, urllist[tab(many(&digits))]) then
write(f, move(1) & tab(0))
else
write(&errout, "invalid index: ", line)
}
remove(HOTOLD)
(rename(HOTFILE, HOTOLD) & rename(HOTNEW, HOTFILE)) |
stop("couldn't rename files; new file left in ", HOTNEW)
end