added files for online describe(1) support

These are as they were last used in the late 90's.  They need
a major rework to integrate with the existing web/ftp site.
This commit is contained in:
Devin Reade 2012-09-14 21:17:50 -06:00
parent 3e6bac2857
commit 3b278d83e1
14 changed files with 4341 additions and 0 deletions

136
describe/Makefile Normal file
View File

@ -0,0 +1,136 @@
#
# $Id: Makefile,v 1.7 1999/07/03 16:55:41 gdr-ftp Exp $
#
# Devin Reade, January 1998
#
# What is the current version of describe, descc, and descu? (They're
# in lockstep.)
VERSION_SHORT = 106
VERSION_LONG = 1.0.6
###################################################################
###### You shouldn't have to change anything below this line ######
###################################################################
# This is the describe database source file.
DB_SRC = describe.src
# We print this in comments at the top of the generated html.
WARNING = This is a generated file. Do not edit.
# This is a file we generate so that we can make the indexed pages.
XREF = xref.db
# Where, in the ftp hierarchy, will the files go?
RELDIR = /ftp/pub/apple2/gs.specific/gno/doc
# The file which explains the db NuFX archives for the ftp site.
README_IN = README.src.in
README_OUT = README.src
# Files released to the ftp site.
RELEASE_README = desc.txt
RELEASE_SRC = desc.src.shk
RELEASE_DB = desc.db.shk
HEAD = head.html
TAIL = tail.html
FINAL_DIR = /home/gno/public_html/describe
HTML = dbase.html \
index.html \
program.html \
submit.html \
view.html
# Directories for generated files
GEN = $(FINAL_DIR)/gen
ENTRY = $(FINAL_DIR)/entry
# Directory for scratch files
TDIR = ./tmp
default: setup xref web readme
readme: setup $(README_OUT)
readme-install: $(RELDIR)/$(RELEASE_README)
xref: setup $(XREF)
release: setup default readme-install \
$(RELDIR)/$(RELEASE_SRC) \
$(RELDIR)/$(RELEASE_DB)
$(XREF): $(DB_SRC)
./mkindex < $(DB_SRC) > $(XREF)
./mkgen $(XREF)
chmod 644 $(GEN)/*
chmod 644 $(ENTRY)/*
OWNER = -ogdr -ga2ftp
MODE_F = -m444
MODE_X = -m775
$(RELDIR)/$(RELEASE_README): $(README_OUT)
install $(OWNER) $(MODE_F) $(README_OUT) $@
# We redirect nulib stdout to /dev/null because for some reason
# it's printing out a "-^H".
$(RELDIR)/$(RELEASE_SRC): $(DB_SRC)
@echo "installing $@"; \
cp $(DB_SRC) $(TDIR); \
udl -g $(TDIR)/$(DB_SRC); \
rm -f $@; \
cd $(TDIR); \
rm -f $(RELEASE_SRC); \
nulib cf $(RELEASE_SRC) $(DB_SRC) > /dev/null; \
install $(OWNER) $(MODE_F) $(RELEASE_SRC) $@
# We redirect nulib stdout to /dev/null because for some reason
# it's printing out a "-^H".
$(RELDIR)/$(RELEASE_DB): $(DB_SRC)
@echo "installing $@"; \
/usr/local/sbin/descc $(DB_SRC); \
cp /usr/lib/describe.db $(TDIR); \
cd $(TDIR); \
NULIBOPT=type=BIN; export NULIBOPT; \
rm -f $(RELEASE_DB); \
nulib cf $(RELEASE_DB) describe.db > /dev/null; \
install $(OWNER) $(MODE_F) $(RELEASE_DB) $@
web: setup
@tmpfile1=/tmp/desc.build.$$$$a; \
tmpfile2=/tmp/desc.build.$$$$b; \
trap "rm -f $$tmpfile1 $$tmpfile2" 0 1 2 15; \
dbdate="`./getdate -describe < $(DB_SRC)`"; \
for f in $(HTML); do \
rm -f $$tmpfile1; \
cat $(HEAD) $$f $(TAIL) > $$tmpfile1; \
htmldate="`./getdate -printdate < $$tmpfile1`"; \
rm -f $$tmpfile2; \
sed \
-e 's/%%WARNING%%/$(WARNING)/;' \
-e 's/%%VERSION_SHORT%%/$(VERSION_SHORT)/;' \
-e 's/%%VERSION_LONG%%/$(VERSION_LONG)/;' \
-e "s/%%LAST_UPDATE%%/$$htmldate/;" \
-e "s/%%DATE%%/$$dbdate/;" \
< $$tmpfile1 > $$tmpfile2; \
cmp -s $(FINAL_DIR)/$$f $$tmpfile2; \
if [ $$? -ne 0 ]; then \
echo "creating $(FINAL_DIR)/$$f"; \
mv $$tmpfile2 $(FINAL_DIR)/$$f; \
chmod 644 $(FINAL_DIR)/$$f; \
fi; \
done; \
rm -f $$tmpfile1 $$tmpfile2
$(README_OUT): $(README_IN) $(DB_SRC)
@echo "making $@"; \
dbdate="`./getdate -describe < $(DB_SRC)`"; \
sed -e "s,%%DATE%%,$$dbdate,;" < $(README_IN) > $@
setup:
@for d in $(GEN) $(ENTRY) $(FINAL_DIR) $(ENTRY) $(RELDIR) $(TDIR); do \
[ -d $$d ] || install -d -m755 $$d; \
done
clobber:; rm -rf *~ $(XREF) $(TDIR) $(README_OUT)
nuke:; rm -rf $(FINAL_DIR)/*

13
describe/README.src.in Normal file
View File

@ -0,0 +1,13 @@
The describe(8) utility shows current information on various programs.
Its information is contained in the describe database. The files
desc.src.shk and desc.db.shk each contain a copy of the most recently
released database.
These files were last modified %%DATE%%.
The file desc.src.shk contains the database "source" file, which is ASCII
and human-readable. The file desc.db.shk contains the precompiled version
of the database.
NOTE: You can only use this version of the precompiled database with
describe version 1.0.5 and later.

43
describe/dbase.html Normal file
View File

@ -0,0 +1,43 @@
<!-- $Id: dbase.html,v 1.2 1998/01/23 22:37:04 gdr-ftp Exp $ -->
<A HREF="gno/describe/index.html"><IMG src="icons/back.gif"
alt="Back to the Describe Database Page"
align="right" width="24" height="24" border="0"></A>
<BR CLEAR=RIGHT>
<H1 ALIGN=CENTER>Obtaining a Current Database</H1>
The describe database last updated on <b>%%DATE%%</b>.
<p>
The describe database consists of two files. The first is a specially
formatted ASCII file, known as the database &quot;source&quot; file.
It can be manually edited with any text editor, or updated with
<A HREF="gno/man/man8/descu.8.html">descu</A>(8).
It doesn't really matter where on your system this file resides, but the path
<b>/usr/lib/describe.src</b>
is recommended.
<p>
The second file is the compiled database file. This file is compiled
from the source file by the
<A HREF="gno/man/man8/descc.8.html">descc</A>(8)
program. It is a binary file and not human-readable. Unless the
<b>DESCDB</b>
environment variable has been set, this file <em> must </em> have the
pathname
<b>/usr/lib/describe.db</b>.
<p>
Both files are available here:
<ul>
<li>database source file:
<A HREF="ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc/desc.src.shk">
ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc/desc.src.shk</A>
<li>precompiled database:
<A HREF="ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc/desc.db.shk">
ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc/desc.db.shk</A>
</ul>
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.
<p>

3325
describe/describe.src Normal file

File diff suppressed because it is too large Load Diff

67
describe/getdate Executable file
View File

@ -0,0 +1,67 @@
#! /usr/bin/perl -s
#
# getdate -date
# Extract the date from the RCS Id string in a file on stdin.
#
# getdate -version
# Extract the RCS version from the RCS Id string in a file on stdin.
#
# getdate -describe
# Extract the "last modified" date from a describe(1) database
# source file.
#
# $Id: getdate,v 1.1 1998/01/14 05:10:10 gdr Exp $
#
push(@month,
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
"Oct", "Nov", "Dec" );
# for ($i=0; $i<12; $i++) {
# printf("month %d is %s\n", $i, $month[$i]);
# }
if (defined($date)) {
$printdate = 1;
}
if (defined($version)) {
$printversion = 1;
}
if (defined($describe)) {
while(<>) {
(/^\#\s+Last\s+revision:\s+(.*)/) && printf("%s\n", $1) && last;
}
exit(0);
}
while(<>) {
if (/\$Id([^\$]*)\$/) {
$_ = $1;
if (/^:\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+/) {
$file=$1;
$version=$2;
$rawdate=$3;
$time=$4;
if ($rawdate =~ m,(\d+)/(\d+)/(\d+),) {
$year = $1;
$m = $2;
$day = $3;
$mon = @month[int($2) - 1];
$date = "$day $mon $year";
}
} else {
$date = "(unspecified date)";
}
if ($printdate) {
printf("%s\n", $date);
} elsif ($printversion) {
printf("%s\n", $version);
} else {
printf("getdate: bad invocation\n");
exit(1);
}
exit(0);
}
}
exit(1);

14
describe/head.html Normal file
View File

@ -0,0 +1,14 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<!-- %%WARNING%% -->
<HEAD>
<TITLE>Apple IIgs Describe Database</TITLE>
<META name="description" content="List of Utilities for GNO/ME">
<META name="keywords" content="Apple IIgs ORCA/Shell James Brookes">
<BASE HREF="http://www.gno.org/">
</HEAD>
<BODY background="icons/bluebg.jpg" text="#000000" bgcolor="#00C0FF"
link="#0000FF" alink="#001177" vlink="#001177">

53
describe/index.html Normal file
View File

@ -0,0 +1,53 @@
<!-- $Id: index.html,v 1.1 1998/01/14 05:10:12 gdr Exp $ -->
<A HREF="gno"><IMG src="icons/back.gif" alt="Back to the GNO Home Page"
align="right" width="24" height="24" border="0"></A>
<BR CLEAR=RIGHT>
<H1 ALIGN=CENTER>Home of James' describe database</H1>
The current version of describe is <b>%%VERSION_LONG%%</b>.
<br>
The describe database was last updated <b>%%DATE%%</b>.
<p>
<hr>
<p>
A while ago, James Brookes wrote a utility called &quot;describe&quot;.
It has a simple purpose: To maintain a database of utilities for
<A HREF="gno">GNO/ME</A>
and
<A HREF="http://hypermall.com/byteworks">ORCA/Shell</A>
and offer a way to get a concise description of a utility quickly and easily.
<P>
Since describe is nothing without an up-to-date database,
<A HREF="http://www.arrowweb.com/sbehrens">S&ouml;nke Behrens</A> created
the first online describe database, which provided a central repository
for the data, and an easy mechanism for updating that data.
<p>
Leslie Barstow also maintains an online version of the describe database.
(He gets his data from S&ouml;nke.)
His version is indexed by alphabet and category, and is searchable.
You can find his version at
<A href="http://www.servtech.com/public/phoenix/computers/gno">
http://www.servtech.com/public/phoenix/computers/gno</A>.
<p>
This page is based heavily on S&ouml;nke's and Leslie's work.
From this page you can:
<ul>
<li>download the current version of the
<A HREF="gno/describe/program.html">describe program</A>;
<li>download the current version of the
<A HREF="gno/describe/dbase.html">database</A>;
<li><A HREF="gno/describe/submit.html">make submissions</A>
for new entries and updates; and
<li><A HREF="gno/describe/view.html">view current entries</A>;
</ul>
<p>
Back to the <A HREF="gno">GNO Web Page</A>.
<p>

255
describe/mkgen Executable file
View File

@ -0,0 +1,255 @@
#! /usr/bin/perl
# This script makes the generated files used by the describe(1) web
# page. It's not pretty, but it works.
#
# Devin Reade, January 1998.
#
# $Id: mkgen,v 1.5 1999/07/03 16:55:42 gdr-ftp Exp $
#
$gnohome_internal = "/home/gno/public_html";
$gnohome_external = "http://www.gno.org/~gno";
$gendir = "describe/gen"; # relative to $gnohome_*
$entrydir = "describe/entry"; # relative to $gnohome_*
$basedir = $gnohome_internal . '/' . $gendir;
$headinfo =
'<!-- This page is auto-generated -->' . "\n" .
'<META name="description" content="List of Utilities for GNO/ME">' . "\n".
'<META name="keywords" content="Apple IIgs ORCA/Shell James Brookes">'
. "\n".
'<BASE HREF="http://www.gno.org/">'. "\n";
$bodyinfo =
'<BODY background="icons/bluebg.jpg" text="#000000" bgcolor="#00C0FF"'.
' link="#0000FF" alink="#001177" vlink="#001177">' . "\n";
$tailinfo =
'<hr>' . "\n" .
'Comments on this page should be forwarded to Devin Reade at' . "\n" .
'<A HREF="mailto:gdr@trenco.gno.org">gdr@trenco.gno.org</A>' . "\n" .
'<p>' . "\n" .
'<img alt="Apple II Viewable Page" height=31 width=88 border=0' . "\n" .
'src="icons/a2viewable.gif">' . "\n" .
'<br>' . "\n" .
'</body>' . "\n" .
'</html>';
$categoryMap{""} = "";
$categoryMap{"gno/archive"} = "archive";
$categoryMap{"gno/comm"} = "comm";
$categoryMap{"gno/crypto"} = "crypto";
$categoryMap{"gno/daemons"} = "daemon";
$categoryMap{"gno/doc.utils"} = "docutil";
$categoryMap{"gno/editors"} = "edit";
$categoryMap{"gno/file.convert"} = "file.convert";
$categoryMap{"gno/file.manip"} = "file.manip";
$categoryMap{"gno/games"} = "games";
$categoryMap{"gno/graphics"} = "graphics";
$categoryMap{"gno/gui"} = "gui";
$categoryMap{"gno/languages"} = "lang";
$categoryMap{"gno/libraries"} = "lib";
$categoryMap{"gno/mail"} = "mail";
$categoryMap{"gno/network"} = "network";
$categoryMap{"gno/news"} = "news";
$categoryMap{"gno/patches"} = "patch";
$categoryMap{"gno/productivity"} = "productivity";
$categoryMap{"gno/programming"} = "prog";
$categoryMap{"gno/scripting"} = "script";
$categoryMap{"gno/shells"} = "shells";
$categoryMap{"gno/sounds"} = "sound";
$categoryMap{"gno/sys"} = "sys";
$categoryMap{"gno/sysadmin"} = "sysadmin";
$categoryMap{"gno/text.utils"} = "text";
$categoryMap{"orca/scripting"} = "script";
$categoryMap{"unsorted"} = "unsorted";
$categoryNames{"archive"} = "Archiving Utilities";
$categoryNames{"comm"} = "Communications Utilities";
$categoryNames{"crypto"} = "Cryptography";
$categoryNames{"daemon"} = "Daemons";
$categoryNames{"docutil"} = "Documentation Utilities";
$categoryNames{"edit"} = "Editors, Word Processors, and Document " .
"Viewers";
$categoryNames{"file.convert"} = "File Conversion Utilities";
$categoryNames{"file.manip"} = "File Manipulation Utilities";
$categoryNames{"games"} = "Games";
$categoryNames{"graphics"} = "Graphics Programs";
$categoryNames{"gui"} = "GUI";
$categoryNames{"lang"} = "Programming Languages";
$categoryNames{"lib"} = "Libraries";
$categoryNames{"mail"} = "Mail Readers";
$categoryNames{"network"} = "Networking Utilities";
$categoryNames{"news"} = "News Readers";
$categoryNames{"patch"} = "Patch Programs";
$categoryNames{"productivity"} = "Productivity";
$categoryNames{"prog"} = "Programming Utilities";
$categoryNames{"script"} = "Scripting Utilities";
$categoryNames{"shells"} = "Shells";
$categoryNames{"sound"} = "Sound and Music Utilities";
$categoryNames{"sys"} = "System Utilities";
$categoryNames{"sysadmin"} = "System Administration Utilities";
$categoryNames{"text"} = "Text Manipulation Utilities";
$categoryNames{"unsorted"} = "Utilities Not Yet Sorted";
while (<>) {
($name, $classes) = split;
$namelist{$name} = $classes;
}
@keylist = keys(%namelist);
@sorted = sort(@keylist);
$currentLetter = '';
foreach $f (@sorted) {
# create the describe entry
open(pp, "/usr/local/bin/describe $f|")
|| die ("couldn't open pipe to 'describe $f'");
$filename = "$gnohome_internal/$entrydir/$f.html";
open(fp2, "> $filename") || die("couldn't open $filename");
printf(fp2
"<html>\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- %s</title>\n" .
"</head>%s" .
"<body bgcolor=#ffffff>\n" .
"<h1>Describe Entry for %s</h1>\n" .
"<pre>\n",
$f, $headinfo, $f);
while($_ = <pp>) {
printf(fp2 "%s", $_);
}
printf(fp2 "</pre>\n%s\n", $tailinfo);
close(fp2);
close(pp);
# make the index-by-name page
$l = substr($f, 0, 1);
if ($l ne $currentLetter) {
($currentLetter eq '') ||
(printf(fp "</ul>%s\n", $tailinfo) && close(fp));
$filename = $basedir . '/' . $l . '.html';
open(fp, "> $filename") || die("couldn't open $filename");
$currentLetter = $l;
$cap = $l;
$cap =~ tr/a-z/A-Z/;
printf(fp
"<html>\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- Index by %s</title>\n".
"%s\n" .
"</head>\n" .
"%s\n" .
"<h1>Describe Entries by Name: %s</h1>\n" .
"<ul>\n",
$cap, $headinfo, $bodyinfo, $cap);
}
printf(fp "<li><A HREF=\"%s/%s/%s.html\">%s</A>\n",
$gnohome_external, $entrydir, $f, $f);
# save the category for later
@catlist = split(/:/, $namelist{$f});
foreach $catentry (@catlist) {
if (!defined($categoryMap{$catentry})) {
printf(stderr "WARNING: Unregistered category \"%s\" for %s: " .
"skipped\n",
$catentry, $f);
} elsif ($categoryMap{$catentry} ne '') {
$categories{$categoryMap{$catentry}} .= $f . ':';
}
}
}
($currentLetter eq '') ||
(printf(fp "</ul>\n%s\n", $tailinfo) && close(fp));
$letters = "a b c d e f g h i j k l m n o p q r s t u v w x y z";
@letter = split(/\s+/, $letters);
foreach $l (@letter) {
$cap = $l;
$cap =~ tr/a-z/A-Z/;
$filename = "$basedir/$l.html";
if (! -f $filename) {
open(fp, "> $filename") || die("couldn't open $filename");
printf(fp
"<html>\n" .
"<!-- This page is auto-generated -->\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- Index by " . $cap .
"</title>\n" .
"</head>\n" .
"<body bgcolor=#ffffff>\n" .
"<H1>Empty Page</H1>\n" .
"There are currently no utilities registered that begin ".
"with " . $cap . ".<p>%s\n",
$tailinfo);
close(fp);
}
}
#
# Now do them by category
#
@catkeys = keys(%categories);
foreach $k (@catkeys) {
$file = $basedir . '/' . $k . '.html';
open(fp, "> $basedir/$k.html") || die("could not open $basedir/$k.html");
printf(fp
"<html>\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- By Category</title>\n" .
"%s\n" .
"</head>\n" .
"%s\n",
$headinfo, $bodyinfo);
if (defined($categoryNames{$k})) {
printf(fp
"<h1>%s</h1><hr>\n",
$categoryNames{$k});
} else {
printf(stderr "WARNING: No category name for \"%s\"\n", $k);
}
printf(fp "<ul>\n");
@files = sort(split(/:/, $categories{$k}));
foreach $f (@files) {
printf(fp "<li><A HREF=\"%s/%s/%s.html\">%s</A>\n",
$gnohome_external, $entrydir, $f, $f);
}
printf(fp "</ul>\n%s\n", $tailinfo);
close(fp);
}
# make category pages for which there is no entry
@catkeys = values(%categoryMap);
foreach $k (@catkeys) {
$filename = $basedir . "/" . $k . '.html';
if (! -f $filename) {
open(fp, ">$filename") || die("couldn't open $filename: $!");
printf(fp
"<html>\n" .
"<!-- This page is auto-generated -->\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- By Category</title>\n" .
"%s\n" .
"</head>\n" .
"%s\n",
$headinfo, $bodyinfo);
if (defined($categoryNames{$k})) {
printf(fp
"<h1>%s</h1><hr>\n",
$categoryNames{$k});
} else {
printf(stderr "WARNING: No category name for \"%s\"\n", $k);
}
printf(fp
"There are currently no <b>describe</b>(1) entries in this ".
"category.\n" .
"%s\n", $tailinfo);
close(fp);
}
}

177
describe/mkindex Executable file
View File

@ -0,0 +1,177 @@
#! /usr/bin/perl
# This script makes the index listing used sort describe entries by
# category. It gets most of its information from where utilities
# reside in the GNO ftp hierarchy.
#
# Devin Reade, January 1998
#
# $Id: mkindex,v 1.4 1999/07/03 16:55:42 gdr-ftp Exp $
#
$dirroot = "/ftp/pub/apple2/gs.specific";
$dirlist = "gno orca";
$describe = '/usr/local/bin/describe';
# This is a list of describe entries which we want to force into a
# given category. This should only be used when a utility doesn't have
# an entry of its own in the .index.src files as a result of being
# archived with another utility. For example, we fudge "descc" and
# "descu" because they are archived in with "describe".
$fudgelist{"cclean"} = "gno/programming"; # with occ
$fudgelist{"ccprep"} = "gno/programming"; # with occ
$fudgelist{"cjpeg"} = "gno/graphics"; # part of jpeg tools
$fudgelist{"djpeg"} = "gno/graphics"; # part of jpeg tools
$fudgelist{"jpegtran"} = "gno/graphics"; # part of jpeg tools
$fudgelist{"rdjpgcom"} = "gno/graphics"; # part of jpeg tools
$fudgelist{"wrjpgcom"} = "gno/graphics"; # part of jpeg tools
$fudgelist{"descc"} = "gno/doc.utils"; # with describe
$fudgelist{"descu"} = "gno/doc.utils"; # with describe
$fudgelist{"fortune"} = "gno/games"; # resolve fortuna-[abc]
$fudgelist{"newuserv"} = "gno/sysadmin"; # with newuser
# $fudgelist{""} = "";
# Actually, another possibility is that the file is not up for ftp in the
# pre-packaged directories, but is rather part of the GNO base distribution.
$fudgelist{"aroff"} = "gno/doc.utils";
$fudgelist{"asml"} = "gno/programming";
$fudgelist{"assemble"} = "gno/programming";
$fudgelist{"aw30"} = "gno/doc.utils";
$fudgelist{"binprint"} = "gno/editors";
$fudgelist{"blist"} = "gno/editors";
$fudgelist{"cal"} = "gno/games";
$fudgelist{"cat"} = "gno/editors";
$fudgelist{"center"} = "gno/text.utils";
$fudgelist{"chtyp"} = "gno/file.manip";
$fudgelist{"cksum"} = "gno/archive";
$fudgelist{"cmp"} = "gno/text.utils";
$fudgelist{"cmpl"} = "gno/programming";
$fudgelist{"colcrt"} = "gno/doc.utils";
$fudgelist{"compile"} = "gno/programming";
$fudgelist{"ctags"} = "gno/programming";
$fudgelist{"cu"} = "gno/network";
$fudgelist{"df"} = "gno/sys";
$fudgelist{"dial"} = "gno/network";
$fudgelist{"duplex"} = "gno/network";
$fudgelist{"eps"} = "gno/sys";
$fudgelist{"expr"} = "gno/scripting";
$fudgelist{"false"} = "gno/scripting";
$fudgelist{"fmt"} = "gno/editors";
$fudgelist{"ftp"} = "gno/network";
$fudgelist{"gsh"} = "gno/shells";
$fudgelist{"head"} = "gno/editors";
$fudgelist{"help"} = "gno/doc.utils";
$fudgelist{"inetd"} = "gno/network";
$fudgelist{"init"} = "gno/daemons";
$fudgelist{"kill"} = "gno/sys";
$fudgelist{"link"} = "gno/programming";
$fudgelist{"list"} = "gno/doc.utils";
$fudgelist{"logger"} = "gno/scripting";
$fudgelist{"login"} = "gno/daemons";
$fudgelist{"lseg"} = "gno/programming";
$fudgelist{"mkfs"} = "gno/sysadmin";
$fudgelist{"mkso"} = "gno/sysadmin";
$fudgelist{"phone"} = "gno/mail";
$fudgelist{"pwd"} = "gno/sys";
$fudgelist{"rcp"} = "gno/network";
$fudgelist{"remote"} = "gno/network";
$fudgelist{"removerez"} = "gno/file.convert";
$fudgelist{"rlogin"} = "gno/network";
$fudgelist{"rsh"} = "gno/network";
$fudgelist{"rtf2text"} = "gno/file.convert";
$fudgelist{"sed"} = "gno/editors";
$fudgelist{"sendmail"} = "gno/mail";
$fudgelist{"sleep"} = "gno/scripting";
$fudgelist{"su"} = "gno/sysadmin";
$fudgelist{"syslogd"} = "gno/daemons";
$fudgelist{"sz"} = "gno/comm";
# $fudgelist{"tr"} = "gno/text.utils";
# $fudgelist{"trek"} = "gno/games";
$fudgelist{"true"} = "gno/scripting";
$fudgelist{"uniq"} = "gno/text.utils";
$fudgelist{"uptimed"} = "gno/daemons";
$fudgelist{"wc"} = "gno/text.utils";
$fudgelist{"who"} = "gno/sys";
$fudgelist{"whois"} = "gno/sys";
$fudgelist{"yes"} = "gno/scripting";
#
# Get the list of .index.src files. We will look in here for references
# to the describe database.
#
open(fp, "(cd $dirroot; find $dirlist -name .index.src -print)|") ||
die("couldn't get file list");
@indexfiles = <fp>;
close(fp);
# extract all the program names from the db source file.
while(<>) {
chop;
if (/^Name:\s+(.*)/) {
$name = $1;
$name =~ s/\s+$//;
if ($name =~ /\s+/) {
printf(stderr "%s:%d: Multi-word program name \"%s\". Skipped.\n",
$ARGV, $., $name);
} else {
$name =~ tr/A-Z/a-z/;
$namelist{$name} = ':';
}
}
}
foreach $f (@indexfiles) {
chop($f);
if (open(fp, "$dirroot/$f")) {
$f2 = $f;
$f2 =~ s,/.index.src$,,;
while ($_ = <fp>) {
if (/%%describe%%([^%]+)%%/) {
$ref = $1;
$ref =~ tr/A-Z/a-z/;
if (defined($namelist{$ref})) {
($namelist{$ref} .= "$f2:")
unless ($namelist{$ref} =~ /:$f2:/);
} else {
printf(stderr
"%s/%s:%d: Warning: Reference to program (\"%s\") ".
"not in database. Entry skipped.\n",
$dirroot, $f, $., $ref);
}
}
}
} else {
printf("couldn't open %s/%s: file skipped", $dirroot, $f);
}
}
# print out the results.
@keylist = keys(%namelist);
foreach $k (@keylist) {
$s = $namelist{$k};
if ($s eq ':') {
if (defined($fudgelist{$k})) {
$s = ':' . $fudgelist{$k} . ':';
} else {
$s = ':unsorted:';
$result = system("$describe $k > /dev/null") / 256;
if ($result == 0) {
printf(stderr
"WARNING: '$k' is showing up as 'unsorted', but has ".
"a describe(1) entry.\n\tThis probably means that the ".
".index.src file is not using an\n\texisting".
"describe entry.\n", $k);
}
}
} elsif (defined($fudgelist{$k})) {
printf(stderr
"WARNING: %s should no longer be in the fudge list\n", $k);
}
printf("%s\t%s\n", $k, $s);
}

32
describe/program.html Normal file
View File

@ -0,0 +1,32 @@
<!-- $Id: program.html,v 1.2 1998/01/23 22:38:16 gdr-ftp Exp $ -->
<A HREF="gno/describe/index.html"><IMG src="icons/back.gif"
alt="Back to the Describe Database Page"
align="right" width="24" height="24" border="0"></A>
<BR CLEAR=RIGHT>
<H1 ALIGN=CENTER>Obtaining the Describe Program</H1>
The current version of describe is <b>%%VERSION_LONG%%</b>.
<p>
If you don't have describe yet, or if yours is out-of-date, you can
obtain a current copy from
<A HREF="ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc.utils/describe%%VERSION_SHORT%%.shk">
ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc.utils/describe%%VERSION_SHORT%%.shk</A>
This archive actually consists of three different programs:
<ul>
<li><A HREF="gno/man/man1/describe.1.html">describe</A>,
the program which prints out the requested describe entry;
<li><A HREF="gno/man/man8/descc.8.html">descc</A>,
which compiles the describe database input &quot;source&quot; file
into a binary database; and
<li><A HREF="gno/man/man8/descu.8.html">descu</A>,
which can be used for batch updates to the describe database
&quot;source&quot; file.
</ul>
<p>
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.
<p>

101
describe/submit.html Normal file
View File

@ -0,0 +1,101 @@
<!-- $Id: submit.html,v 1.4 1998/02/18 00:24:09 gdr-ftp Exp $ -->
<A HREF="gno/describe/index.html"><IMG src="icons/back.gif"
alt="Back to the Describe Database Page"
align="right" width="24" height="24" border="0"></A>
<BR CLEAR=RIGHT>
<H1 ALIGN=CENTER>Making Submissions</H1>
If you have written a shell program for GNO or ORCA/Shell, please take a
minute and submit a describe entry. If you don't know what a describe
entry looks like, see the
<A HREF="gno/man/man8/descc.8.html">descc</A>(8)
manual page or look at the describe database source file. Alternately,
the file
<A HREF="pub/apple2/gs.specific/gno/doc/templates10.shk">
ftp://ftp.gno.org/pub/apple2/gs.specific/gno/doc/templates10.shk</A>
contains examples of describe entries plus other recommended methods of
documenting your programs.
<p>
There are two ways to submit a describe entry:
<ol>
<li>Use the <A HREF="gno/describe/submit.html#form">form</A>, below; or
<li>Email your entry or entries to
<A HREF="mailto:describe-submit@trenco.gno.org">
describe-submit@trenco.gno.org</A>.
<p>
Since the recipient of this address is a filter, is is mandatory
that your mail conform to the following conventions:
<ul>
<li>You must have the word &quot;describe&quot; somewhere in the
subject line. The case doesn't matter.
<li>The body of your message may only contain one or more describe
entries. All field names (such as &quot;Name:&quot; and
&quot;Shell:&quot;) must be at the start of a line. The
last (description) field is ended either at the end of the
message, or when the next &quot;Name:&quot; field is found.
<li>If your email software appends your .signature file, ensure
that your signature is delimited from the body of the message
in the standard fashion: By two dash ('-') characters
followed by a newline. There newline may be preceeded by
whitespace.
<li>Do not use mailers which automaticly insert html formatting
information outside of the message headers.
</ul>
If your email does not conform to these conventions, then it will
be ignored by the filter.
</ol>
The master database may take a few days before it is updated, regardless
of which method you use. This is because a human reviews the entries
before they are added to the database. This check is done to avoid
abuse by malicious individuals.
<p>
We recommend that you actually include a describe entry in with your
program files. (Describe files usually use the suffix &quot;.desc&quot).
That way, it is easier to remember to update your describe entry when
you update your program, and you only have to fill out the information
once.
<p>
If you are updating a program that has been around for a while, you
might want to check for an existing describe entry before making a
submission. Many programs have entries in the database even though
none are included in the sources. (In most cases, the programs predate
the database.)
<p>
<A NAME="form">
<!-- http://www.arrowweb.com/cgi-bin/cgi-email/sbehrens/descform.txt -->
<form action="cgi-bin/describe.cgi"
method="post">
<table border="5">
<tr><td>Program name:<td><input type="Text" name="Name">
<tr><td>Program version:<td><input type="Text" name="Version">
<tr><td>Shell(s) supported:
<td><input type="CheckBox" name="Shell1" value="GNO/ME"> GNO/ME
<tr><td>
<td><input type="CheckBox" name="Shell2" value="ORCA/Shell"> ORCA/Shell
<tr><td>Author name:<td><input type="Text" name="Author">
<tr><td>Author email:<td><input type="Text" name="Contact">
<tr><td>Location (e.g. /usr/local/bin):<td><input type="Text" name="Location">
<tr><td>FTP site:<td><input type="Text" name="Ftp">
</TABLE>
<br>
Description of program:<br>
<textarea name="Description" cols="62" rows="6"></textarea>
<p>
Everything in order? Then send it off, and it will be online shortly.
<p>
<input type="Submit" name="Submit" value="Submit new describe entry">
<input type="Reset" name="Reset" value="Clear all fields">
</form>
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.
<p>

14
describe/tail.html Normal file
View File

@ -0,0 +1,14 @@
<hr>
This page was last updated <b>%%LAST_UPDATE%%</b>.
<br>
Comments on this page should be forwarded to Devin Reade at
<A HREF="mailto:gdr@gno.org">gdr@gno.org</A>
<p>
<img alt="Apple II Viewable Page" height=31 width=88 border=0
src="icons/a2viewable.gif">
<br>
</body>
</html>

9
describe/template Normal file
View File

@ -0,0 +1,9 @@
Name:
Version:
Shell:
Author:
Contact: -
Where:
FTP: ftp.gno.org

102
describe/view.html Normal file
View File

@ -0,0 +1,102 @@
<!-- $Id: view.html,v 1.4 1999/07/03 16:55:42 gdr-ftp Exp $ -->
<A HREF="gno/describe/index.html"><IMG src="icons/back.gif"
alt="Back to the Describe Database Page"
align="right" width="24" height="24" border="0"></A>
<BR CLEAR=RIGHT>
<H1 ALIGN=CENTER>Viewing Current Entries</H1>
The entries are sorted in a few ways. Select whichever is appropriate.
<p>
<dt>By Name:
<dd>
<A HREF="gno/describe/gen/a.html">A</A>
<A HREF="gno/describe/gen/b.html">B</A>
<A HREF="gno/describe/gen/c.html">C</A>
<A HREF="gno/describe/gen/d.html">D</A>
<A HREF="gno/describe/gen/e.html">E</A>
<A HREF="gno/describe/gen/f.html">F</A>
<A HREF="gno/describe/gen/g.html">G</A>
<A HREF="gno/describe/gen/h.html">H</A>
<A HREF="gno/describe/gen/i.html">I</A>
<A HREF="gno/describe/gen/j.html">J</A>
<A HREF="gno/describe/gen/k.html">K</A>
<A HREF="gno/describe/gen/l.html">L</A>
<A HREF="gno/describe/gen/m.html">M</A>
<A HREF="gno/describe/gen/n.html">N</A>
<A HREF="gno/describe/gen/o.html">O</A>
<A HREF="gno/describe/gen/p.html">P</A>
<A HREF="gno/describe/gen/q.html">Q</A>
<A HREF="gno/describe/gen/r.html">R</A>
<A HREF="gno/describe/gen/s.html">S</A>
<A HREF="gno/describe/gen/t.html">T</A>
<A HREF="gno/describe/gen/u.html">U</A>
<A HREF="gno/describe/gen/v.html">V</A>
<A HREF="gno/describe/gen/w.html">W</A>
<A HREF="gno/describe/gen/x.html">X</A>
<A HREF="gno/describe/gen/y.html">Y</A>
<A HREF="gno/describe/gen/z.html">Z</A>
<p>
<dt>By Category:
<dd><ul>
<li><A HREF="gno/describe/gen/archive.html">Archiving Utilities</A>.
This includes utilities for compression, ascii encoding,
Binary-II encoding, and related functionality.
<li><A HREF="gno/describe/gen/comm.html">Communications Utilities</A>.
<li><A HREF="gno/describe/gen/crypto.html">Cryptography</A>.
<li><A HREF="gno/describe/gen/daemon.html">Daemons</A>.
These are programs which run periodically in the background, or
asynchronously as required.
<li><A HREF="gno/describe/gen/docutil.html">Documentation Utilities</A>.
These are utilities intended for viewing and maintaining
documentation, and for locating other utilties.
<li><A HREF="gno/describe/gen/edit.html">Editors, Word Processors, and
Document Viewers</A>.
<li><A HREF="gno/describe/gen/file.convert.html">File Conversion Utilities</A>.
This includes utilities for newline conversion, entabbing and
detabbing, stripping control characters, and file format translations.
<li><A HREF="gno/describe/gen/file.manip.html">File Manipulation Utilities</A>,
for copying, renaming, or deleting files, changing file attributes,
and similar operations.
<li><A HREF="gno/describe/gen/games.html">Games</A>.
This also includes programs that are not really games, but fall
under this category in a traditional UNIX environment such as text
banners, reminder programs, and sound and music players.
<li><A HREF="gno/describe/gen/graphics.html">Graphics Programs</A>.
<li><A HREF="gno/describe/gen/gui.html">GUI</A>.
Most GNO programs are intended for use with the text interface.
This list includes graphics programs such as window managers and
their modules.
<li><A HREF="gno/describe/gen/lang.html">Programming Languages</A>.
Assemblers, compilers, and interpreters.
<li><A HREF="gno/describe/gen/lib.html">Libraries</A>.
<li><A HREF="gno/describe/gen/mail.html">Mail Readers</A>.
<li><A HREF="gno/describe/gen/network.html">Networking Utilities</A>.
<li><A HREF="gno/describe/gen/news.html">News Readers</A>.
<li><A HREF="gno/describe/gen/patch.html">Patch Programs</A>.
<li><A HREF="gno/describe/gen/productivity.html">Personal Productivity</A>
(calculators, calendars, etc)
<li><A HREF="gno/describe/gen/prog.html">Programming Utilities</A>.
<li><A HREF="gno/describe/gen/script.html">Scripting Utilities</A>.
<li><A HREF="gno/describe/gen/shells.html">Shells</A>.
<li><A HREF="gno/describe/gen/sound.html">Sound and Music Utilities</A>.
These are programs for creating, editing, or playing music and
sound files.
<li><A HREF="gno/describe/gen/sys.html">System Utilities</A>.
These are system interface related utilities. They include
programs for logging in, directory manipulation, machine status,
and job control.
<li><A HREF="gno/describe/gen/sysadmin.html">System Administration
Utilities</A>.
<li><A HREF="gno/describe/gen/text.html">Text Utilities</A>.
This includes search and selection utilities. They are often used
in shell scripts.
<li><A HREF="gno/describe/gen/unsorted.html">Unsorted</A>.
These are utilities which have not yet been classified.
</ul>
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.
<p>