#!/path/to/rebol -cs
REBOL [
Title: "Link Maintainer"
Date: 15-Sep-1999
File: %add-link.r
Purpose: "Cgi for maintaining links to REBOL materials"
Category: [cgi net 4]
]
print "Content-type: text/html^/^/"
secure [file quit net allow %links.dat [allow all]]
linkf: %links.dat
links: either exists? linkf [load linkf][copy []]
output: compose [
REBOL Links (now)
]
emit: func [thing][append output thing]
error: func [it][
emit reduce [#Error: it]
]
add-link: func [/local page script! groups][
if found? system/options/cgi/query-string [
script!: " [script!]"
do decode-cgi system/options/cgi/query-string
groups: [
[
any [not value? 'newlink not value? 'descrip]
exit
]
[
any [error? try [newlink: to-url newlink] not exists? newlink]
error [Bad URL]
exit
]
[
find links newlink
error [Sorry. I already have that link]
exit
]
[
not find page: read newlink "REBOL"
error [ There is no mention of REBOL at the URL you submitted.]
exit
]
[
found? script? page
none? find trim/all copy descrip append descrip script!
]
]
foreach group groups [all group]
append links reduce [newlink descrip]
save linkf links
]
]
add-link
foreach [link description] links [
emit reduce [
build-tag [A HREF (link)] description newline
]
]
print [
append output compose [
(build-tag [
FORM ACTION (second split-path system/options/script) METHOD "GET"
])
Add a link to a REBOL site:
URL:
Description:
The delay after submission is a result of the URL being confirmed.
]
]