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