shar311/patch02

Warren Tucker wht at n4hgf.uucp
Wed Apr 11 12:27:12 AEST 1990


Submitted-by: wht%n4hgf at gatech.edu
Archive-name: shar311/patch02

A problem pointed out by pat at rwing is that unshar failed
when reading from stdin.  The problem is that it was trying
to seek on a pipe, which of course, fails.

*** orig/unshar.c	Tue Apr  3 21:09:00 1990
--- unshar.c	Tue Apr 10 22:18:19 1990
***************
*** 19,24
   * 29-Jan-85  Michael Mauldin (mlm) at Carnegie-Mellon University
   *	Created.
   ****************************************************************/
  
  #include <stdio.h>
  #define EOL '\n'

--- 19,26 -----
   * 29-Jan-85  Michael Mauldin (mlm) at Carnegie-Mellon University
   *	Created.
   ****************************************************************/
+ /*+:EDITS:*/
+ /*:04-10-1990-22:02-wht at n4hgf-stdin failed sometimes-can not seek on pipe */
  
  #include <stdio.h>
  #define EOL '\n'
***************
*** 39,44
  { 
  	int i,ch;
  	FILE *in;
  
  	setbuf(stdout,NULL);
  	setbuf(stderr,NULL);

--- 41,47 -----
  { 
  	int i,ch;
  	FILE *in;
+ 	char s1024[1024];
  
  	setbuf(stdout,NULL);
  	setbuf(stderr,NULL);
***************
*** 75,81
  		}
  	}
  	else
! 		process("standard input",stdin);
  
  	exit(0);
  }

--- 78,98 -----
  		}
  	}
  	else
! 	{
! 		sprintf(s1024,"/tmp/unsh.%05d",getpid());
! 		unlink(s1024);
! 		if(!(in = fopen(s1024,"w+")))
! 		{
! 			fprintf(stderr,"cannot open temp file '%s'\n",s1024);
! 			exit(1);
! 		}
! 		unlink(s1024);	/* don't try this with MSDOS, sports fans */
! 		while(i = fread(s1024,1,sizeof(s1024),stdin))
! 			fwrite(s1024,i,1,in);
! 		rewind(in);
! 		process("standard input",in);
! 		fclose(in);
! 	}
  
  	exit(0);
  }
***************
*** 147,153
  		/* Does this line start with a shell command or comment */
  		if(stlmatch(buf,"#")	|| stlmatch(buf,":") ||
  		    stlmatch(buf,"echo ")	|| stlmatch(buf,"sed ") ||
! 		    stlmatch(buf,"cat "))
  		{ 
  			fseek(fil,pos,0); 
  			return(1); 

--- 164,170 -----
  		/* Does this line start with a shell command or comment */
  		if(stlmatch(buf,"#")	|| stlmatch(buf,":") ||
  		    stlmatch(buf,"echo ")	|| stlmatch(buf,"sed ") ||
! 		    stlmatch(buf,"cat ") || stlmatch(buf,"touch "))
  		{ 
  			fseek(fil,pos,0); 
  			return(1); 
 
-------------------------------------------------------------------
Warren Tucker, TuckerWare  gatech!n4hgf!wht or wht%n4hgf at gatech.edu
Sforzando (It., sfohr-tsahn'-doh).  A direction to perform the tone
or chord with special stress, or marked and sudden emphasis.



More information about the Alt.sources mailing list