AUSAM/source/mdec/mksatp.c

Compare this file to the similar file:
Show the results in this format:

	int buff[256+8] 0;
	int k;
stop()
{
	printf("%l blocks !!\n\n",k);
	exit();
}
main(argc,argv)
int argc; char **argv;
{		int register i,j,l;	char *cp;	int tpofst,nrec;
	if(argc!=3) err("arg count\n\n	useage:	mksatp bootprogram output-tape\n");
	if((i=open(argv[1],0))<0) err("input??");
	if((j=creat(argv[2],0666))<0) err("output??");
	if(read(i,buff,sizeof buff)<0) err("read error");
	if(buff[0]!=0407) err("not magic");
	if((l=buff[1]+buff[2])>512) err("too big");
	if(write(j,&buff[8],512)!=512) err("write error");
	if(write(j,&buff[8],512)!=512) err("write error");
	tpofst = 2;
for(;;) {
	close(i);
	printf(" next file system to be dumped ?? ");
	if( (l=read(0,buff,sizeof buff))<=1 ) exit();;
	cp = &buff; cp[l-1]=0;
	if((i=open(buff,0))<0) continue;
	printf(" how many blocks to be dumped  ?? ");
	if( (l=read(0,buff,sizeof buff))<=1 ) nrec = 0177777;
		else {
			nrec = l = 0;
			while( (cp[l]<='9') && ( cp[l]>='0') ) nrec = nrec * 10  + cp[l++] - '0';
		}
	k = 0;  printf("%5l blocks to be written at tape offset %5l  --  ", nrec,tpofst);
	signal(2,stop);
	while( k != nrec )  { read(i,buff,512) ; write(j,buff,512);  k++; }
	signal(2,0);
	printf("%5l blocks written\n",k);
	tpofst =+ k;
	}
}
err(s)
char *s;
{	printf("-- %s\n",s);	exit(); 	}