sources-request@mirror.TMC.COM (11/07/86)
Submitted by: seismo!rick (Rick Adams) Mod.sources: Volume 7, Issue 59 Archive-name: 2.11news/Part09 # To extract, sh this file # news 2.11 source part 9 of 9 if test ! -d src then mkdir src fi echo x - src/fullname.c 1>&2 sed 's/.//' >src/fullname.c <<'*-*-END-of-src/fullname.c-*-*' -/* - * fullname.c - this file is made separate so that different local - * conventions can be applied. The stock version understands two - * conventions: - * - * (a) Berkeley finger: the gecos field in /etc/passwd begins with - * the full name, terminated with comma, semicolon, or end of - * field. & expands to the login name. - * (b) BTL RJE: the gecos field looks like - * : junk - full name ( junk : - * where the "junk -" is optional. - * - * If you have a different local convention, modify this file accordingly. - */ - -#ifdef SCCSID -static char *SccsId = "@(#)fullname.c 1.11 9/16/86"; -#endif /* SCCSID */ - -#include "params.h" - -#ifndef LOCALNAME -/* - * Figure out who is sending the message and sign it. - * We attempt to look up the user in the gecos field of /etc/passwd. - */ -char * -fullname(un) -char *un; -{ - static char inbuf[BUFLEN]; - struct passwd *pw; - - pw = getpwnam(un); - if (pw == NULL) - return un; - buildfname(pw->pw_gecos, un, inbuf); - if (inbuf[0] == 0) - return un; - return inbuf; -} - -#else - -/* - * Alternative version of fullname which asks the user for his full name. - * This is mainly suitable for systems that don't have a full name - * database somewhere. It puts the answer in $HOME/.name - */ -char * -fullname(un) -char *un; -{ - static char inbuf[BUFLEN]; - char fbuf[BUFLEN]; - FILE *fd; - char *p, *index(), *getenv(); - int pid; - - if (!isatty(2)) - return un; - printf("What is your full name (for news article signatures): "); - fflush(stdout); - read(2, inbuf, sizeof inbuf); - if (inbuf[0] == 0) - return un; - p = index(inbuf, '\n'); - if (p) - *p = 0; - if ((p = getenv("HOME")) == NULL) { - fprintf(stderr, - "inews: no HOME environment variable - .name not written\n"); - return inbuf; - } - sprintf(fbuf, "%s/%s", p, ".name"); - if ((pid = vfork()) < 0) { - perror("inews"); - return inbuf; - } - else if (pid != 0) - while (wait((int *)0) != pid) - ; - else { - setuid(getuid()); /* become the user */ - if ((fd = fopen(fbuf, "w")) == NULL) - fprintf(stderr, "inews: can't create %s\n", fbuf); - else { - fprintf(fd, "%s\n", inbuf); - fclose(fd); - } - exit(0); - } - return inbuf; -} -#endif - -#ifndef LOCALNAME -/* -** BUILDFNAME -- build full name from gecos style entry. -** (routine lifted from sendmail) -** -** This routine interprets the strange entry that would appear -** in the GECOS field of the password file. -** -** Parameters: -** p -- name to build. -** login -- the login name of this user (for &). -** buf -- place to put the result. -** -** Returns: -** none. -** -** Side Effects: -** none. -*/ - -buildfname(p, login, buf) - register char *p; - char *login; - char *buf; -{ - register char *bp = buf; - - if (*p == '*') - p++; - while (*p != '\0' && *p != ',' && *p != ';' && *p != ':' && *p != '(') - { - if (*p == '-') { - bp = buf; - p++; - } - else if (*p == '&') - { - strcpy(bp, login); - if ((bp == buf || !isalpha(bp[-1])) && islower(*bp)) - *bp = toupper(*bp); - while (*bp != '\0') - bp++; - p++; - } - else - *bp++ = *p++; - } - *bp = '\0'; -} -#endif *-*-END-of-src/fullname.c-*-* echo x - src/berknews.c 1>&2 sed 's/.//' >src/berknews.c <<'*-*-END-of-src/berknews.c-*-*' -/* - * berknews - send news article via Berknet - * - * Synopsis: - * berknews [-o] [-n newsgroup] host_net_command machine remote_rnews - */ - -#ifdef SCCSID -static char *SccsId = "@(#)berknews.c 2.5 4/16/85"; -#endif /* SCCSID */ - -#include <stdio.h> -#include <ctype.h> -#ifndef USG -#include <whoami.h> -struct utsname { - char Sysname[9]; - char nodename[33]; - char release[9]; - char version[9]; -}; -#else /* USG */ -#include <sys/utsname.h> -#endif /* USG */ - - -struct network { - char *uucpname; - char *berkname; -} berknet[] = { -/* UUCP Net Name BerkNet Name - ------------- ------------ */ - "ucbvax", "CSVAX", - "populi", "G", - "ucbarpa", "ARPAVAX", - "ucbcfo-c", "C", - "ucbopt", "ESVAX", - "ucbcad", "ucbcad", - "ucbcory", "Cory", - "ucb", "C70", - "ucbmathstat", "MathStat", - "ucbonyx", "Onyx", - "ucbkim", "Kim", - "ucbcfo-a", "A", - "ucbcfo-b", "B", - "ucbcfo-d", "D", - "ucbcfo-e", "E", - "ucbcfo-f", "F", - "ucbingvax", "IngVAX", - "ucbingres", "Ingres", - "ucbeecs40", "EECS40", - "ucbvlsi", "VLSI", - "ucbsrc", "SRC", - "ucbimage", "Image", - '\0', '\0' -}; - -char *index(); -char buffer[BUFSIZ]; -int linecount; - -FILE *popen(); -main(argc, argv) -int argc; -char **argv; -{ - FILE *out; - char sender[BUFSIZ],newsgroup[100]; - char *punct; - char sysn[20]; - int sysnl; - struct utsname ubuf; - - if (argc < 4) { - fprintf(stderr, "Too few arguments.\n"); - exit(1); - } - -#ifdef debug - printf("%s - -m%s %s\n", argv[1], argv[2], argv[3]); - sprintf(buffer, "cat"); -#else - sprintf(buffer, "%s - -m%s %s", argv[1], argv[2], argv[3]); -#endif - out = popen(buffer, "w"); - uname(&ubuf); - strcpy(sysn, ubuf.nodename); - strcat(sysn, "!"); - sysnl = strlen(sysn); - - while (fgets(buffer, sizeof buffer, stdin)) { - if (fromline()) { - punct = index(buffer, '!'); - if (punct == NULL) - printf("Bad from line: '%s'\n", buffer); - else { - *punct = ':'; /* berknet mail delimiter */ - if (!strncmp("From: ", buffer, 6)) - punct = &buffer[6]; - else if (!strncmp("From ",buffer,5)) - punct = &buffer[5]; - else - punct = buffer; - fiddle(punct); - } - } - fputs(buffer, out); - } - pclose(out); - exit(0); -} - -fromline() { - if (!linecount && (!strncmp("From: ", buffer, 6) || !strncmp("From ", buffer, 5))) - return ++linecount; - return 0; -} - -/* - * make sure the host name is a correct berknet address, since the - * internal names are not the berknet host names. - */ -fiddle(buf) -char *buf; -{ - char uucpname[100]; - register struct network *netptr; - char *rest; - - strcpy(uucpname, buf); - rest = index(uucpname, ':'); - *rest++ = 0; -#ifdef debug - printf("uucpname = '%s', buf = '%s', rest = '%s'\n", uucpname, buf, rest); -#endif - for (netptr = &berknet[0]; strcmp(netptr->uucpname, uucpname) && netptr->uucpname; netptr++) - ; - if (netptr->uucpname) - sprintf(buf, "%s:%s", netptr->berkname, rest); - else - sprintf(buf, "UNKNOWN:%s", rest); -} *-*-END-of-src/berknews.c-*-* echo x - src/params.h 1>&2 sed 's/.//' >src/params.h <<'*-*-END-of-src/params.h-*-*' -/* - * params.h - parameters for everyone. - */ - -/* @(#)params.h 2.21 10/23/86 */ - -#include <stdio.h> -#include <signal.h> -#include <sys/types.h> -#include <grp.h> -#include <pwd.h> -#include <sys/stat.h> -#include <ctype.h> - -#include "defs.h" - -#if defined(BSD4_2) || defined(BSD4_1C) -#include <sys/time.h> -#else /* sane */ -#include <time.h> -#endif /* sane */ - -#ifndef UNAME -/* - * 9 bytes is for compatibility with USG, in case you forget to define UNAME. - * 33 bytes in nodename because many sites have names longer than 8 chars. - */ - -struct utsname { - char sysname[9]; - char nodename[33]; - char release[9]; - char version[9]; -}; -#else -#include <sys/utsname.h> -#endif - -#ifndef USG -#include <sys/timeb.h> -#else -struct timeb -{ - time_t time; - unsigned short millitm; - short timezone; - short dstflag; -}; -#endif - -#include "header.h" - -/* line from SUBFILE */ -struct srec { - char s_name[2*BUFLEN]; /* system name */ - char *s_nosend; /* systems that inhibit sending */ - char s_nbuf[LBUFLEN]; /* system subscriptions */ - char s_flags[BUFLEN]; /* system flags */ - char s_xmit[LBUFLEN]; /* system xmit routine */ -}; - -extern int uid, gid, duid, dgid; -extern int savmask, SigTrap, mode, lockcount; -extern struct hbuf header; -extern char bfr[LBUFLEN], *username, *userhome; - -extern char *SPOOL, *LIB, *BIN, *SUBFILE, *ACTIVE; -extern char *LOCKFILE, *SEQFILE, *ARTFILE; -extern char *news_version, *Progname; - -#ifdef NOTIFY -extern char *TELLME; -#endif /* NOTIFY */ - -#ifdef HIDDENNET -extern char *LOCALSYSNAME; -#endif /* HIDDENNET */ - -extern char *FULLSYSNAME; -#ifndef SHELL -extern char *SHELL; -#endif /* !SHELL */ - -/* external function declarations */ -extern FILE *xfopen(), *hread(); -extern char *strcpy(), *strncpy(), *strcat(), *index(), *rindex(); -extern char *ctime(), *mktemp(), *malloc(), *realloc(), *getenv(); -extern char *arpadate(), *dirname(), *AllocCpy(), *strpbrk(); -extern char *errmsg(); -extern struct passwd *getpwnam(), *getpwuid(), *getpwent(); -extern struct group *getgrnam(); -extern time_t time(), getdate(), cgtdate(); -extern int broadcast(), save(), newssave(), ushell(), onsig(); -extern long atol(); -extern struct tm *localtime(); - -#ifdef lint -/* This horrible gross kludge is the only way I know to - * convince lint that signal(SIGINT,SIG_IGN) is legal. It hates SIG_IGN. - */ -#ifdef SIG_IGN -#undef SIG_IGN -#endif /* SIG_IGN */ -#define SIG_IGN main -extern int main(); -#endif /* lint */ - -#ifdef VMS -#define LINK(a,b) vmslink(a,b) -#define UNLINK(a) vmsdelete(a) -FILE *art_open(), *xart_open(); -#else -#define LINK(a,b) link(a,b) -#define UNLINK(a) unlink(a) -#define art_open fopen -#define xart_open xfopen -#endif /* !VMS */ *-*-END-of-src/params.h-*-* echo x - src/uname.c 1>&2 sed 's/.//' >src/uname.c <<'*-*-END-of-src/uname.c-*-*' -/* - * This software is Copyright (c) 1986 by Rick Adams. - * - * Permission is hereby granted to copy, reproduce, redistribute or - * otherwise use this software as long as: there is no monetary - * profit gained specifically from the use or reproduction or this - * software, it is not sold, rented, traded or otherwise marketed, and - * this copyright notice is included prominently in any copy - * made. - * - * The author make no claims as to the fitness or correctness of - * this software for any use whatsoever, and it is provided as is. - * Any use of this software is at the user's own risk. - * - * This routine is compatible with the Unix T/S system call uname, - * which figures out the name of the local system. - * However, we do it by reading the file /usr/include/whoami.h. - * This avoids having to recompile uucp for each site and hence - * avoids having to distribute the source to uucp to people who - * have only binary licenses. - */ - -#ifdef SCCSID -static char *SccsId = "@(#)uname.c 2.11 10/23/86"; -#endif /* SCCSID */ - -#include "params.h" - -#ifdef UNAME -# define DONE -#endif /* UNAME */ - -#ifdef GHNAME -uname(uptr) -struct utsname *uptr; -{ - char *cp; - gethostname(uptr->nodename, sizeof (uptr->nodename)); - cp = index(uptr->nodename, '.'); - if (cp) - *cp = '\0'; -} -# define DONE -#endif - -#ifdef UUNAME -uname(uptr) -struct utsname *uptr; -{ - FILE *uucpf; - register char *p; - /* uucp name is stored UUNAME */ - - if (((uucpf = fopen(UUNAME, "r")) == NULL) || - fgets(uptr->nodename, sizeof (uptr->nodename), uucpf) == NULL) { - fprintf(stderr, "no sysname in %s\n", UUNAME); - return; - } - p = index(uptr->nodename, '\n'); - if (p) - *p = '\0'; - if (uucpf != NULL) - fclose(uucpf); -} -#define DONE -#endif /* UUNAME */ - -#ifndef DONE -#define HDRFILE "/usr/include/whoami.h" - -uname(uptr) -struct utsname *uptr; -{ - char buf[BUFSIZ]; - FILE *fd; - - fd = fopen(HDRFILE, "r"); - if (fd == NULL) { - fprintf(stderr, "Cannot open %s\n", HDRFILE); - exit(1); - } - - for (;;) { /* each line in the file */ - if (fgets(buf, sizeof buf, fd) == NULL) { - fprintf(stderr, "no sysname in %s\n", HDRFILE); - fclose(fd); - exit(2); - } - if (sscanf(buf, "#define sysname \"%[^\"]\"", uptr->nodename) == 1) { - fclose(fd); - return; - } - } -} -#endif *-*-END-of-src/uname.c-*-* echo x - src/logdir.c 1>&2 sed 's/.//' >src/logdir.c <<'*-*-END-of-src/logdir.c-*-*' -/* - * UNIX shell - logdir routine - * - * Joe Steffen - * Bell Telephone Laboratories - * - * This routine does not use the getpwent(3) library routine - * because the latter uses the stdio package. The allocation of - * storage in this package destroys the integrity of the shell's - * storage allocation. - * - * Modified 2/82 by DJ Molny - * - * This routine now implements name cacheing, so multiple requests - * for the same logdir do not result in multiple open/reads of - * /etc/passwd. If the previous request was successful and the name - * is the same as the last request, the same login directory is returned. - */ -#ifdef SCCSID -static char *SccsId = "@(#)logdir.c 1.4 4/16/85"; -#endif /* SCCSID */ - -#define BUFSIZ 160 - -static char line[BUFSIZ+1]; - -char * -logdir(name) -char *name; -{ - int pwf; - static char lastname[BUFSIZ+1]; - static char lastdir[BUFSIZ+1]; - register char *p; - register int i, j; - char *getenv(), *field(), *strcpy(); - - if (*lastdir && !strcmp(lastname,name)) /* djm */ - return(lastdir); - - strcpy(lastname, name); /* djm */ - strcpy(lastdir, ""); /* djm */ - -#ifdef IHCC - /* if the logname is exptools, see if $TOOLS is set */ - if (strcmp(name, "exptools") && - (p = getenv("TOOLS")) != 0 && *p != '\0') { - strcpy(lastdir, p); - return(lastdir); - } -#endif - - /* attempt to open the password file */ - if ((pwf = open("/etc/passwd", 0)) == -1) - return(0); - - /* find the matching password entry */ - do { - /* get the next line in the password file */ - i = read(pwf, line, BUFSIZ); - for (j = 0; j < i; j++) - if (line[j] == '\n') - break; - /* return a null pointer if the whole file has been read */ - if (j >= i) - return(0); - line[++j] = 0; /* terminate the line */ - lseek(pwf, (long) (j - i), 1); /* point at the next line */ - p = field(line); /* get the logname */ - } while (strcmp(name, line) != 0); - close(pwf); - - /* skip the intervening fields */ - p = field(p); - p = field(p); - p = field(p); - p = field(p); - - /* return the login directory */ - field(p); - strcpy(lastdir,p); /* djm */ - return(p); -} - -static char * -field(p) -register char *p; -{ - while (*p && *p != ':') - ++p; - if (*p) *p++ = 0; - return(p); -} *-*-END-of-src/logdir.c-*-* echo x - src/rparams.h 1>&2 sed 's/.//' >src/rparams.h <<'*-*-END-of-src/rparams.h-*-*' -/* - * rparams.h - parameters for readnews, rfuncs, and readr. - */ - -/* @(#)rparams.h 2.23 10/23/86 */ - -#include "params.h" - -/* flags for readnews */ -#define pflag options[0].flag -#define tflag options[1].flag -#define aflag options[2].flag -#define nflag options[3].flag -#define cflag options[4].flag -#define lflag options[5].flag -#define rflag options[6].flag -#define sflag options[7].flag -#define xflag options[8].flag -#define hflag options[9].flag -#define Mflag options[10].flag -#define fflag options[11].flag -#define uflag options[12].flag -#define eflag options[13].flag -#define Kflag options[14].flag - -#define NEXT 0 -#define SPEC 1 - -#define FORWARD 0 -#define BACKWARD 1 - -#define UNKNOWN 0001 /* possible modes for news program */ -#define MAIL 0004 -#define ANY 0007 - -struct optable { /* options table. */ - char optlet; /* option character. */ - char filchar; /* if to pickup string, fill character. */ - int flag; /* TRUE if have seen this opt. */ - int newstate; /* STRING if takes arg, else OPTION */ - int oldmode; /* OR of legal input modes. */ - int newmode; /* output mode. */ - char *buf; /* string buffer */ -}; - -/* external declarations specific to readnews */ -extern char *infile, *outfile, *PAGER, *ALIASES; -extern char *bitmap, *MAILER, *MAILPARSER; - -#ifndef ROOTID -extern int ROOTID; -#endif - -#ifdef NOTIFY -extern char *TELLME; -#endif - -extern char filename[],coptbuf[],datebuf[],afline[]; -extern char newsrc[],groupdir[],rcbuf[],*rcline[],*argvrc[]; -extern int mode, ngrp, line, newrc(), readmode, news; -extern long bit, obit, last, ngsize, minartno; -extern FILE *rcfp,*actfp; -extern time_t atime; -extern struct optable *optpt, options[]; -extern int actdirect, rcreadok, zapng; - -#ifndef lint -/* lint gets very mad about i-minartno, this is one way of shutting it up */ -/* macros */ -#define get(i) ((i<minartno)? 0 : (bitmap[(i-minartno) >> 3] & (1 << (i-minartno) % 8))) -#define set(i) if (i>=minartno) bitmap[(i-minartno) >> 3] |= (1 << (i-minartno) % 8);else -#define clear(i) if (i>=minartno) bitmap[(i-minartno) >> 3] &= ~(1 << (i-minartno) % 8);else -#endif /* !lint */ - -#define FCLOSE(fp) {if (fp != NULL) {fclose(fp);fp = NULL;}} *-*-END-of-src/rparams.h-*-* echo x - src/ndir.c 1>&2 sed 's/.//' >src/ndir.c <<'*-*-END-of-src/ndir.c-*-*' -#include "defs.h" -#if !defined(BSD4_2) && !defined(BSD4_1C) -#include <sys/param.h> -#include "ndir.h" - -#ifdef SCCSID -static char *SccsId = "@(#)ndir.c 1.8 4/26/85"; -#endif /* SCCSID */ - -/* - * support for Berkeley directory reading routine on a V7 file system - */ - -extern char *malloc(); - -/* - * open a directory. - */ -DIR * -opendir(name) -char *name; -{ - register DIR *dirp; - register int fd; - - if ((fd = open(name, 0)) == -1) - return NULL; - if ((dirp = (DIR *)malloc(sizeof(DIR))) == NULL) { - close (fd); - return NULL; - } - dirp->dd_fd = fd; - dirp->dd_loc = 0; - return dirp; -} - -/* - * read an old style directory entry and present it as a new one - */ -#ifdef pyr -/* Pyramid in the AT&T universe */ -#define ODIRSIZ 248 -struct olddirect { - long od_ino; - short od_fill1, od_fill2; - char od_name[ODIRSIZ]; -}; -#else /* V7 file system */ -#define ODIRSIZ 14 - -struct olddirect { - short od_ino; - char od_name[ODIRSIZ]; -}; -#endif /* V7 */ - -/* - * get next entry in a directory. - */ -struct direct * -readdir(dirp) -register DIR *dirp; -{ - register struct olddirect *dp; - static struct direct dir; - - for (;;) { - if (dirp->dd_loc == 0) { - dirp->dd_size = read(dirp->dd_fd, dirp->dd_buf, - DIRBLKSIZ); - if (dirp->dd_size <= 0) - return NULL; - } - if (dirp->dd_loc >= dirp->dd_size) { - dirp->dd_loc = 0; - continue; - } - dp = (struct olddirect *)(dirp->dd_buf + dirp->dd_loc); - dirp->dd_loc += sizeof(struct olddirect); - if (dp->od_ino == 0) - continue; - dir.d_ino = dp->od_ino; - strncpy(dir.d_name, dp->od_name, ODIRSIZ); - dir.d_name[ODIRSIZ] = '\0'; /* insure null termination */ - dir.d_namlen = strlen(dir.d_name); - dir.d_reclen = DIRSIZ(&dir); - return (&dir); - } -} - -/* - * close a directory. - */ -void -closedir(dirp) -register DIR *dirp; -{ - close(dirp->dd_fd); - dirp->dd_fd = -1; - dirp->dd_loc = 0; - free((char *)dirp); -} -#endif /* !BSD4_2 && !BSD4_1C */ *-*-END-of-src/ndir.c-*-* echo x - src/sendnews.c 1>&2 sed 's/.//' >src/sendnews.c <<'*-*-END-of-src/sendnews.c-*-*' -/* - * sendnews - send news article by mail. - */ - -#ifdef SCCSID -static char *SccsId = "@(#)sendnews.c 2.11 9/19/86"; -#endif /* SCCSID */ - -#include <stdio.h> -#include <ctype.h> - -char buffer[BUFSIZ]; - -int linecount, oflag = 0, aflag = 0, bflag = 0, toflag = 0; - -extern FILE *popen(); - -/* ARGSUSED */ -main(argc, argv) -char **argv; -{ - register FILE *out; - char newsgroup[BUFSIZ]; - - while (**(++argv) == '-') { - if (*++*argv == 'o') - oflag++; - else if (**argv == 'a') - aflag++; - else if (**argv == 'b') - bflag++; - else if (**argv == 'n') - strcpy(newsgroup, *(++argv)); - } - if (aflag && bflag) { - fprintf(stderr, "'-a' and '-b' options mutually exclusive.\n"); - exit(1); - } - -#ifdef DEBUG - printf("/bin/mail %s\n", *argv); - sprintf(buffer, "cat"); -#else -#ifdef SENDMAIL - (void) sprintf(buffer, "%s -i -odq %s", SENDMAIL, *argv); -#else /* !SENDMAIL */ - (void) sprintf(buffer, "/bin/mail %s", *argv); -#endif /* !SENDMAIL */ -#endif - if ((out = popen(buffer, "w")) == NULL) { - perror(buffer); - exit(1); - } - - /* Standard mail prelude to make the formatters happy */ - fprintf(out, "Subject: network news article\n"); - fprintf(out, "To: %s\n\n", *argv); - - while (fgets(buffer, sizeof buffer, stdin)) { - if (*newsgroup && ngline()) { - if (oflag) - sprintf(buffer, "%s\n", newsgroup); - else - sprintf(buffer, "Newsgroups: %s\n", newsgroup); - } - putc('N', out); - fputs(buffer, out); - if (ferror(out)) - exit(1); - } - pclose(out); - exit(0); -} - -ngline() -{ - if (oflag) - return linecount == 2; - if (!toflag && (!strncmp("Newsgroups: ", buffer, 12) || - !strncmp("To: ",buffer, 4))) - return ++toflag; - return 0; -} *-*-END-of-src/sendnews.c-*-* echo x - src/vnews.help 1>&2 sed 's/.//' >src/vnews.help <<'*-*-END-of-src/vnews.help-*-*' -Vnews commands: (each may be preceded by a non-negative count) - -CR Next page or article D Decrypt a rot 13 joke -n Go to next article A Go to article numbered count -e Mark current article as unread < Go to article with given ID -+ Go forwards count articles p Go to parent article -- Go to previous article ug Unsubscribe to this group -^B Go backwards count pages ^L Redraw screen -^N Go forward count lines v Print netnews version -^P Go backwards count lines q Quit -^D Go forward half a page x Quit without updating .newsrc -^U Go backwards half a page c Cancel the current article -h Display article header H Display all article headers -! Escape to shell ? Display this message -r Reply to article using editor K Mark rest of newsgroup read -R Reply--put current article in reply b Go back 1 article in same group -ESC-r Reply directly using mailer m Move on to next item in a digest -f Post a followup article s Save article in file -N Go to newsgroup (next is default) w Save without header -l Display article (use after !, r, f, or ?) - -[Press l to see article again] *-*-END-of-src/vnews.help-*-* echo x - src/header.h 1>&2 sed 's/.//' >src/header.h <<'*-*-END-of-src/header.h-*-*' -/* - * header.h - Article header format - */ - -/* @(#)header.h 2.19 1/17/86 */ - -#define NUNREC 50 - -/* article header */ -struct hbuf { - char from[BUFLEN]; /* From: */ - char path[PATHLEN]; /* Path: */ - char nbuf[BUFLEN]; /* Newsgroups: */ - char title[BUFLEN]; /* Subject: */ - char ident[BUFLEN]; /* Message-ID: */ - char replyto[BUFLEN]; /* Reply-To: */ - char followid[BUFLEN]; /* References: */ - char subdate[DATELEN]; /* Date: (submission) */ - time_t subtime; /* subdate in secs */ - char expdate[DATELEN]; /* Expires: */ - char ctlmsg[PATHLEN]; /* Control: */ - char sender[BUFLEN]; /* Sender: */ - char followto[BUFLEN]; /* Followup-to: */ - char distribution[BUFLEN]; /* Distribution: */ - char organization[BUFLEN]; /* Organization: */ - char numlines[8]; /* Lines: */ - int intnumlines; /* Integer version */ - char keywords[BUFLEN]; /* Keywords: */ - char summary[BUFLEN]; /* Summary: */ - char approved[BUFLEN]; /* Approved: */ - char nf_id[BUFLEN]; /* Nf-ID: */ - char nf_from[BUFLEN]; /* Nf-From: */ -#ifdef DOXREFS - char xref[BUFLEN]; /* Xref: */ -#endif /* DOXREFS */ - char *unrec[NUNREC]; /* unrecognized lines */ -}; - -#define hwrite(hp,fp) ihwrite(hp,fp,0) -#define lhwrite(hp,fp) ihwrite(hp,fp,1) - -char *oident(); *-*-END-of-src/header.h-*-* echo x - src/sendbatch.sh 1>&2 sed 's/.//' >src/sendbatch.sh <<'*-*-END-of-src/sendbatch.sh-*-*' -: '@(#)sendbatch.sh 1.10 9/23/86' - -cflags= -LIM=50000 -CMD='LIBDIR/batch BATCHDIR/$rmt $BLIM' -ECHO= -COMP= -C7= -DOIHAVE= -RNEWS=rnews - -for rmt in $* -do - case $rmt in - -[bBC]*) cflags="$cflags $rmt"; continue;; - -s*) LIM=`expr "$rmt" : '-s\(.*\)'` - continue;; - -c7) COMP='| LIBDIR/compress $cflags' - C7='| LIBDIR/encode' - ECHO='echo "#! c7unbatch"' - continue;; - -c) COMP='| LIBDIR/compress $cflags' - ECHO='echo "#! cunbatch"' - continue;; - -o*) ECHO=`expr "$rmt" : '-o\(.*\)'` - RNEWS='cunbatch' - continue;; - -i*) DOIHAVE=`expr "$rmt" : '-i\(.*\)'` - if test -z "$DOIHAVE" - then - DOIHAVE=`uuname -l` - fi - continue;; - esac - - if test -n "$COMP" - then - BLIM=`expr $LIM \* 2` - else - BLIM=$LIM - fi - - : make sure $? is zero - while test $? -eq 0 -a \( -s BATCHDIR/$rmt -o -s BATCHDIR/$rmt.work -o \( -n "$DOIHAVE" -a -s BATCHDIR/$rmt.ihave \) \) - do - if test -n "$DOIHAVE" -a -s BATCHDIR/$rmt.ihave - then - mv BATCHDIR/$rmt.ihave BATCHDIR/$rmt.$$ - LIBDIR/inews -t "cmsg ihave $DOIHAVE" -n to.$rmt.ctl < \ - BATCHDIR/$rmt.$$ - rm BATCHDIR/$rmt.$$ - - else - (eval $ECHO; eval $CMD $COMP $C7) | - if test -s BATCHDIR/$rmt.cmd - then - BATCHDIR/$rmt.cmd - else - uux - UUXFLAGS $rmt!$RNEWS - fi - fi - done -done *-*-END-of-src/sendbatch.sh-*-* echo x - src/ndir.h 1>&2 sed 's/.//' >src/ndir.h <<'*-*-END-of-src/ndir.h-*-*' -/* @(#)ndir.h 1.4 4/16/85 */ -#ifndef DEV_BSIZE -#define DEV_BSIZE 512 -#endif -#define DIRBLKSIZ DEV_BSIZE -#define MAXNAMLEN 255 - -struct direct { - long d_ino; /* inode number of entry */ - short d_reclen; /* length of this record */ - short d_namlen; /* length of string in d_name */ - char d_name[MAXNAMLEN + 1]; /* name must be no longer than this */ -}; - -/* - * The DIRSIZ macro gives the minimum record length which will hold - * the directory entry. This requires the amount of space in struct direct - * without the d_name field, plus enough space for the name with a terminating - * null byte (dp->d_namlen+1), rounded up to a 4 byte boundary. - */ - -#ifdef DIRSIZ -#undef DIRSIZ -#endif /* DIRSIZ */ -#define DIRSIZ(dp) \ - ((sizeof (struct direct) - (MAXNAMLEN+1)) + (((dp)->d_namlen+1 + 3) &~ 3)) - -/* - * Definitions for library routines operating on directories. - */ -typedef struct _dirdesc { - int dd_fd; - long dd_loc; - long dd_size; - char dd_buf[DIRBLKSIZ]; -} DIR; -#ifndef NULL -#define NULL 0 -#endif -extern DIR *opendir(); -extern struct direct *readdir(); -extern void closedir(); *-*-END-of-src/ndir.h-*-* echo x - src/help 1>&2 sed 's/.//' >src/help <<'*-*-END-of-src/help-*-*' -Command Meaning - -y Yes. (Or just hit return.) Prints this article and goes on. -n No. Goes on to next article without printing current one. -d Digest. Breaks a digest article up into seperate articles. -q Quit. Update .newsrc if -l or -x not used. -U Unsubscribe. You won't be shown this newsgroup anymore. -c Cancel an article you posted. -r Reply. Reply to article's author via mail. -f [title] Submit a follow up article. -N [newsgroup] Go to next newsgroup or named newsgroup. -s [file] Save. Article is appended to file (default is "Articles"). -s |program Run program with article as standard input. -e Erase. Forget that an article was read. -h Print verbose header. Use H for extremely verbose header. -! Shell escape. -<number> Go to message #<number> in this newsgroup. -- Go back to last article. -b Back up one article in the current group. -K Mark the rest of the articles in current group as read. -x Exit. Don't update .newsrc. -v Version. Print current news version number. - -c, f, r, e, h, and s can be followed by -'s to refer to the previous article *-*-END-of-src/help-*-* echo x - src/localize.7300 1>&2 sed 's/.//' >src/localize.7300 <<'*-*-END-of-src/localize.7300-*-*' -#From philabs!hhb!kosman!kevin Mon Apr 28 15:56:44 1986 -rm -f Makefile -cp Makefile.dst Makefile -chmod u+w Makefile - -ed - Makefile <<'EOF' -g/^#USG /s/// -g/^#V7 /d -g/^#VMS /d -g/^#BSD4_[123] /d -/CFLAGS[ ]*=/t. -.s/CFLAGS/MFLAGS/p -.s/-Dindex.*strrchr//p -/-o compress compress.c/s//compress.c -o compress/p -g/Makefile.dst/s//Makefile/p -/-o postnews/s/$(CFLAGS) // -g/$(CFLAGS) $(LFLAGS)/t.\ -.-1s/$(LFLAGS)/-c/\ -s/ -o .*//p\ -.+1s/ $(CFLAGS)//\ -s/\.c/.o/p -/-c compress.c/s/CFLAGS/MFLAGS/p -g/$(LFLAGS)/s;$(LFLAGS);& /lib/crt0s.o shlib.ifile;\ -s/$(CC)/$(LD)/\ -s/-ltermlib // -g/chmod 755.*inews/s/755/6755/p -/UUXFLAGS =/s/ -z//p -w -q -EOF - -rm -f defs.h -cp defs.dist defs.h -chmod u+w defs.h - -ed - defs.h <<'EOF' -/DFLTSUB/s/".*"/"all"/p -/ROOTID/s/10/101/p -/TMAIL/s;^;/*;p -/PAGE/s;/usr/ucb/more;/usr/bin/less;p -/DFTXMIT/s/ -z//p -/UXMIT/s/ -z//p -/UNAME/s;/\* ;;p -/DOXREF/s;/\* ;;p -/MYORG/s;".*";"/etc/MYORG";p -w -q -EOF - -rm -f shlib.ifile -cat /lib/shlib.ifile >shlib.ifile -chmod u+w shlib.ifile - -ed - shlib.ifile <<'EOF' -/^PC /d -/^BC /d -/^UP /d -/^ospeed /d -/^COLS /d -/^_sibuf /i -EOF *-*-END-of-src/localize.7300-*-* echo x - src/localize.4.3 1>&2 sed 's/.//' >src/localize.4.3 <<'*-*-END-of-src/localize.4.3-*-*' -rm -f Makefile -cp Makefile.dst Makefile -chmod u+w Makefile -ed - Makefile <<'EOF' -g/^#V7 /s/// -g/^#BSD4_3 /s/// -g/^#USG /d -g/^#VMS /d -g/^#BSD4_1 /d -/^UUXFLAGS/s/-r -z/-r -z -n -gd/ -/^LIBDIR/s;/usr/lib/news;/usr/new/lib/news; -/^BINDIR/s;/usr/bin;/usr/new; -w -q -EOF -rm -f defs.h -cp defs.dist defs.h -chmod u+w defs.h -ed - defs.h <<'EOF' -/N_UMASK/s/000/002/ -/DFTXMIT/s/-z/-z -gd/ -/UXMIT/s/-z/-z -gd/ -/INTERNET/s;/\* ;; -/GHNAME/s;/\* ;; -/DOXREFS/s;/\* ;; -/BSD4_2/s;/\* ;; -/SENDMAIL/s;/\* ;; -w -q -EOF -echo "Make sure that /usr/new is in PATH in /usr/lib/uucp/L.cmds; read ../misc/L.cmds" *-*-END-of-src/localize.4.3-*-* echo x - src/iparams.h 1>&2 sed 's/.//' >src/iparams.h <<'*-*-END-of-src/iparams.h-*-*' -/* - * iparams - parameters for inews. - */ - -/* @(#)iparams.h 2.16 10/23/86 */ - -#include "params.h" - -/* external declarations specific to inews */ -extern char nbuf[LBUFLEN], *ARTICLE, *INFILE, *ALIASES, *PARTIAL; -#ifndef ROOTID -extern int ROOTID; -#endif - -#ifdef NOTIFY -extern char *TELLME; -#endif /* NOTIFY */ - -struct msgtype { - char *m_name; - char *m_who_to; - int (*m_func)(); -}; - -extern struct msgtype msgtype[]; - -extern FILE *infp, *actfp; -extern int tty, is_ctl; -extern char filename[BUFLEN], is_mod[NAMELEN], not_here[SBUFLEN], *DFLTNG; *-*-END-of-src/iparams.h-*-* echo x - src/rmgroup.sh 1>&2 sed 's/.//' >src/rmgroup.sh <<'*-*-END-of-src/rmgroup.sh-*-*' -: '@(#)rmgroup.sh 1.6 9/19/86' -for group -do - echo "Removing newsgroup $group" - qgrp="`echo $group | sed 's/\./\\\./g'`" - if - grep -s "^$qgrp " LIBDIR/active - then - cat << E_O_F >/tmp/$$ -/^$qgrp[ ]/d -w -q -E_O_F - ed - LIBDIR/active < /tmp/$$ - ed - LIBDIR/newsgroups < /tmp/$$ - dir=SPOOLDIR/"`echo $group | sed 's/\./\//g'`" - if [ -d $dir ] - then - rm $dir/* - rmdir $dir - else - echo "$0: $dir: no spool directory" 2>&1 - fi - else - echo "$0: $group: no such newsgroup" 2>&1 - fi -done -rm -f /tmp/$$ -exit 0 *-*-END-of-src/rmgroup.sh-*-* echo x - src/localize.vms 1>&2 sed 's/.//' >src/localize.vms <<'*-*-END-of-src/localize.vms-*-*' -rm -f Makefile -cp Makefile.dst Makefile -chmod u+w Makefile -ed - Makefile <<'EOF' -g/^#V7 /d -g/^#USG /d -g/^#VMS /s/// -g/#NOTVMS/d -g/^#BSD4_[123] /d -g/chgrp /d -w -q -EOF -rm -f defs.h -cp defs.dist defs.h -chmod u+w defs.h -# ed - defs.h <<'EOF' -# w -# q -# EOF *-*-END-of-src/localize.vms-*-* echo x - src/localize.usg 1>&2 sed 's/.//' >src/localize.usg <<'*-*-END-of-src/localize.usg-*-*' -rm -f Makefile -cp Makefile.dst Makefile -chmod u+w Makefile -ed - Makefile <<'EOF' -g/^#USG /s/// -g/^#V7 /d -g/^#VMS /d -g/^#BSD4_[123] /d -g/termlib/s//curses/ -w -q -EOF -rm -f defs.h -cp defs.dist defs.h -chmod u+w defs.h -# ed - defs.h <<'EOF' -# w -# q -# EOF *-*-END-of-src/localize.usg-*-* echo x - src/localize.v7 1>&2 sed 's/.//' >src/localize.v7 <<'*-*-END-of-src/localize.v7-*-*' -rm -f Makefile -cp Makefile.dst Makefile -chmod u+w Makefile -ed - Makefile <<'EOF' -g/^#V7 /s/// -g/^#USG /d -g/^#VMS /d -g/^#BSD4_[123] /d -w -q -EOF -rm -f defs.h -cp defs.dist defs.h -chmod u+w defs.h -# ed - defs.h <<'EOF' -# w -# q -# EOF *-*-END-of-src/localize.v7-*-* exit