DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ = T

⟦c16d8f3c8⟧ TextFile

    Length: 4154 (0x103a)
    Types: TextFile
    Names: »=batch«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦this⟧ »EUUGD11/euug-87hel/sec1/news/uucp/=batch« 

TextFile

*** chkpth.c	Sun May 27 20:55:39 1979
--- chkpth.c.new	Sat Apr  2 21:34:39 1983
***************
*** 40,45
  	char c;
  	int ret, i;
  
  	if (Uptfirst) {
  		ret = rdpth(Upt);
  		ASSERT(ret == 0, "INIT USERFILE %d", Nbrusers);

--- 40,48 -----
  	char c;
  	int ret, i;
  
+ 	if (prefix("=/usr/lib/news/batch", path))
+ 		return(0);
+ 
  	if (Uptfirst) {
  		ret = rdpth(Upt);
  		ASSERT(ret == 0, "INIT USERFILE %d", Nbrusers);
*** cntrl.c	Sun May 27 20:56:46 1979
--- cntrl.c.new	Sat Apr  2 21:37:03 1983
***************
*** 82,87
  char Wfile[MAXFULLNAME] = {'\0'};
  char Dfile[MAXFULLNAME];
  
  /*******
   *	cntrl(role, wkpre)
   *	int role;

--- 82,89 -----
  char Wfile[MAXFULLNAME] = {'\0'};
  char Dfile[MAXFULLNAME];
  
+ FILE *pfopen();
+ 
  /*******
   *	cntrl(role, wkpre)
   *	int role;
***************
*** 164,170
  			if (index(W_OPTNS, 'c') == NULL)
  				fp = fopen(Dfile, "r");
  			if (fp == NULL &&
! 			   (fp = fopen(filename, "r")) == NULL) {
  				/*  can not read data file  */
  				logent("CAN'T READ DATA", "FAILED");
  				unlinkdf(Dfile);

--- 166,172 -----
  			if (index(W_OPTNS, 'c') == NULL)
  				fp = fopen(Dfile, "r");
  			if (fp == NULL &&
! 			   (fp = pfopen(filename, "r")) == NULL) {
  				/*  can not read data file  */
  				logent("CAN'T READ DATA", "FAILED");
  				unlinkdf(Dfile);
***************
*** 282,288
  			notify(mailopt, W_USER, W_FILE1, Rmtname, &msg[1]);
  			ASSERT(role == MASTER,
  				"role - %d", role);
! 			fclose(fp);
  			unlinkdf(W_DFILE);
  			goto top;
  		}

--- 284,290 -----
  			notify(mailopt, W_USER, W_FILE1, Rmtname, &msg[1]);
  			ASSERT(role == MASTER,
  				"role - %d", role);
! 			pfclose(fp);
  			unlinkdf(W_DFILE);
  			goto top;
  		}
***************
*** 292,298
  			ASSERT(role == MASTER,
  				"role - %d", role);
  			ret = (*Wrdata)(fp, Ofn);
! 			fclose(fp);
  			if (ret != 0) {
  				(*Turnoff)();
  				return(FAIL);

--- 294,300 -----
  			ASSERT(role == MASTER,
  				"role - %d", role);
  			ret = (*Wrdata)(fp, Ofn);
! 			pfclose(fp);
  			if (ret != 0) {
  				(*Turnoff)();
  				return(FAIL);
*** expfile.c	Sun May 27 20:57:47 1979
--- expfile.c.new	Sat Apr  2 21:39:05 1983
***************
*** 19,24
  	int uid;
  
  	switch(file[0]) {
  	case '/':
  		return;
  	case '~':

--- 19,25 -----
  	int uid;
  
  	switch(file[0]) {
+ 	case '=':
  	case '/':
  		return;
  	case '~':
*** uux.c	Wed Aug 19 16:56:29 1981
--- uux.c.new	Sat Apr  2 21:40:01 1983
***************
*** 231,240
  			expfile(rest);
  			gename(DATAPRE, xsys, 'A', dfile);
  			DEBUG(4, "rest %s\n", rest);
! 			if ((chkpth(User, "", rest) || anyread(rest)) != 0) {
! 				fprintf(stderr, "permission denied %s\n", rest);
! 				cleanup(1);
! 			}
  			if (xcp(rest, dfile) != 0) {
  				fprintf(stderr, "can't copy %s to %s\n", rest, dfile);
  				cleanup(1);

--- 231,241 -----
  			expfile(rest);
  			gename(DATAPRE, xsys, 'A', dfile);
  			DEBUG(4, "rest %s\n", rest);
! 			if (rest[0] == '/')
! 				if ((chkpth(User, "", rest) || anyread(rest)) != 0) {
! 					fprintf(stderr, "permission denied %s\n", rest);
! 					cleanup(1);
! 				}
  			if (xcp(rest, dfile) != 0) {
  				fprintf(stderr, "can't copy %s to %s\n", rest, dfile);
  				cleanup(1);
******************
pfopen.c:
------------------
/*
 * Routine like fopen, but checks for processes to open.
 * The process name begins with =, and any underscores
 * are translated into blanks.  We don't do things in the
 * obvious way (start with | or !, use blanks as themselves)
 * because getargs can't parse strings containing blanks in
 * all versions of uucp.
 */

#include <stdio.h>

static FILE *prevval = NULL;

FILE *popen();

FILE *
pfopen(name, mode)
char *name, *mode;
{
	char cmdbuf[256];
	register char *p;

	if (*name != '=') {
		prevval = NULL;
		return fopen(name, mode);
	}

	strcpy(cmdbuf, name);
	for (p=cmdbuf; *p; p++)
		if (*p == '_')
			*p = ' ';
	p = cmdbuf+1;
	prevval = popen(p, mode);
	return prevval;
}

pfclose(fd)
FILE *fd;
{
	if (fd == prevval) {
		pclose(fd);
		prevval = NULL;
	} else
		fclose(fd);
}
****************
Also be sure to add pfopen.o to the list of .o files in the makefile.