[comp.archives] Comp.archives digest 12/17/88

comparc@twwells.uucp (comp.archives) (12/18/88)

Here's a summary of what's in the digest:

	A request for archive server programs
	Archive site `libove' is temporarily off the air
	More on adding the grape.ecs.clarkson.edu entry
	More on mail based servers
	Info about getting C scheme
	A perl program to display archive entries

In the last digest I wrote:

: Well, what feedback I've received approves of using the digest format,
: so that's the way I'll go.

I spoke too soon! Rich Salz sent, in quivering capital letters, no
less, a request that I don't use a digest. Ok, all of those out there
who don't want me using a digest: give me reasons.  Then I'll think
about it.

===

In case anyone is wondering, I collect messages for a time and then
post them. While I may post almost immediately, I always (always? :-)
post at least every two weeks. I might miss one two week period, if
some catastrophe strikes, but never (never?) two (short of dying,
anyway).

This is apropos the discussion in comp.sources.d about disappearing
moderators and some queries as to where the comp.archives postings
were.

Here is what I suggest: If you don't see a posting in three weeks,
send a message to comp-archives-request or, if you believe that method
is broken, to comparc@twwells.uucp, asking where I am.  If I don't
answer, and nothing happens by the time a month has passed, set up a
howl in the appropriate news group (news.groups?).

===

I received a newgroup control message for comp.archives, approved by
Samuel Lam, skl@sklpc.UUCP.

I saw a posting over in news.something about a site that wasn't
getting comp.archives; I presume that the newgroup was done in
response to that. I didn't do anything about that message, presuming,
as I said in my response to it, that there was some problem in one of
their upstream sites.

My question is this: is this a generally approved practice? Not that
I'm complaining, mind you; after all, I want the widest distribution
possible, but should I have been the person to do this?

===

Larry Wall sent, in a discussion about his perl script, that "ADD
ITEM" is somewhat nonspecific.  This is one of the commands used to
update the databases; it means to add to the database that describes
things which are archived.  Will anyone have a fit if I changed it to
"ADD ITEM"?  Or, does anyone have a better suggestion?

He also notes some problems with the documentation of the database
format:

	1) The file sizes should be specified in K.

	2) I didn't mention that all the semicolons in the database
	   records should be there, even if the trailing fields are
	   blank.

	3) The DE lines should ideally be kept to less than 70
	   characters. This makes displaying them without having to
	   format them reasonable.

--------

From: mrd@sun.soe.clarkson.edu (Michael DeCorte)
Subject: archive servers
Date: 12 Dec 88 17:17:26 GMT
Message-Id: <MRD.88Dec12121726@sun.soe.clarkson.edu>
Organization: Clarkson University, Postdam NY

Hello,

I have a question that may not be appropriate for this group as it
doesn't usually support questions.  Sorry if this causes any problems.

	[No problem. This sort of question is part of the secondary
	purpose of the group; if we had a companion discussion group
	we could talk about it there, but we don't.

	tww]

I maintain the latex-style file depository here at Clarkson.  I am
currently using Brian Reeds archive-server but I am not entirely
happy with it.  I would like to know if anyone has an archive-server
that has the following properties

1) runs under Sun O.S. 4.0
2) uses 822-style address
3) can handle multiple archives
4) can deal with binary files by multiple encoding methods (very important)
   Eg. uuencode, rcsc, sendfile (the more the better)
5) can split up large files so that they can be mailed (very important)
6) can deal with arpanet, milnet, uucp, bitnet and anything else
   that mmdf can handle

thank you
--

Michael DeCorte // (315)265-2439 // P.O. Box 652, Potsdam, NY 13676
Internet: mrd@sun.soe.clarkson.edu  // Bitnet:   mrd@clutx.bitnet
- ---------------------------------------------------------------------------
Clarkson Archive Server // commands = help, index, send, path
archive-server@sun.soe.clarkson.edu
archive-server%sun.soe.clarkson.edu@omnigate.bitnet
dumb1!dumb2!dumb3!smart!sun.soe.clarkson.edu!archive-server
- ---------------------------------------------------------------------------

	[Are you going to be sending in an archive registration?  If
	you like, I can send you a registration form.

	tww]

--------

From: root@libove.UUCP (Jay M. Libove)
Subject: archive site "libove" off the air
Date: 12 Dec 88 06:45:29 GMT
Message-Id: <8812122330.AA05578@>
Organization: Libove, Pittsburgh, PA, U.S.A.

The archive site "libove" is temporarily off the air, as the machine
is not behaving properly when the dialin line is enabled.

I expect to have dialins working properly around January 20, 1989.

Happy new year everyone.

--
Jay Libove              ARPA:   jl42@andrew.cmu.edu or libove@cs.cmu.edu
5731 Centre Ave, Apt 3  BITnet: jl42@andrew or jl42@drycas
Pittsburgh, PA 15206    UUCP:   uunet!nfsun!libove!libove or
(412) 362-8983          UUCP:   psuvax1!pitt!darth!libove!libove

--------

From: nelson@sun.soe.clarkson.edu (Russ Nelson)
Subject: Re: add site grape.ecs.clarkson.edu
Date: Tue, 13 Dec 88 14:03:51 EST
Message-Id: <8812131903.AA09631@sun.soe.clarkson.edu>
Reply-To: proxftl!uunet!clutx.clarkson.edu!nelson

:           The ftp CO line doesn't have a directory to ftp from. How
:           important is it to have this directory?

I'm not sure that it is important, because you are always in *some*
subdirectory.  When you ftp to grape, you get 00readme file that points you
to the files list.

	   [Well yes, but sometimes it might be useful to know what
	   the real path name is. At least that is what I suppose.
	   Anyway, I'll list yours as `.'.

	   tww]

:          This entry contains CO lines that I've not seen before.  I'm
:          guessing the first is for fidonet; my question is this: is
:          the "1:260/360" sufficient for one on that net to access
:          whatever information he has archived, or is there something
:          else needed or desirable?

I believe that it is sufficient, once you know what file you are looking for.

:          The other CO line is presumably for logging into a BBS. The
:          fields I'm using are:

Do you want:

CO bbs;modem;315-268-6667;;8N1:1200,8N1:2400;xmodem,ymodem,zmodem,kermit;

or do you want:

CO bbs;;(315)268-6667;;8N1:1200/2400;xmodem,ymodem,zmodem,kermit;

	[The first one. The differences:

	1) The access tag lets you distinguish files that are
	   available from the bbs from those available through ftp.

	2) I prefer simplicity in the phone number.

	3) The modem settings are also as a list, for simplicity.
	   Comma separated lists are a common thing in this database,
	   so I'd prefer to use the existing format rather than
	   invent a new one.

	tww]

-russ

--------

From: sewilco@datapg.MN.ORG (Scot E Wilcoxon)
Subject: Re: Mail based servers
Date: 13 Dec 88 20:22:21 CST (Tue)
Message-Id: <8812132022.AA28772@datapg.MN.ORG>
Organization: Data Progress, Minneapolis, MN

In article <246@twwells.uucp> you write:
>There are two mail-based archive servers of which I am aware.  Netlib
>(from att!research) and archive-server (from decwrl).  Netlib runs fine on
>SysV, while archive-server is BSD/ULTRIX oriented.
>
>[info about mail servers]
>
>       [Let me see if I have this straight: you are saying that
>       there are two mail-based server programs, which one accesses
>       as in the two examples given above? Or are you just saying
>       that these are two archives that you are aware of?
>
>       tww]

There are at least two mail-based server programs.  Netlib seems to have
originally been designed to support libraries of routines, such as those
in /usr/lib.  Archive-server is more oriented toward files and has some
nice code for limiting the rate at which data flows out of the machine.

I know each type of server is running on several independent machines
for various uses.

---
Scot E. Wilcoxon  sewilco@DataPg.MN.ORG    {amdahl|hpda}!bungia!datapg!sewilco
Data Progress    UNIX masts & rigging  +1 612-825-2607    uunet!datapg!sewilco
	I'm just reversing entropy while waiting for the Big Crunch.

--------

From: news@oresoft.UUCP (Randy Bush)
Subject: Re: Mail based servers
Date: Tue, 13 Dec 88 08:06:13 PST
Message-Id: <8812131606.AA07050@oresoft.UUCP>
Organization: Oregon Software, Portland OR

In article <246@twwells.uucp> you write:
>       The ftp CO line doesn't have a directory to ftp from. How
>       important is it to have this directory?

On FidoNet, one can not specify the directory, so it is irrelevant.

>       This entry contains CO lines that I've not seen before.  I'm
>       guessing the first is for fidonet; my question is this: is
>       the "1:260/360" sufficient for one on that net to access
>       whatever information he has archived, or is there something
>       else needed or desirable?

It is necessary, sufficient, and quite well formed.
--
{mcvax!uunet,tektronix,reed,sun!nosun}!oresoft!news (Randy Bush)

--------

From: emv@starbarlounge.cc.umich.edu (Edward Vielmetti)
Subject: Re: C scheme
Date: Wed, 14 Dec 88 13:53:53 -0500
Message-Id: <8812141853.AA02203@starbarlounge.cc.umich.edu>
X-Organization: Unix Project in Exile
X-Postal-Address: MTS Center, 535 W. William, Ann Arbor MI  48109
X-Phone: (313) 936-2653

>       Sorry to bother you about this kind of thing, but I've been trying
>to find out where I can ftp C Scheme from.  Do you happen to know the
>whereabouts of the machine or someone who does?
>       Thanks in advance for anything you can tell me.
>joe wilson
>(jnw@shades.cis.ufl.edu)

You can pick it up from prep, and apparently from a machine at utk
(Tennessee-Knoxville?).   If you're successful let me know and I'll
update my list.

# 128.52.32.14  prep.ai.mit.edu         # GNU, MIT C Scheme, gnu e?grep
#               cygnusx1.cs.utk.edu     # GCC, MM, Scheme

--Ed
Edward Vielmetti, U of Michigan

--------

From: grady@postgres.berkeley.edu (Steven Grady)
Subject: perl programs
Date: Tue, 13 Dec 88 16:01:00 PST
Message-Id: <8812140001.AA10591@fxgrp.fx.com>

Larry Wall's perl program to parse the DB posting worked fine (except that
the archive directory path was hard-coded, but that's ok..), and it inspired
me to write two programs of mine own.  These programs parse site and info
files, and print them in an easier-to-read format.  They are currently
somewhat dependent on having the lines in the expected order (ie, if an "AD"
line folllows an "MA" line, it won't get handled), and I'm open to elegant
fixes to this problem.

	[The fix is easy: it is not supposed to happen. I run each
	entry through a program which verifies its format. It also
	generates the output you see at the front of some of the DB:
	postings.

	tww]

			Anyway, they seem to work okay (at least on all
the files in the current official database), so here they are.
Oh, I'm still kind of unclear on the access-tag/access-type entries in
a "CO" field in a site listing, so I just ignore (what I believe to be)
the access-tag.  It seems to be used only in relation to index files, though,
so I'm not too worried.

	[Right. It is only useful with the index files. What it does
	is let the archive administrator tell us which files can be
	had from which archive access method.

	Suppose that you had two archives, one of small programs that
	you had a mail-based server for, and another of larger stuff
	that you want to transfer only through uucp.  Your CO line
	for mail access could have an access tag of `mail' and your
	CO line for uucp access could have an access tag of `uucp'.

	Files in the index which are available only through mail
	would have an access tag of `mail. Files available only
	through uucp would have an access tag of `uucp'.  Files that
	were available either way would have an access tag of `*'.

	tww]

There didn't seem much point in writing an index-file formatter.

	Steven
	...!ucbvax!grady
	grady@postgres.berkeley.edu

    Birds of prey know they're cool.

	[His perl script is the rest of this posting.  I have not
	checked out this in any way.  Caveat Usor.

	tww]

# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#               "End of shell archive."
# Contents:  info site
# Wrapped by grady@fxgrp on Mon Dec 12 20:29:34 1988
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'info' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'info'\"
else
echo shar: Extracting \"'info'\" \(3498 characters\)
sed "s/^X//" >'info' <<'END_OF_FILE'
X#! /usr/bin/perl
X
Xwhile (<>) {
X    next if (/^#/);    # Ignore comments
X
X    /^NM (.*)/ && do name($1);
X    /^VR (.*)/ && do version($1);
X    /^AU (.*)/ && do author($1);
X    /^MA (.*)/ && do maint($1);
X    /^EN (.*)/ && do entry($1);
X    /^TT (.*)/ && do title($1);
X    /^KW (.*)/ && do keywords($1);
X    /^SY (.*)/ && do systm($1);
X    /^DE (.*)/ && do describe($1);
X}
X
Xprint "Submitted by $uname ($user)\t$date\n";
X
Xsub name {
X    local($name) = pop(@_);
X
X    print ("Name: $name\n\n");
X}
X
Xsub version {
X    local($version) = pop(@_);
X
X    print ("Version: $version\n\n");
X}
X
Xsub entry {
X    local($entry) = pop(@_);
X
X    $entry =~ /([^ ]*) \(([^)]*)\) (.*)/;
X    $user = $1;
X    $uname = $2;
X    $date = $3;
X}
X
Xsub best_times {
X    local($time) = pop(@_);
X
X    @times = split(/;/, $time);
X    $zone = shift @times;
X    if ($#times >= 0) {
X       print "Call at the following times ($zone):\n";
X       foreach $t (@times) {
X           do show_time($t);
X       }
X       print "\n";
X    }
X}
X
Xsub show_time {
X    local($timedesc) = pop(@_);
X    local($days, $hours, $good);
X
X    $timedesc =~ /([A-Za-z]*)([^ ]*) (.*)/; $days = $1; $hours = $2; $good = $3;
X    print "days: $days\thours: $hours\t$good\n";
X}
X
Xsub title {
X    local($title) = pop(@_);
X
X    print ("Title: $title\n\n");
X}
X
Xsub author {
X    local($author) = pop(@_);
X    local($auths, $plural);
X
X    $auths = "$author";
X    while (<>) {
X       /^AU (.*)/ || last;
X       $auths .= "\n\t" . $1;
X       $plural = 1;
X    }
X    print "Author", ($plural ? "s:\n\t" : ": "), "$auths\n\n";
X}
X
Xsub mail_line {
X    $line = pop(@_);
X
X    @lines = split(/; |;/, $line);
X    foreach $p (@lines) {
X       print "\t$p\n";
X    }
X}
X
Xsub maint {
X    local($maint) = pop(@_);
X    local($mts, $plural);
X
X    $mts = "$maint";
X    while (<>) {
X       /^MA (.*)/ || last;
X       $mts .= "\n\t" . $1;
X       $plural = 1;
X    }
X    print "Maintainer", ($plural ? "s:\n\t" : ": "), "$mts\n\n";
X}
X
Xsub comm {
X    $comm = pop(@_);
X
X    @info = split(/;/, $comm);
X    if ($info[0] eq "ftp") {
X       print "Ftp access:\n";
X       print "\tMachine: ", $info[2], "\n";
X       print "\tInternet address: ", $info[3], "\n";
X       print "\tDirectory: ", $info[4], "\n";
X       if ($info[5]) {
X           print "\tAvailable: ", $info[5], "\n";
X       }
X    } elsif ($info[0] eq "uucp") {
X       print "Uucp access:\n";
X       print "\tPath: ", $info[2], "\n";
X       print "\tL.sys entry:\n", $info[3], "\n";
X    }
X    print "\n";
X}
X
Xsub ind {
X    ($index) = pop(@_);
X
X    $index || return;
X
X    @ind = split(/;/, $index);
X    print "Index:\n";
X    $ind[5] && print "\t(", $ind[5], ")\n";
X    print "\tAccess: ", $ind[0], "\n";
X    print "\tHandle: ", $ind[1], "\n";
X    print "\tSize: ", $ind[2], "\n";
X    print "\tDate: ", $ind[3], "\n";
X    $ind[4] && print "\tTools: ", $ind[4], "\n";
X
X    print "\n";
X}
X
Xsub keywords {
X    ($kw) = pop(@_);
X
X    print "Keywords: ", join(', ', split(/, |,/, $kw)), "\n\n";
X}
X
Xsub systm {
X    local($systm) = pop(@_);
X
X    @system = split(/;/, $systm);
X    print "System:\n";
X    @stuff = split(/:/, $system[0]);
X    print "\tHardware: ", shift @stuff, "\n";
X    foreach $item (@stuff) {
X       print "\t\t", $item, "\n";
X    }
X    @stuff = split(/:/, $system[1]);
X    print "\tSoftware: ", shift @stuff, "\n";
X    foreach $item (@stuff) {
X       print "\t\t", $item, "\n";
X    }
X    print "\tEffort: ", $system[2], "\n";
X    $system[3] || print "\tTools: ", join(' ', split(/, |,/, $system[3])), "\n";
X    print "\n";
X}
X
Xsub describe {
X    local($description) = pop(@_);
X
X    print "$description\n";
X    while (<>) {
X       /^DE (.*)/ || last;
X       print "$1\n";
X    }
X    print "\n";
X}
X
END_OF_FILE
if test 3498 -ne `wc -c <'info'`; then
    echo shar: \"'info'\" unpacked with wrong size!
fi
chmod +x 'info'
# end of 'info'
fi
if test -f 'site' -a "${1}" != "-c" ; then
  echo shar: Will not clobber existing file \"'site'\"
else
echo shar: Extracting \"'site'\" \(2904 characters\)
sed "s/^X//" >'site' <<'END_OF_FILE'
X#! /usr/bin/perl
X
Xwhile (<>) {
X    next if (/^#/);    # Ignore comments
X
X    /^NM (.*)/ && do name($1);
X    /^EN (.*)/ && do entry($1);
X    /^TM (.*)/ && do best_times($1);
X    /^TT (.*)/ && do name_archive($1);
X    /^AD (.*)/ && do admin($1);
X    /^MA (.*)/ && do smail($1);
X    /^CO (.*)/ && do comm($1);
X    /^IX (.*)/ && do ind($1);
X    /^KW (.*)/ && do keywords($1);
X    /^DE (.*)/ && do describe($1);
X}
X
Xprint "Submitted by $uname ($user) on $date\n";
X
Xsub name {
X    local($name) = pop(@_);
X
X    print ("Name: $name\n\n");
X}
X
Xsub entry {
X    local($entry) = pop(@_);
X
X    $entry =~ /([^ ]*) \(([^)]*)\) (.*)/;
X    $user = $1;
X    $uname = $2;
X    $date = $3;
X}
X
Xsub best_times {
X    local($time) = pop(@_);
X
X    @times = split(/;/, $time);
X    $zone = shift @times;
X    if ($#times >= 0) {
X       print "Call at the following times ($zone):\n";
X       foreach $t (@times) {
X           do show_time($t);
X       }
X       print "\n";
X    }
X}
X
Xsub show_time {
X    local($timedesc) = pop(@_);
X    local($days, $hours, $good);
X
X    $timedesc =~ /([A-Za-z]*)([^ ]*) (.*)/; $days = $1; $hours = $2; $good = $3;
X    print "days: $days\thours: $hours\t$good\n";
X}
X
Xsub name_archive {
X    local($name_archive) = pop(@_);
X
X    print ("Archive: $name_archive\n\n");
X}
X
Xsub admin {
X    local($admin) = pop(@_);
X    local($adms, $plural);
X
X    $adms = "$admin";
X    while (<>) {
X       /^AD (.*)/ || last;
X       $adms .= "\n\t" . $1;
X       $plural = 1;
X    }
X    print "Administrator", ($plural ? "s:\n\t" : ": "), "$adms\n\n";
X}
X
Xsub mail_line {
X    $line = pop(@_);
X
X    @lines = split(/; |;/, $line);
X    foreach $p (@lines) {
X       print "\t$p\n";
X    }
X}
X
Xsub smail {
X    local($smail) = pop(@_);
X
X    if ($smail) {
X       print "Mailing address:\n";
X       do mail_line($smail);
X       while (<>) {
X           /^MA (.*)/ || last;
X           do mail_line($1);
X       }
X       print "\n";
X    }
X}
X
Xsub comm {
X    $comm = pop(@_);
X
X    @info = split(/;/, $comm);
X    if ($info[0] eq "ftp") {
X       print "Ftp access:\n";
X       print "\tMachine: ", $info[2], "\n";
X       print "\tInternet address: ", $info[3], "\n";
X       print "\tDirectory: ", $info[4], "\n";
X       if ($info[5]) {
X           print "\tAvailable: ", $info[5], "\n";
X       }
X    } elsif ($info[0] eq "uucp") {
X       print "Uucp access:\n";
X       print "\tPath: ", $info[2], "\n";
X       print "\tL.sys entry:\n", $info[3], "\n";
X    }
X    print "\n";
X}
X
Xsub ind {
X    ($index) = pop(@_);
X
X    $index || return;
X
X    @ind = split(/;/, $index);
X    print "Index:\n";
X    $ind[5] && print "\t(", $ind[5], ")\n";
X    print "\tAccess: ", $ind[0], "\n";
X    print "\tHandle: ", $ind[1], "\n";
X    print "\tSize: ", $ind[2], "\n";
X    print "\tDate: ", $ind[3], "\n";
X    $ind[4] && print "\tTools: ", $ind[4], "\n";
X
X    print "\n";
X}
X
Xsub keywords {
X    ($kw) = pop(@_);
X
X    print "Keywords: ", join(', ', split(/, |,/, $kw)), "\n\n";
X}
X
Xsub describe {
X    local($description) = pop(@_);
X
X    print "$description\n";
X    while (<>) {
X       /^DE (.*)/ || last;
X       print "$1\n";
X    }
X    print "\n";
X}
X
END_OF_FILE
if test 2904 -ne `wc -c <'site'`; then
    echo shar: \"'site'\" unpacked with wrong size!
fi
chmod +x 'site'
# end of 'site'
fi
echo shar: End of shell archive.
exit 0

--------

End of comp.archives digest

---
Bill
{uunet|novavax}!proxftl!twwells!bill

send comp.archives postings to twwells!comp-archives
send comp.archives related mail to twwells!comp-archives-request