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

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.)
###### 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.
# Files released to the ftp site.
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 \
# 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 \
$(XREF): $(DB_SRC)
./mkindex < $(DB_SRC) > $(XREF)
./mkgen $(XREF)
chmod 644 $(GEN)/*
chmod 644 $(ENTRY)/*
OWNER = -ogdr -ga2ftp
MODE_F = -m444
MODE_X = -m775
install $(OWNER) $(MODE_F) $(README_OUT) $@
# We redirect nulib stdout to /dev/null because for some reason
# it's printing out a "-^H".
@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".
@echo "installing $@"; \
/usr/local/sbin/descc $(DB_SRC); \
cp /usr/lib/describe.db $(TDIR); \
cd $(TDIR); \
rm -f $(RELEASE_DB); \
nulib cf $(RELEASE_DB) describe.db > /dev/null; \
install $(OWNER) $(MODE_F) $(RELEASE_DB) $@
web: setup
@tmpfile1=/tmp/$$$$a; \
tmpfile2=/tmp/$$$$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/%%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
@echo "making $@"; \
dbdate="`./getdate -describe < $(DB_SRC)`"; \
sed -e "s,%%DATE%%,$$dbdate,;" < $(README_IN) > $@
@for d in $(GEN) $(ENTRY) $(FINAL_DIR) $(ENTRY) $(RELDIR) $(TDIR); do \
[ -d $$d ] || install -d -m755 $$d; \
clobber:; rm -rf *~ $(XREF) $(TDIR) $(README_OUT)
nuke:; rm -rf $(FINAL_DIR)/*

describe/ 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.

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>
<H1 ALIGN=CENTER>Obtaining a Current Database</H1>
The describe database last updated on <b>%%DATE%%</b>.
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
is recommended.
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
environment variable has been set, this file <em> must </em> have the
Both files are available here:
<li>database source file:
<A HREF=""></A>
<li>precompiled database:
<A HREF=""></A>
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.

describe/describe.src Normal file

File diff suppressed because it is too large Load Diff

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 $
"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;
while(<>) {
if (/\$Id([^\$]*)\$/) {
$_ = $1;
if (/^:\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+/) {
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");

describe/head.html Normal file
View File

@ -0,0 +1,14 @@
<!-- %%WARNING%% -->
<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">
<BODY background="icons/bluebg.jpg" text="#000000" bgcolor="#00C0FF"
link="#0000FF" alink="#001177" vlink="#001177">

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>
<H1 ALIGN=CENTER>Home of James' describe database</H1>
The current version of describe is <b>%%VERSION_LONG%%</b>.
The describe database was last updated <b>%%DATE%%</b>.
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>
<A HREF="">ORCA/Shell</A>
and offer a way to get a concise description of a utility quickly and easily.
Since describe is nothing without an up-to-date database,
<A HREF="">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.
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=""></A>.
This page is based heavily on S&ouml;nke's and Leslie's work.
From this page you can:
<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>;
Back to the <A HREF="gno">GNO Web Page</A>.

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 = "";
$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="">'. "\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=""></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" .
$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 " .
$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");
"<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" .
$f, $headinfo, $f);
while($_ = <pp>) {
printf(fp2 "%s", $_);
printf(fp2 "</pre>\n%s\n", $tailinfo);
# 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/;
"<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" .
$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: " .
$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");
"<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",
# 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");
"<html>\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- By Category</title>\n" .
"%s\n" .
"</head>\n" .
$headinfo, $bodyinfo);
if (defined($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);
# 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: $!");
"<html>\n" .
"<!-- This page is auto-generated -->\n" .
"<head>\n" .
"<title>Apple IIgs Describe Database -- By Category</title>\n" .
"%s\n" .
"</head>\n" .
$headinfo, $bodyinfo);
if (defined($categoryNames{$k})) {
} else {
printf(stderr "WARNING: No category name for \"%s\"\n", $k);
"There are currently no <b>describe</b>(1) entries in this ".
"category.\n" .
"%s\n", $tailinfo);

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>;
# extract all the program names from the db source file.
while(<>) {
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) {
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 {
"%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) {
"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})) {
"WARNING: %s should no longer be in the fudge list\n", $k);
printf("%s\t%s\n", $k, $s);

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>
<H1 ALIGN=CENTER>Obtaining the Describe Program</H1>
The current version of describe is <b>%%VERSION_LONG%%</b>.
If you don't have describe yet, or if yours is out-of-date, you can
obtain a current copy from
<A HREF=""></A>
This archive actually consists of three different programs:
<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.
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.

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>
<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"></A>
contains examples of describe entries plus other recommended methods of
documenting your programs.
There are two ways to submit a describe entry:
<li>Use the <A HREF="gno/describe/submit.html#form">form</A>, below; or
<li>Email your entry or entries to
<A HREF=""></A>.
Since the recipient of this address is a filter, is is mandatory
that your mail conform to the following conventions:
<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
<li>Do not use mailers which automaticly insert html formatting
information outside of the message headers.
If your email does not conform to these conventions, then it will
be ignored by the filter.
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.
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
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.)
<A NAME="form">
<!-- -->
<form action="cgi-bin/describe.cgi"
<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
<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">
Description of program:<br>
<textarea name="Description" cols="62" rows="6"></textarea>
Everything in order? Then send it off, and it will be online shortly.
<input type="Submit" name="Submit" value="Submit new describe entry">
<input type="Reset" name="Reset" value="Clear all fields">
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.

describe/tail.html Normal file
View File

@ -0,0 +1,14 @@
This page was last updated <b>%%LAST_UPDATE%%</b>.
Comments on this page should be forwarded to Devin Reade at
<A HREF=""></A>
<img alt="Apple II Viewable Page" height=31 width=88 border=0

describe/template Normal file
View File

@ -0,0 +1,9 @@
Contact: -

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>
<H1 ALIGN=CENTER>Viewing Current Entries</H1>
The entries are sorted in a few ways. Select whichever is appropriate.
<dt>By Name:
<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>
<dt>By Category:
<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
<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.
Back to the <A HREF="gno/describe/index.html">Describe Database Page</A>.