home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume7 / 2.11news / part09 < prev    next >
Text File  |  1986-11-30  |  42KB  |  1,291 lines

  1. Subject:  v07i049:  2.11 News Miscellaneous Files, Part01/02
  2. Newsgroups: mod.sources
  3. Approved: mirror!rs
  4.  
  5. Submitted by: seismo!rick (Rick Adams)
  6. Mod.sources: Volume 7, Issue 49
  7. Archive-name: 2.11news/Part09
  8.  
  9. [  Notice the difference between the Part# in the title, and in the
  10.    official archive name.  --r$  ]
  11.  
  12. Path: seismo!rick
  13. From: rick@seismo.CSS.GOV (Rick Adams)
  14. Newsgroups: mod.sources
  15. Subject: news 2.11 miscellaneous files (1 of 2)
  16. Message-ID: <41897@beno.seismo.CSS.GOV>
  17. Date: 30 Oct 86 05:07:04 GMT
  18. Organization: Center for Seismic Studies, Arlington, VA
  19. Lines: 1269
  20.  
  21. # To extract, sh this file
  22. #
  23. #    news 2.11 miscellaneous File 1 of 2
  24. #
  25. if test ! -d misc
  26. then
  27.     mkdir misc
  28. fi
  29. echo x - misc/L.cmds 1>&2
  30. sed 's/.//' >misc/L.cmds <<'*-*-END-of-misc/L.cmds-*-*'
  31. -#
  32. -# If rnews lives in a peculiar directory on your system
  33. -# (e.g. /usr/new under 4.3 BSD) make sure that uucp can
  34. -# find it using the PATH in /usr/lib/uucp/L.cmds.
  35. -#
  36. -PATH=/bin:/usr/bin:/usr/ucb:/usr/new
  37. -#
  38. -rnews,Error
  39. *-*-END-of-misc/L.cmds-*-*
  40. echo x - misc/README 1>&2
  41. sed 's/.//' >misc/README <<'*-*-END-of-misc/README-*-*'
  42. -These are programs that have been useful for some people.
  43. -They are provided for your potential use, but are not
  44. -considered part of the official news release.
  45. *-*-END-of-misc/README-*-*
  46. echo x - misc/arbitron 1>&2
  47. sed 's/.//' >misc/arbitron <<'*-*-END-of-misc/arbitron-*-*'
  48. -#! /bin/sh
  49. -# @(#)arbitron    2.3    07/15/86
  50. -# arbitron -- this program produces rating sweeps for USENET.
  51. -#
  52. -# Usage: arbitron
  53. -#
  54. -# To use this program, edit the "configuration" section below so that the
  55. -# information is correct for your site, and then run it. It will produce a
  56. -# readership survey for your machine and mail that survey to decwrl, with
  57. -# a cc to you.
  58. -#
  59. -# To participate in the international monthly ratings sweeps, 
  60. -# run "arbitron" every month. I will run the statistics program on the last
  61. -# day of each month; it will include any report that has reached it by that
  62. -# time. To make sure your site's data is included, run the survey program no
  63. -# later than the 20th day of each month.
  64. -#
  65. -# Brian Reid, DEC Western Research Lab, reid@decwrl
  66. -# Updated and bugfixed by 
  67. -#    Spencer Thomas, U.of Utah
  68. -#    Geoff Kuenning, SAH Consulting
  69. -# Updated to work with 2.10.1 and older news systems by
  70. -#    Lindsay Cleveland, AT&T Technologies/Bell Labs
  71. -# Made to work with 16-bit address spaces by
  72. -#    Andy Walker, Maths Dept., University of Nottingham, UK
  73. -#
  74. -# Note that the results of this program are dependent on the rate at which
  75. -# you expire news.  If you are a small site that expires news rapidly, the
  76. -# results may indicate fewer active readers than you actually have.
  77. -#
  78. -# copied to a certain extent from the "subscribers"
  79. -# script posted by Blonder, McCreery, and Herron.
  80. -###########################################################################
  81. -# Configuration information. Edit this section to reflect your site data. #
  82. -TMPDIR=/tmp
  83. -NEWS=/usr/lib/news
  84. -SPOOL=/usr/spool/news
  85. -
  86. -# Make a crude stab at determining the system type
  87. -if [ -d /usr/ucb ]
  88. -then
  89. -    STYPE="bsd"
  90. -else
  91. -    STYPE="usg"
  92. -fi
  93. -
  94. -# Range of /etc/passwd UID's that represent actual people (rather than
  95. -# maintenance accounts or daemons or whatever)
  96. -lowUID=100
  97. -highUID=9999
  98. -
  99. -# If you aren't running a distributed news system (nntpd & rrn, usually),
  100. -# leave NEWSHOST blank. Else set it to the name of the host from which you
  101. -# can rcp a copy of the active file.
  102. -NEWSHOST=
  103. -
  104. -# uucp path: {ihnp4, decvax, ucbvax}!decwrl!netsurvey
  105. -# summarypath="netsurvey@decwrl.dec.com $USER"
  106. -summarypath="ihnp4!decwrl!netsurvey usenet"
  107. -
  108. -# We need to find the uucp name of your host. If this code doesn't work,
  109. -# then just put it in literally like this:
  110. -#    hostname="ihnp4"
  111. -
  112. -case $STYPE in
  113. -    bsd) hostname=`(uuname -l || hostname) 2>&-`;;
  114. -        sysv)hostname=`(uname -n || uuname -l ||  hostname) 2>&-`;;
  115. -    *)   hostname=`(uuname -l) 2>&-`;;
  116. -esac;
  117. -
  118. -PATH=$NEWS:/usr/local/bin:/usr/ucb:/usr/bin:/bin
  119. -############################################################################
  120. -export PATH
  121. -# ---------------------------------------------------------------------------
  122. -trap "rm -f $TMPDIR/arb.*.$$; exit" 0 1 2 3 15
  123. -set `date`
  124. -dat="$2$6"
  125. -# destination="mailx -s arbitron-${dat} $summarypath"
  126. -destination="${MAILER-mail} $summarypath"
  127. -
  128. -################################
  129. -# Here are several expressions, each of which figures out approximately how
  130. -# many people use this machine. Comment out all but 1 of them; pick the one
  131. -# you like best. Initially the most universal but least reliable of them is
  132. -# uncommented.
  133. -# # ###### Scheme #1: fast but usually returns too big a number
  134. -nusers=`awk -F: "BEGIN {N=0}\\$3>=$lowUID && \\$3<=$highUID{N=N+1}END{print N}" </etc/passwd`
  135. -
  136. -# # ###### Scheme #2 (works with BSD systems)
  137. -#nusers=`last | sort -u +0 -1 | wc -l`
  138. -
  139. -# # ###### Scheme #3 (works with USG systems)
  140. -#nusers=`who /etc/wtmp | sort -u +0 -1 | wc -l`
  141. -
  142. -# # ###### Scheme #4 (provided by Lindsay Cleveland)
  143. -# # ###### (Same idea as #1, but excludes various junk accounts)
  144. -#awk -F: "\$3 >= $lowUID && \$3 <= $highUID{printf \"if test -d %s ; then echo %s;egrep : %s/.newsrc; fi\n\",\$6,\$1,\$6}" \
  145. -#    </etc/passwd | sh 2>/dev/null | awk  -f $tmpdir/arb.sel.$$ >$tmpdir/arb.tmp.$$
  146. -#nusers=`awk "BEGIN {N=0} NF == 1{N=N+1}END{print N}" <$tmpdir/arb.tmp.$$`
  147. -################################
  148. -#
  149. -# Set up awk scripts;  these are too large to pass as arguments on most
  150. -# systems.
  151. -#
  152. -# This awk script generates the actual output report.
  153. -# We use 'sed' to substitute in the shell variables to save ourselves
  154. -# endless hassle trying to find quoting/backslashing problems.
  155. -#
  156. -# The input to this script consists of two types of lines (pre-sorted):
  157. -#
  158. -#    (1) Active-file lines.  These have four fields:  newsgroup name,
  159. -#        first existing article, last article number, 'y' or 'n'
  160. -#        to allow/disallow posting.
  161. -#            mod.mac 00001 00001 y
  162. -#
  163. -#    (2) .newsrc-derived lines.  These have three fields:  the newsgroup
  164. -#        name, the user name and the articles-read information.  The latter
  165. -#        can be arbitrarily complex.  It can also be arbitrarily long;
  166. -#        this can potentially break either awk or sed, in which
  167. -#        case the script will not work.
  168. -#            mod.map joe 1-199
  169. -#
  170. -#    The script uses the type 1 lines to define the newsgroups
  171. -#    and their active article ranges.  The .newsrc (type 2) lines are
  172. -#    then used to deduce which users are reading that group (a group
  173. -#    is being read if the last article seen is in that group's active
  174. -#    article range).  The user names are used to keep track of who reads
  175. -#    each group, which isn't all that useful but is interesting.  When
  176. -#    all input has been read, a report is printed summarizing the results.
  177. -#
  178. -sed "/^#/d
  179. -     s/NUSERS/$nusers/g
  180. -     s/HOSTNAME/$hostname/g
  181. -     s/DATE/$dat/g" > $TMPDIR/arb.fmt.$$ << 'DOG'
  182. -# makereport -- utility for "arbitron". Early versions were copied from a
  183. -# similar script distributed with "subscribers.sh" by Blonder, McCreery, and
  184. -# Herron.
  185. -#
  186. -    BEGIN    { rdrcount = 0 ; reader = "" ; grpcount = 0 ; realusers = 0}
  187. -#
  188. -# Active file line:  dispose of previous group (if any), record group, and
  189. -# record first and last article numbers.  Set group's reader count to none.
  190. -    NF == 4 { if (grpcount > 0) {
  191. -            printf("%d %s\n",grpcount, grpname)
  192. -          }
  193. -          grpname = $1
  194. -          grpfirst = $3
  195. -          grplast = $2
  196. -          grpcount = 0
  197. -        }
  198. -#
  199. -# .newsrc line.  Break out the final number, which is the last article that
  200. -# has actually been read.  This is a pretty good indicator of the person's
  201. -# true interest in the group.  If 'lastread' for the group is a current
  202. -# (unexpired) article, record a reader for that group.  Finally, record
  203. -# the user as a "real" user of the news system.
  204. -#
  205. -    NF == 3 { n1 = split($3, n2, "-")
  206. -          n3 = split(n2[n1], n4, ",")
  207. -          lastread = n4[n3]
  208. -    if ((grpfirst != grplast) && (lastread >= grpfirst) && (lastread <= grplast)) {
  209. -            grpcount++
  210. -            if (realuser[$2] != 1) {
  211. -                realuser[$2] = 1
  212. -                realusers++
  213. -            }
  214. -          }
  215. -        }
  216. -#
  217. -# End of file.  Print the report in 2 columns.
  218. -    END    { printf("9999 Host\t\t%s\n","HOSTNAME")
  219. -          printf("9998 Users\t\t%d\n",NUSERS)
  220. -          printf("9997 NetReaders\t%d\n",realusers)
  221. -          printf("9996 ReportDate\t%s\n","DATE")
  222. -          printf("9995 SystemType\tnews-arbitron-2.3\n")
  223. -          if (grpcount > 0) {
  224. -            printf("%d %s\n",grpcount, grpname)
  225. -          }
  226. -        }
  227. -DOG
  228. -
  229. -cat >$TMPDIR/arb.pwd.$$ <<'MOUSE'
  230. -BEGIN    { seen["/"]=1; seen[""] = 1; }
  231. -    { if (seen[$6]!=1) {
  232. -        printf("if [ -r %s/.newsrc ] ; then ", $6)
  233. -        printf("sed -n '/: [0-9]/s/:/ %s/p' <%s/.newsrc; fi\n",$1,$6)
  234. -        seen[$6]=1;
  235. -      }
  236. -}
  237. -MOUSE
  238. -
  239. -# First, make sure we have an active file
  240. -if [ -z "$NEWSHOST" ]
  241. -then ACTIVE=$NEWS/active
  242. -else ACTIVE=/tmp/arb.active.$$
  243. -     rcp $NEWSHOST:$NEWS/active $ACTIVE
  244. -fi
  245. -
  246. -if [ ! -s $ACTIVE ]
  247. -then
  248. -    echo arbitron: ACTIVE file missing or empty. Cannot continue.
  249. -    exit 1
  250. -fi
  251. -
  252. -# Next, get the list of .newsrc files with duplicates and unreadable files
  253. -# removed.
  254. -awk -F: -f $TMPDIR/arb.pwd.$$ </etc/passwd | sh >$TMPDIR/arb.tmp.$$
  255. -
  256. -# Check to make sure that we found some
  257. -if [ -s $TMPDIR/arb.tmp.$$ ]
  258. -then # See if "active" file has 4 fields or only two (pre-2.10.2)
  259. -     set `sed 1q $ACTIVE`
  260. -     if [ $# -eq 2 ]
  261. -     then egrep  '^[a-z]*\.' $ACTIVE |
  262. -      while read group last
  263. -      do dir=`echo "$group" | sed 's;\.;/;g'`
  264. -         first=`ls $SPOOL/$dir | grep '^[0-9]*' | sort -n | sed 1q`
  265. -         case $STYPE in
  266. -        usg) echo "$group $last ${first:-$last} X";;
  267. -          *) echo "$group $last ${first-$last} X"
  268. -         esac
  269. -      done
  270. -     else egrep '^[a-z]*\.' $ACTIVE
  271. -     fi |
  272. -     sort - $TMPDIR/arb.tmp.$$ |
  273. -     awk -f $TMPDIR/arb.fmt.$$ |
  274. -     sort -nr |
  275. -     sed '/^$/d
  276. -      s/^999[0-9] //' |
  277. -     $destination
  278. -else echo Unable to find any readable .newsrc files 2>&1
  279. -     exit 1
  280. -fi
  281. *-*-END-of-misc/arbitron-*-*
  282. echo x - misc/article.c 1>&2
  283. sed 's/.//' >misc/article.c <<'*-*-END-of-misc/article.c-*-*'
  284. -/* down!honey 4/84 */
  285. -/* article msg-id [ ... msg-id ] */
  286. - * where message-id is usually of the form number@machine.domain,
  287. - * and the domain in the message-id is optional.
  288. - *
  289. - * BUGS:
  290. - *    Cannot handle all domains, for instance, BERKELEY.EDU.
  291. - */
  292. -
  293. -#define HISTORY "/usr/lib/news/history"
  294. -#define NEWSDIR "/usr/spool/news"
  295. -
  296. -char    *formats[] = {        /* add as appropriate */
  297. -    "<%s.uucp>",
  298. -    "<%s>",
  299. -    "<%s.arpa>",
  300. -    "<%s.oz>",
  301. -    0
  302. -};
  303. -
  304. -#include <stdio.h>
  305. -#include <sysexits.h>
  306. -#include <ctype.h>
  307. -
  308. -typedef struct {
  309. -    char    *dptr;
  310. -    int    dsize;
  311. -} datum;
  312. -
  313. -#if defined(USG_INDEX)
  314. -/* S3 or S5 both call strchr() what 4.X BSD calls index */
  315. -#define index strchr
  316. -#endif
  317. -
  318. -long    lseek();
  319. -char    *index();
  320. -datum    fetch(), dofetch();
  321. -
  322. -main(argc, argv)
  323. -char **argv;
  324. -{
  325. -    int    fd;
  326. -    char    buf[BUFSIZ], *ptr1, *ptr2;
  327. -    datum    content;
  328. -
  329. -    if ((fd = open(HISTORY, 0)) < 0) {
  330. -        perror(HISTORY);
  331. -        exit(EX_UNAVAILABLE);
  332. -    }
  333. -    if (dbminit(HISTORY) < 0) {
  334. -        fprintf(stderr, "dbm error\n");
  335. -        exit(EX_UNAVAILABLE);
  336. -    }
  337. -    for (--argc, argv++; argc; --argc, argv++) {
  338. -        long    foff;        /* file offset */
  339. -        content = dofetch(*argv);
  340. -        if (content.dptr == 0) {
  341. -            printf("%s: No such key\n", *argv);
  342. -            continue;
  343. -        }
  344. -
  345. -        /* Correct a machine dependent bug here, caused        */
  346. -        /* because the lseek offset pointed to by dptr might    */
  347. -        /* not be long-aligned.                    */
  348. -        /* Guy Harris suggested bug fix to prevent core drop.    */
  349. -        /* This bug was written up in net.bugs.4bsd and        */
  350. -        /* cross-posted to net.news.b                */
  351. -        bcopy(content.dptr, (char *)&foff, sizeof foff);
  352. -
  353. -        if (lseek(fd, foff, 0) < 0)
  354. -            continue;
  355. -        if (read(fd, buf, sizeof buf) <= 0)
  356. -            continue;
  357. -
  358. -        /*
  359. -         * To understand this piece of code, you must understand
  360. -         * that the format of lines in the history file are either:
  361. -         * <msg-id>TAB<date>SPACE<time>TABthenNL
  362. -         * <msg-id>TAB<date>SPACE<time>TAB<spoolpathname>NL
  363. -         * <msg-id>TAB<date>SPACE<time>TAB<spoolpathname>SPACE...
  364. -         * The first format occurs when expired,
  365. -         * the second form occurs when exactly one pathname,
  366. -         * and the third occurs when cross-postings.
  367. -         */
  368. -         *
  369. -
  370. -        /* remove end of line */
  371. -        if ((ptr2 = index(buf, '\n')) == 0)
  372. -            continue;
  373. -        *ptr2 = '\0';
  374. -
  375. -        /* The 4th field contains the article file name */
  376. -
  377. -        if ((ptr1 = index(buf, '\t')) == 0)
  378. -            continue;
  379. -        ptr1++;
  380. -
  381. -        /* ptr1 now at begin of field 2 - the date field */
  382. -
  383. -        if ((ptr1 = index(ptr1, '\t')) == 0)
  384. -            continue;
  385. -        ptr1++;
  386. -
  387. -        /* ptr1 now at begin of field 4 - the article spool pathname */
  388. -        /* or the newline that has been converted to a NULL */
  389. -
  390. -        /* change net.unix/231 to net/unix/231 */
  391. -        for (ptr2 = ptr1; ptr2 = index(ptr2, '.'); *ptr2 = '/')
  392. -            ;
  393. -
  394. -        /* terminate after the first pathname, if any */
  395. -        if ((ptr2 = index(ptr1, ' ')) != NULL)
  396. -            *ptr2 = '\0';
  397. -
  398. -        if (*ptr1 == '\0')
  399. -            printf("expired\n");
  400. -        else
  401. -            printf("%s/%s\n", NEWSDIR, ptr1);
  402. -    }
  403. -    exit(EX_OK);
  404. -}
  405. -
  406. -datum
  407. -dofetch(str)
  408. -char    *str;
  409. -{
  410. -    datum    key, content;
  411. -    char    buf[BUFSIZ], **fmt;
  412. -    register char *rcp;
  413. -
  414. -    for (fmt = formats; *fmt; fmt++) {
  415. -        sprintf(buf, *fmt, str);
  416. -        rcp = buf - 1;
  417. -        while (*++rcp)
  418. -            if (isupper(*rcp))
  419. -                *rcp = tolower(*rcp);
  420. -        key.dptr = buf;
  421. -        key.dsize = strlen(buf) + 1;
  422. -        content = fetch(key);
  423. -        if (content.dptr)
  424. -            break;
  425. -    }
  426. -    return(content);
  427. -}
  428. *-*-END-of-misc/article.c-*-*
  429. echo x - misc/batcher 1>&2
  430. sed 's/.//' >misc/batcher <<'*-*-END-of-misc/batcher-*-*'
  431. -From sdcsvax!ncr-sd!greg@s3sun.CSS.GOV Mon Feb  3 14:24:25 1986
  432. -Received: by seismo.CSS.GOV; Mon, 3 Feb 86 12:48:57 EST
  433. -Return-Path: <sdcsvax!ncr-sd!greg>
  434. -Received: by s3sun.CSS.GOV (4.24/s3-5.0)
  435. -    id AA01660; Sun, 2 Feb 86 00:14:55 pst hops=0
  436. -From: sdcsvax!ncr-sd!greg.@s3sun.CSS.GOV
  437. -Received: by sdcsvax.ucsd.edu (5.31/4.41)
  438. -    id AA16013; Sat, 1 Feb 86 23:56:26 PST hops=0
  439. -Date: Sat, 1 Feb 86 23:56:26 PST
  440. -Message-Id: <8602020756.AA16013@sdcsvax.ucsd.edu>
  441. -To: noscvax!rick@siesmo.ARPA, sdcsvax!s3sun!seismo!rick@s3sun.CSS.GOV
  442. -Subject: Batcher script for news
  443. -Status: R
  444. -
  445. -:    shar:    Shell Archiver
  446. -# Run this text with /bin/sh to create:
  447. -#    batcher
  448. -
  449. -# I sent this a few days ago, and haven't gotten a reply.  This one is a
  450. -# revision that incorporates some fixes suggested by some other San Diego
  451. -# sites that have been running it.  Again, lease let me know if it arrives,
  452. -# otherwise I'll try retransmitting it in a few days.
  453. -# 
  454. -# This is a script that replaces sendbatch and csendbatch.  I recommend it to
  455. -# you for inclusion in 2.10.3.  It has some nice attributes, particularly for
  456. -# me, where I have a lot of news connections to maintain.  The most useful to
  457. -# me is that the default if no arguments are given is to send to everybody,
  458. -# so that I don't have to run around modifying crontab all the time -- all
  459. -# of the maintenance is in news/sys.
  460. -# 
  461. -# Here are some sample sites from news/sys to show how it works:
  462. -# 
  463. -# sdcsvax:sd,sdnet,ca,to.sdcsvax::uux - -r -n sdcsvax!rnews
  464. -# sdcsvax:net,fa,mod,na,usa:F:/usr/spool/batch/c.sdcsvax
  465. -# ncrcae:net,fa,mod,na,usa,ncr,to.ncrcae:F:/usr/spool/batch/c.ncrcae
  466. -# local:net,fa,mod,na,usa,ca,sdnet,sd,to.local:F:/usr/spool/batch/b.local
  467. -# 
  468. -# The name chosen determines the type of transmission; the "b." prefix
  469. -# causes news to be sent batched and the "c." prefix causes news to be
  470. -# sent compressed (and batched).
  471. -# 
  472. -# The batcher works by looking for files in /usr/spool/batch with a prefix
  473. -# of "[abc]."; if it is invoked with no arguments, it will pick up all such
  474. -# files, otherwise it only picks up files with those prefixes and the names
  475. -# given as arguments.  If the host status is OK, it will batch up at most
  476. -# ten batches and queue them to be delivered to the specified site.  The "a."
  477. -# prefix is for packaging agents not covered by the standard batching and
  478. -# compression algorithms; if you need it, consult the code for details.
  479. -# 
  480. -# It also handles the *.cmd files to specify the transmission method as did
  481. -# sendbatch and csendbatch.
  482. -# 
  483. -# Here are the relevant entries from the System V crontab table; note that
  484. -# System V has a separate file for each user, so if you don't have this,
  485. -# you may have to modify them so the invocation UID is correct.  Versions
  486. -# of cron also differ on the complexity of the expressions permitted; use
  487. -# this as a guide, not as gospel.
  488. -# 
  489. -# 56    19-23,0-7 *    *    1-5    . /usr/lib/news/batcher    # daily
  490. -# 56    *    *    *    0,6    . /usr/lib/news/batcher    # weekends
  491. -# 
  492. -# These lines cause the batcher to be invoked hourly from 8pm (well, 19:56)
  493. -# to 8am on weekdays and all day on the weekends.  This causes any queued
  494. -# news to be sent (assuming it thinks the site is alive and well).  I view
  495. -# the traffic to my backbone sites as important, so I also deliver to them
  496. -# during the days on weekdays since they have the CPU horsepower to handle
  497. -# it.  Here is the crontab entry to do that:
  498. -# 
  499. -# 56    8-18    *    *    1-5    sh /usr/lib/news/batcher ncrcae sdcsvax
  500. -# 
  501. -# I hope this is useful to you.
  502. -# 
  503. -# -- Greg Noel, NCR Rancho Bernardo    Greg@ncr-sd.UUCP or Greg@nosc.ARPA
  504. -
  505. -sed 's/^X//' <<'SHAR_EOF' >batcher; chmod 644 batcher
  506. -XNEWS=/usr/lib/news    BATCH=/usr/spool/batch
  507. -XUUCP=/usr/lib/uucp    SPOOL=/usr/spool/uucp
  508. -XPATH=$NEWS:/bin:/usr/bin export PATH
  509. -Xeval `grep TZ= /etc/profile`
  510. -Xcase $# in
  511. -X0|1)    Files="-name [abc].$1*" ;;
  512. -X*)    y="(" Files=""
  513. -X    for file do Files="$Files $y -name [abc].$file*"; y=-o; done
  514. -X    Files="$Files )"
  515. -Xesac
  516. -Xfor rmt in `find $BATCH -type f $Files -print`
  517. -Xdo    case $rmt in
  518. -X    *.cmd)    continue ;;
  519. -X    *.tmp)    continue ;;
  520. -X    *.work)    rmt=`expr $rmt : "\(.*\).work"`
  521. -X        if test -f $rmt; then continue; fi ;;
  522. -X    esac
  523. -X    site=`expr $rmt : ".*/[abc].\(.*\)"`
  524. -X    site=`expr $site : "\(......\)" \| $site`
  525. -X    case $rmt in
  526. -X    */b.*)    if test -s $rmt.cmd -a -x $rmt.cmd
  527. -X        then    CMD="batch $rmt 60000 | $rmt.cmd \$flag"
  528. -X        else    CMD="batch $rmt 60000 | uux - -r -n $site!rnews"
  529. -X        fi ;;
  530. -X    */c.*)    if test -s $rmt.cmd -a -x $rmt.cmd
  531. -X        then    CMD="batch $rmt 100000 | compress -q | $rmt.cmd \$flag"
  532. -X        else    CMD="batch $rmt 100000 | compress -q | uux - -r -n $site!cunbatch"
  533. -X        fi ;;
  534. -X    */a.*)    CMD=`sed -n "s/^$site://p" $NEWS/cmds`
  535. -X        case "$CMD" in "") echo "OOPS -- no command for $site"
  536. -X            continue ;;
  537. -X        esac ;;
  538. -X    *)    echo "OOPS -- matched illegal file type!"; continue ;;
  539. -X    esac
  540. -X    if test -f $SPOOL/STST.$site
  541. -X    then    if test ! -s $SPOOL/STST.$site
  542. -X        then    continue    # Hmmmm....  Info file is null
  543. -X        fi
  544. -X        read <$SPOOL/STST.$site status garbage
  545. -X        case $status in
  546. -X        3)    flag=no ;;    # already talking
  547. -X        *)    continue ;;
  548. -X        esac
  549. -X    else    flag=yes    # start conversation first time through
  550. -X    fi
  551. -X    # Send a maximum of ten batches to remote site
  552. -X    loops=x
  553. -X    while test -s $rmt -o -s $rmt.work
  554. -X    do    eval $CMD
  555. -X        if test $? -ne 0 -o $loops = xxxxxxxxxx; then break; fi
  556. -X        case $flag in yes) $UUCP/uucico -r1 & ;; esac
  557. -X        flag=no loops=x$loops
  558. -X    done
  559. -Xdone
  560. -SHAR_EOF
  561. -exit 0
  562. -
  563. -
  564. *-*-END-of-misc/batcher-*-*
  565. echo x - misc/bncvt-2-unbatch 1>&2
  566. sed 's/.//' >misc/bncvt-2-unbatch <<'*-*-END-of-misc/bncvt-2-unbatch-*-*'
  567. -From csg@pyramid.UUCP (Carl S. Gutekunst) Wed Oct 30 22:12:27 1985
  568. -Relay-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site seismo.UUCP
  569. -Posting-Version: version B 2.10.3 4.3bsd-beta 6/6/85; site pyramid.UUCP
  570. -Path: seismo!lll-crg!dual!pyramid!csg
  571. -From: csg@pyramid.UUCP (Carl S. Gutekunst)
  572. -Newsgroups: net.sources
  573. -Subject: bncvt -- filter bnproc batches to unbatch
  574. -Message-ID: <54@pyramid.UUCP>
  575. -Date: 31 Oct 85 03:12:27 GMT
  576. -Date-Received: 31 Oct 85 12:52:30 GMT
  577. -Reply-To: csg@pyramid.UUCP (Carl S. Gutekunst)
  578. -Followup-To: net.sources.bugs
  579. -Organization: Pyramid Technology, Mountain View, CA
  580. -Lines: 104
  581. -Keywords: news bnproc unbatch bncvt
  582. -
  583. -/*===========================================================================**
  584. -**              BBBBBBB   NN    NN    CCCCC   VV    VV  TTTTTTTT             **
  585. -**              BB    BB  NNN   NN   CC   CC  VV    VV     TT                **
  586. -**              BB    BB  NNNN  NN  CC        VV    VV     TT                **
  587. -**              BBBBBBB   NN NN NN  CC        VV    VV     TT                **
  588. -**              BB    BB  NN  NNNN  CC         VV  VV      TT                **
  589. -**              BB    BB  NN   NNN   CC   CC    VVVV       TT                **
  590. -**              BBBBBBB   NN    NN    CCCCC      VV        TT                **
  591. -**===========================================================================**
  592. -**  Copyright (C) 1985 by PYRAMID TECHNOLOGY CORPORATION, Mountain View, CA  **
  593. -**===========================================================================**
  594. -** Permission is granted to freely use and distribute this software, as long **
  595. -** as no attempt is made to profit from it, and this notice is included.     **
  596. -**===========================================================================**
  597. -**
  598. -** ** bncvt.c -- utility to filter bnproc news batches to unbatch.
  599. -**
  600. -**    Written in a fit of desperation by Carl S. Gutekunst
  601. -**
  602. -** ** Decsription:
  603. -**
  604. -**    This filter accepts uncompressed news batches in "bnproc" format and
  605. -**    writes them out in "unbatch" format. Using 2.10.3 news, its output can
  606. -**    be piped directly into rnews.
  607. -**
  608. -**    The filter also adjusts for the bnproc "article eater" bug, which threw
  609. -**    off the article byte count and caused rnews to discard entire articles.
  610. -**
  611. -** ** Execution (for 2.10.3 netnews):
  612. -**
  613. -**    uncompress | bncvt | rnews
  614. -**
  615. -** ** Generation:
  616. -**
  617. -**    cc bncvt.c -o bncvt -s -O
  618. -**
  619. -** ** $Log:    bncvt.c,v $
  620. -**    Revision 1.1  85/10/30  19:07:13  csg
  621. -**    Initial version, written in a fit of desperation by Carl S. Gutekunst.
  622. -**    
  623. -**===========================================================================*/
  624. -
  625. -#include <stdio.h>
  626. -
  627. -#define LINESIZE 128            /* Size of the input line buffer     */
  628. -
  629. -static char RCSid[] = "$Header: bncvt.c,v 1.1 85/10/30 19:07:13 csg Rel $";
  630. -
  631. -main ()
  632. -{
  633. -   char linebuf[LINESIZE], *lp;        /* Single line buffer, and pointer   */
  634. -   int expected, nbytes;        /* Bytes expected and read so far    */
  635. -
  636. -   nbytes = expected = 0;
  637. -   while (fgets (linebuf, LINESIZE, stdin) != NULL)
  638. -   {
  639. -      /*
  640. -       * Check for an article eater. This is a DEL character, either 0x7F or
  641. -       * 0xFF, in the first column preceeding a new article byte count. It
  642. -       * usually throws off the byte count, so we have to add some padding
  643. -       * to keep rnews from losing sync (and discarding the next article).
  644. -       */
  645. -
  646. -      if ((linebuf[0] & 0x7F) == 0x7F)
  647. -      {
  648. -     if (expected > 0)
  649. -        while (nbytes++ < expected)
  650. -           putc ('\0', stdout);
  651. -      }
  652. -
  653. -      /*
  654. -       * If we aren't expecting text, then we're expecting an article byte
  655. -       * count. This is a left-justified integer, immediately followed by a
  656. -       * newline. We ignore leading article-eater DEL characters.
  657. -       */
  658. -
  659. -      if (nbytes >= expected)
  660. -      {
  661. -     nbytes = expected = 0;
  662. -     lp = linebuf;
  663. -     while ((*lp & 0x7F) == 0x7F)
  664. -        ++lp;
  665. -     while (*lp >= '0' && *lp <= '9')
  666. -        expected = expected * 10 + (*lp++ - '0');
  667. -
  668. -     if (*lp == '\n' && expected > 0)
  669. -        printf ("#! rnews %d\n", expected);
  670. -     else
  671. -     {  fprintf (stderr, "Sync->%s", linebuf);
  672. -        expected = 0;
  673. -     }
  674. -      }
  675. -
  676. -      /*
  677. -       * Another normal line of text: write it out.
  678. -       */
  679. -
  680. -      else
  681. -      {
  682. -     fputs (linebuf, stdout);
  683. -     nbytes += strlen (linebuf);
  684. -      }
  685. -   }
  686. -}
  687. -
  688. -
  689. *-*-END-of-misc/bncvt-2-unbatch-*-*
  690. echo x - misc/comp.recording 1>&2
  691. sed 's/.//' >misc/comp.recording <<'*-*-END-of-misc/comp.recording-*-*'
  692. -Posting to this newsgroup will cause your article to be broadcast to
  693. -the entire USENET, including sites outside of Bell Labs.  You should
  694. -not include any proprietary information in this article.
  695. *-*-END-of-misc/comp.recording-*-*
  696. echo x - misc/delay 1>&2
  697. sed 's/.//' >misc/delay <<'*-*-END-of-misc/delay-*-*'
  698. -#
  699. -#    Note, Date-Received knows abotu yout local timezone
  700. -#
  701. -./grabheaders | awk '
  702. -BEGIN{
  703. -    t = "Jan 31 Feb 28 Mar 31 Apr 30 May 31 Jun 30 Jul 31 Aug 31 Sep 30 Oct 31 Nov 30 Dec 31"
  704. -    split(t,x)
  705. -    n = 0;
  706. -    for(i=1;i<24;i+=2) {
  707. -        month[x[i]] = month[(i+1)/2] = (i+1)/2
  708. -        days[(i+1)/2] = n
  709. -        n += x[i+1]
  710. -    }
  711. -}
  712. -
  713. -/^Date: /{
  714. -    if (NF == 7 ){
  715. -        t = $6
  716. -        x[1] = $3
  717. -        x[2] = $4
  718. -        x[3] = $5
  719. -    } else if (NF == 5 && split($3,x,"-") == 3) {
  720. -        t = $4
  721. -    } else if (NF == 4 && split($2,x,"-") == 3) {
  722. -        t = $3
  723. -    }else if (NF == 6) {
  724. -        t = $5
  725. -        x[1] = $2
  726. -        x[2] = $3
  727. -        x[3] = $4
  728. -    }else{
  729. -        print "Bad date",messageid, $0
  730. -        next
  731. -    }
  732. -    sent = x[1] + days[month[x[2]]] + (x[3]-80)*365
  733. -    if (x[3]%4 == 0 && month[x[2]] > 2)
  734. -        sent++
  735. -    split(t,x,":")
  736. -    sent *= 60*24
  737. -    sent += x[1] * 60 + x[2]
  738. -}
  739. -/^Date-Received: /{
  740. -    if (NF < 3){
  741. -        print "Date-received", messageid ,$0
  742. -        rec = 0
  743. -        next
  744. -    }
  745. -    split($2,x,"/")
  746. -    rec = x[2] + days[x[1]+0] +(x[3]-80)*365
  747. -    if (x[3]%4 == 0 && x[1] > 2)
  748. -        rec++
  749. -    split($3,x,":")
  750. -    rec *= 60*24
  751. -    rec += x[1] * 60 + x[2] + 1.44
  752. -    if ($4 != "GMT")
  753. -        rec += 60*5
  754. -    if (rec > today)
  755. -        today = rec
  756. -}
  757. -/^Message-ID: /{messageid = $2}
  758. -/^Path: /{
  759. -    n = split($2,x,"!")
  760. -    if( n > 2)
  761. -        feed = x[2]
  762. -    else
  763. -        feed = x[1]
  764. -}
  765. -/^$/{
  766. -    n = int((rec - sent)/(60*24)+0.999)
  767. -    if( rec > 0 ) {
  768. -        if ( n >= 0) {
  769. -            adelay[n]++
  770. -            if( n > amaxdelay)
  771. -                amaxdelay = n
  772. -        } else {
  773. -            adelay[-1]++
  774. -            print "Time Warp", messageid
  775. -        }
  776. -        totdelay++
  777. -        feedsite[feed]++
  778. -    }
  779. -    rec = sent = 0
  780. -}
  781. -END {
  782. -    n = int((rec - sent)/(60*24)+0.999)
  783. -    if( rec > 0 ) {
  784. -        if ( n >= 0) {
  785. -            adelay[n]++
  786. -            if( n > amaxdelay)
  787. -                amaxdelay = n
  788. -        } else {
  789. -            adelay[-1]++
  790. -            print "Time Warp", messageid
  791. -        }
  792. -        totdelay++
  793. -        feedsite[feed]++
  794. -    }
  795. -    i = 0
  796. -    count = 0
  797. -    printf("\n\tPropagation Delay\n")
  798. -    printf("\n\t     No. of   Cumulative\n")
  799. -    printf("\tDays Articles Percent\n")
  800. -    if (adelay[-1] > 0) {
  801. -        printf("\t <0%8d%7d%% (Time Warp)\n",adelay[-1],0)
  802. -        count += adelay[-1]
  803. -    }
  804. -    while (i <= amaxdelay) {
  805. -        count += adelay[i]
  806. -        if( adelay[i] != 0 )
  807. -            printf("\t%3d%8d%7d%%\n",i,adelay[i],(count*100)/totdelay)
  808. -        i++
  809. -    }
  810. -
  811. -    n = 0
  812. -    for (i in feedsite)
  813. -        ptr[++n] = i
  814. -
  815. -    j = 1
  816. -    while (j < n){
  817. -        if  (feedsite[ptr[j]] < feedsite[ptr[j+1]]){
  818. -            temp = ptr[j]
  819. -            ptr[j] = ptr[j+1]
  820. -            ptr[j+1] = temp
  821. -            if( j > 1) {
  822. -                j--
  823. -                continue
  824. -            }
  825. -        }
  826. -        j++
  827. -    }
  828. -    printf("\n\tDistribution of news feeds\n")
  829. -    printf("\t   Count Percent   Site\n")
  830. -    j = 0
  831. -    while (++j <= n){
  832. -        i =feedsite[ptr[j]]
  833. -        printf("\t%8d%7d%%   %s\n",i,(i*100)/totdelay,ptr[j]);
  834. -    }
  835. -}'
  836. *-*-END-of-misc/delay-*-*
  837. echo x - misc/dirform 1>&2
  838. sed 's/.//' >misc/dirform <<'*-*-END-of-misc/dirform-*-*'
  839. -#N
  840. -#S
  841. -#O
  842. -#C
  843. -#E
  844. -#T
  845. -#P
  846. -#L
  847. -#R
  848. -#W
  849. -#U
  850. -#
  851. -sitename    connection(FREQUENCY), connection(FREQUENCY),
  852. -    connection(FREQUENCY)
  853. -============================================================================
  854. -
  855. -The entire map is intended to be processed by pathalias, a program that
  856. -generates UUCP routes from this data.  All lines beginning in `#' are
  857. -comment lines to pathalias, however the UUCP Project has defined a set
  858. -of these comment lines to have specific format so that a complete
  859. -database could be built.
  860. -
  861. -The generic form of these lines is
  862. -
  863. -#<field id letter><tab><field data>
  864. -
  865. -Each host has an entry in the following format.  The entry should begin
  866. -with the #N line, end with a blank line after the pathalias data, and
  867. -not contain any other blank lines, since there are ed, sed, and awk
  868. -scripts that use expressions like /^#N $1/,/^$/ for the purpose of
  869. -separating the map out into files, each containing one site entry.
  870. -
  871. -#N    UUCP name of site
  872. -#S    manufacturer machine model; operating system & version
  873. -#O    organization name
  874. -#C    contact person's name
  875. -#E    contact person's electronic mail address
  876. -#T    contact person's telephone number
  877. -#P    organization's address
  878. -#L    longitude / latitude
  879. -#R    remarks
  880. -#U    netnews neighbors
  881. -#W    who last edited the entry ; date edited
  882. -#
  883. -sitename    remote1(FREQUENCY), remote2(FREQUENCY),
  884. -    remote3(FREQUENCY)
  885. -
  886. -Example of a completed entry:
  887. -
  888. -#N    ucbvax
  889. -#S    DEC VAX-11/750; 4.3 BSD UNIX
  890. -#O    University of California at Berkeley
  891. -#C    Robert W. Henry
  892. -#E    ucbvax!postmaster
  893. -#T    +1 415 642 1024
  894. -#P    573 Evans Hall, Berkeley, CA 94720
  895. -#L    37 52 29 N / 122 13 44 W 
  896. -#R    This is also UCB-VAX.BERKELEY.EDU [10.2.0.78] on the internet
  897. -#U    decvax ibmpa ucsfcgl ucbtopaz ucbcad
  898. -#W    ucbvax!fair (Erik E. Fair); Sat Jun 22 03:35:16 PDT 1985
  899. -#
  900. -ucbvax = "UCB-VAX.BERKELEY.EDU"
  901. -#
  902. -ucbvax    decvax(DAILY/4), ihnp4(DAILY/2),
  903. -    sun(POLLED)
  904. -
  905. -Specific Field Descriptions
  906. -
  907. -#N    system name
  908. -
  909. -Your system's UUCP name should go here. Either the uname(1) command
  910. -from System III or System V UNIX; or the uuname(1) command from Version
  911. -7 UNIX will tell you what UUCP is using for the local UUCP name.
  912. -
  913. -One of the goals of the UUCP Project is to keep duplicate UUCP host
  914. -names from appearing because there exist mailers in the world which
  915. -assume that the UUCP name space contains no duplicates (and attempts
  916. -UUCP path optimization on that basis), and it's just plain confusing to
  917. -have two different sites with the same name.
  918. -
  919. -At present, the most severe restriction on UUCP names is that the name
  920. -must be unique somewhere in the first six characters, because of a poor
  921. -software design decision made by AT&T for the System V release of UNIX.
  922. -
  923. -This does not mean that your site name has to be six characters or less
  924. -in length. Just unique within that length.
  925. -
  926. -With regard to choosing system names, HARRIS'S LAMENT:
  927. -
  928. -    ``All the good ones are taken.''
  929. -
  930. -#S    machine type; operating system
  931. -
  932. -This is a quick description of your equipment. Machine type should
  933. -be manufacturer and model, and after a semi-colon(;), the operating
  934. -system name and version number (if you have it). Some examples:
  935. -
  936. -    DEC PDP-11/70; 2.9 BSD UNIX
  937. -    DEC PDP-11/45; ULTRIX-11
  938. -    DEC VAX-11/780; VMS 4.0
  939. -    SUN 2/150; 4.2 BSD UNIX
  940. -    Pyramid 90x; OSx 2.1
  941. -    CoData 3300; Version 7 UniPlus+
  942. -    Callan Unistar 200; System V UniPlus+
  943. -    IBM PC/XT; Coherent
  944. -    Intel 386; XENIX 3.0
  945. -    CRDS Universe 68; UNOS
  946. -
  947. -#O    organization name
  948. -
  949. -This should be the full name of your organization, squeezed to fit
  950. -inside 80 columns as necessary. Don't be afraid to abbreviate where the
  951. -abbreviation would be clear to the entire world (say a famous
  952. -institution like MIT or CERN), but beware of duplication (In USC the C
  953. -could be either California or Carolina).
  954. -
  955. -#C    contact person
  956. -
  957. -This should be the full name (or names, separated by commas) of the
  958. -person responsible for handling queries from the outside world about
  959. -your machine.
  960. -
  961. -#E    contact person's electronic address
  962. -
  963. -This should be just a machine name, and a user name, like
  964. -`ucbvax!fair'. It should not be a full path, since we will be able to
  965. -generate a path to the given address from the data you're giving us.
  966. -There is no problem with the machine name not being the same as the #N
  967. -field (i.e. the contact `lives' on another machine at your site).
  968. -
  969. -Also, it's a good idea to give a generic address or alias (if your mail
  970. -system is capable of providing aliases) like `usenet' or `postmaster',
  971. -so that if the contact person leaves the institution or is re-assigned
  972. -to other duties, he doesn't keep getting mail about the system. In a
  973. -perfect world, people would send notice to the UUCP Project, but in
  974. -practice, they don't, so the data does get out of date. If you give a
  975. -generic address you can easily change it to point at the appropriate
  976. -person.
  977. -
  978. -Multiple electronic addresses should be separated by commas, and all of
  979. -them should be specified in the manner described above.
  980. -
  981. -#T    contact person's telephone number
  982. -
  983. -Format: +<country code><space><area code><space><prefix><space><number>
  984. -
  985. -Example:
  986. -
  987. -#T    +1 415 642 1024
  988. -
  989. -This is the international format for the representation of phone
  990. -numbers. The country code for the United States of America is 1. Other
  991. -country codes should be listed in your telephone book.
  992. -
  993. -If you must list an extension (i.e. what to ask the receptionist for,
  994. -if not the name of the contact person), list it after the main phone
  995. -number with an `x' in front of it to distinguish it from the rest of
  996. -the phone number.
  997. -
  998. -Example:
  999. -
  1000. -#T    +1 415 549 3854 x37
  1001. -
  1002. -Multiple phone numbers should be separated by commas, and all of them
  1003. -should be completely specified as described above to prevent confusion.
  1004. -
  1005. -#P      organization's address
  1006. -
  1007. -This field should be one line filled with whatever else anyone would
  1008. -need after the contact person's name, and your organization's name
  1009. -(given in other fields above), to mail you something in the physical
  1010. -mails. Generally, if there's room, it's best to spell out things
  1011. -like Road, Street, Avenue, and Boulevard, since this is an international
  1012. -network, and the abbreviations will not necessarily be obvious to someone
  1013. -from Finland, for example.
  1014. -
  1015. -#L      longitude and latitude
  1016. -
  1017. -This should be in the following format:
  1018. -
  1019. -#L    NN MM [SS] N|S / NNN MM [SS] E|W  [city]
  1020. -
  1021. -Two fields, with optional third.
  1022. -
  1023. -First number is Latitude in degrees (NN), minutes (MM), and seconds (SS),
  1024. -and a N or S to indicate North or South of the Equator.
  1025. -
  1026. -A Slash Separator.
  1027. -
  1028. -Second number is Longitude in degrees (NNN), minutes (MM), and seconds (SS),
  1029. -and a E or W to indicate East or West of the Prime Meridian in Greenwich,
  1030. -England.
  1031. -
  1032. -Seconds are optional, but it is worth noting that the more accurate you
  1033. -are, the more accurate maps we can make of the network (including
  1034. -blow-ups of various high density areas, like New Jersey, or the San
  1035. -Francisco Bay Area).
  1036. -
  1037. -If you give the coordinates for your city (i.e. without fudging for
  1038. -where you are relative to that), add the word `city' at the end of the
  1039. -end of the specification, to indicate that. If you know where you are
  1040. -relative to a given coordinate for which you have longitude and
  1041. -latitude data, then the following fudge factors can be useful:
  1042. -
  1043. -1 degree    =    69.2 miles    =    111 kilometers
  1044. -1 minute    =    1.15 miles    =    1.9 kilometers
  1045. -1 second    =    101.5 feet    =    31 meters
  1046. -
  1047. -The Prime Meridian is through Greenwich, England, and longitudes go no
  1048. -higher than 180 degrees West or East of Greenwich. Latitudes go no
  1049. -higher than 90 degrees North or South of the Equator.
  1050. -
  1051. -Beware that the distance between two degrees of longitude decreases as
  1052. -you get further away from the Equator. (Imagine all those longitudinal
  1053. -lines converging on the north and south poles...) These numbers are
  1054. -good for the Equator.  If you're in Alaska or Norway, for example, they
  1055. -are certainly too large for you to fudge longitude accurately.
  1056. -
  1057. -#R      remarks
  1058. -
  1059. -This is for one line of comment. As noted before, all lines beginning
  1060. -with a `#' character are comment lines, so if you need more than one
  1061. -line to tell us something about your site, do so between the end of the
  1062. -map data (the #?\t fields) and the pathalias data.
  1063. -
  1064. -#U    netnews neighbors
  1065. -
  1066. -The USENET is the network that moves netnews around, specifically,
  1067. -net.announce. If you send net.announce to any of your UUCP neighbors,
  1068. -list their names here, delimited by spaces. Example:
  1069. -
  1070. -#U    ihnp4 decvax mcvax seismo
  1071. -
  1072. -Since some places have lots of USENET neighbors, continuation lines
  1073. -should be just another #U and more site names.
  1074. -
  1075. -#W      who last edited the entry and when
  1076. -
  1077. -This field should contain an email address, a name in parentheses,
  1078. -followed by a semi-colon, and the output of the date program.
  1079. -Example:
  1080. -
  1081. -#W    ucbvax!fair (Erik E. Fair); Sat Jun 22 03:35:16 PDT 1985
  1082. -
  1083. -The same rules for email address that apply in the contact's email
  1084. -address apply here also. (i.e. only one system name, and user name).
  1085. -It is intended that this field be used for automatic ageing of the
  1086. -map entries so that we can do more automated checking and updating
  1087. -of the entire map. See getdate(3) from the netnews source for other
  1088. -acceptable date formats.
  1089. -
  1090. -PATHALIAS DATA (or, documenting your UUCP connections & frequency of use)
  1091. -
  1092. -The DEMAND, DAILY, etc., entries represent imaginary connect costs (see
  1093. -below) used by pathalias to calculate lowest cost paths.  The cost
  1094. -breakdown is:
  1095. -
  1096. -    LOCAL        25    local area network
  1097. -    DEDICATED    95    high speed dedicated
  1098. -    DIRECT        200    local call
  1099. -    DEMAND          300     normal call (long distance, anytime)
  1100. -    HOURLY        500    hourly poll
  1101. -    EVENING        1800    time restricted call
  1102. -    DAILY        5000    daily poll
  1103. -    WEEKLY        30000    irregular poll
  1104. -    DEAD            a very high number - not usable path
  1105. -
  1106. -Additionally, HIGH and LOW (used like DAILY+HIGH) are -5 and +5
  1107. -respectively, for baud-rate or quality bonuses/penalties.  Arithmetic
  1108. -expressions can be used, however, you should be aware that the results
  1109. -are often counter-intuitive (e.g. (DAILY*4) means every 4 days, not 4
  1110. -times a day).
  1111. -
  1112. -The numbers are intended to represent frequency of connection, which
  1113. -seems to be far more important than baud rates for this type of
  1114. -traffic.  There is an assumed high overhead for each hop; thus,
  1115. -HOURLY is far more than DAILY/24.
  1116. -
  1117. -There are a few other cost names that sometimes appear in the map;
  1118. -these are discouraged.  Some are synonyms for the prefered
  1119. -names above (e.g. POLLED means DAILY), some are obsolete (e.g.
  1120. -the letters A through F, which are letter grades for connections.)
  1121. -It is not acceptable to make up new names or spellings (pathalias
  1122. -gets very upset when people do that...).
  1123. -
  1124. -LOCAL AREA NETWORKS
  1125. -
  1126. -For local area networks, (since they are usually completely connected),
  1127. -there is a list notation for specifying them. Usually there is one
  1128. -gateway machine to the outside world; it is best that the definition of
  1129. -the network appear in that system's pathalias entry, and the other
  1130. -systems just note that they connect to the LAN.  An abbreviated map
  1131. -entry for the sake of example:
  1132. -
  1133. -#N    frobozz
  1134. -#O    Frobozz Skonk Works
  1135. -#C    Joe Palooka
  1136. -#E    frobozz!postmaster
  1137. -#R    gateway machine to Frobozz Company LAN
  1138. -#
  1139. -frobozz    ucbvax(DEMAND), ihnp4(EVENING), seismo(DAILY),
  1140. -    mcvax(WEEKLY), akgua(EVENING)
  1141. -#
  1142. -#    LAN addressed user@host
  1143. -#
  1144. -FROBOZZ-ETHER = @{frobozz, frob1, frob2, frob3}(LOCAL)
  1145. -#
  1146. -#    LAN addressed BerkNet style host:user
  1147. -#
  1148. -FROBOZZ-BERKNET = {frobozz, frob4, frob5, frob6}:(LOCAL)
  1149. -
  1150. -For the other sites on the LAN, their map entries should reflect
  1151. -who is in charge of the machine, and their pathalias data
  1152. -would appear like this (again, this example is abbreviated):
  1153. -
  1154. -#N    frob1
  1155. -#O    Frobozz Skonk Works, Software Development System
  1156. -#C    Joe Palooka
  1157. -#E    frobozz!postmaster
  1158. -#
  1159. -frob1    FROBOZZ-ETHER
  1160. -
  1161. -WHAT TO DO WITH THIS STUFF
  1162. -
  1163. -Once you have finished constructing your pathalias entry, mail it off
  1164. -to {ucbvax,ihnp4,akgua,seismo}!cbosgd!uucpmap, which is a mailing list
  1165. -of the regional map coordinators.  They maintain assigned geographic
  1166. -sections of the map, and the entire map is posted on a rolling basis in
  1167. -the USENET newsgroups mod.map.uucp over the course of a month (at the
  1168. -end of the month they start over).
  1169. -
  1170. -Questions or comments about this specification should also be directed at
  1171. -cbosgd!uucpmap.
  1172. -
  1173. *-*-END-of-misc/dirform-*-*
  1174. echo x - misc/euuname.sh 1>&2
  1175. sed 's/.//' >misc/euuname.sh <<'*-*-END-of-misc/euuname.sh-*-*'
  1176. -: From cbosg!mcnc!unc!smb Sat Feb 27 05:45:42 1982
  1177. -: Date: 27-Feb-82 05:45:41-EST
  1178. -
  1179. -: Heres a shell file that should be distributed with netnews.
  1180. -: Its intended to be the program that replies to the mapping control
  1181. -: message, it extracts info from the L.sys file, add extra names, and
  1182. -: suppresses private ones.
  1183. -
  1184. -: To use this, change the senduuname control message to call
  1185. -: LIBDIR/euuname instead of uuname, and install this script in that location.
  1186. -: the lists secret and extras are names you want deleted from added to
  1187. -: your uuname output.
  1188. -
  1189. -PATH=/usr/ucb:/bin:/usr/bin
  1190. -export PATH
  1191. -cd /usr/lib/news
  1192. -trap "rm -f /tmp/nam$$; exit" 0 1 2
  1193. -sort secret >/tmp/nam$$
  1194. -echo Subject: edited uuname output enclosed
  1195. -((cat extras; uuname) | sort | comm -23 - /tmp/nam$$) | uniq
  1196. *-*-END-of-misc/euuname.sh-*-*
  1197. echo x - misc/grabheaders.c 1>&2
  1198. sed 's/.//' >misc/grabheaders.c <<'*-*-END-of-misc/grabheaders.c-*-*'
  1199. -#include <stdio.h>
  1200. -#include <sys/types.h>
  1201. -#include <sys/stat.h>
  1202. -
  1203. -#define HISTORY    "/usr/new/lib/news/history"
  1204. -#define SPOOL    "/usr/spool/news"
  1205. -
  1206. -#include <sys/types.h>
  1207. -#include <sys/timeb.h>
  1208. -#include <ctype.h>
  1209. -#include <sys/time.h>
  1210. -
  1211. -#define    NULL    0
  1212. -#define daysec (24L*60L*60L)
  1213. -
  1214. -main()
  1215. -{
  1216. -    FILE *Hfile, *Afile;
  1217. -    char buffer[BUFSIZ], datestr[BUFSIZ];
  1218. -    char *index();
  1219. -    struct stat stbuf;
  1220. -    struct timeb now;
  1221. -    long t;
  1222. -
  1223. -    Hfile = fopen(HISTORY, "r");
  1224. -    if (Hfile == NULL) {
  1225. -        perror(HISTORY);
  1226. -        exit(1);
  1227. -    }
  1228. -
  1229. -    if (chdir(SPOOL) < 0) {
  1230. -        perror(SPOOL);
  1231. -        exit(1);
  1232. -    }
  1233. -
  1234. -    (void) ftime(&now);
  1235. -
  1236. -    while (fgets(buffer, BUFSIZ, Hfile) != NULL) {
  1237. -        register char *p, *file;
  1238. -
  1239. -        p = index(buffer, '\t');
  1240. -        if (p == NULL)
  1241. -            continue;
  1242. -        file = index(p+1, '\t');
  1243. -        if (file == NULL || file[1] == '\n')
  1244. -            continue;
  1245. -        *file = '\0';
  1246. -        t = getdate(p, &now);
  1247. -        if ( (t+daysec*14L) < now.time)
  1248. -            continue;
  1249. -        strcpy(datestr, p);
  1250. -        p = file;
  1251. -        while (*++p != ' ' && *p != '\n')
  1252. -            if (*p == '.')
  1253. -                *p = '/';
  1254. -        *p = '\0';
  1255. -        file++;
  1256. -        if (       strncmp(file, "net", 3)  && strncmp(file, "mod", 3)
  1257. -            && strncmp(file, "comp", 4) && strncmp(file, "sci", 3)
  1258. -            && strncmp(file, "news", 4) && strncmp(file, "rec", 3)
  1259. -            && strncmp(file, "talk", 4) && strncmp(file, "misc", 4)
  1260. -            && strncmp(file, "soc", 3)
  1261. -            )
  1262. -            continue;
  1263. -        Afile = fopen(file, "r");
  1264. -        if (Afile == NULL)
  1265. -            continue;
  1266. -        while (fgets(buffer, BUFSIZ, Afile) != NULL &&
  1267. -            buffer[0] != '\n') {
  1268. -        if (strncmp(buffer, "From: ", 5) == 0) {
  1269. -            register char *cp = index(buffer, '@');
  1270. -            if (cp)
  1271. -                while (*++cp && *cp != '.' && *cp != ' ')
  1272. -                    if (isupper(*cp))
  1273. -                        *cp = tolower(*cp);
  1274. -                cp--;
  1275. -                while (*++cp && *cp != ' ')
  1276. -                    if (islower(*cp))
  1277. -                        *cp = toupper(*cp);
  1278. -            }
  1279. -            fputs(buffer, stdout);
  1280. -        }
  1281. -        fstat(fileno(Afile), &stbuf);
  1282. -        printf("Date-Received: %s\n", datestr);
  1283. -        printf("Bytes: %ld\n\n", stbuf.st_size - ftell(Afile));
  1284. -        fclose(Afile);
  1285. -    }
  1286. -    printf("\n");
  1287. -}
  1288. *-*-END-of-misc/grabheaders.c-*-*
  1289. exit
  1290.  
  1291.