home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
minnie.tuhs.org
/
unixen.tar
/
unixen
/
PDP-11
/
Distributions
/
dec
/
Ultrix-3.0
/
wtu.c
< prev
Wrap
C/C++ Source or Header
|
1991-11-08
|
1KB
|
89 lines
#include <stdio.h>
main (argc,argv)
int argc ;
char ** argv ;
{
register int n, fd, bytes ;
FILE * lfd, * dfd ;
char * buffer ;
char line[256] ;
extern char * malloc() ;
if ( argc != 3 )
{
fprintf (stderr,"Usage: %s log-file dump-file\n",argv[0]) ;
exit (1) ;
}
buffer = malloc (65535) ;
if ( ( lfd = fopen (argv[1],"r") ) == NULL )
{
perror (argv[1]) ;
exit (1) ;
}
if ( ( dfd = fopen (argv[2],"r") ) == NULL )
{
perror (argv[2]) ;
exit (1) ;
}
for ( n = 1, fd = -1 ; fgets (line,sizeof(line),lfd) != NULL ; )
{
if ( strncmp (line,"EOF",3) == 0 )
{
fprintf (stderr," done.\n") ;
(void) close (fd) ;
fd = -1 ;
n++ ;
}
else if ( strncmp (line,"EOT",3) == 0 )
{
fprintf (stderr,"end of dump.\n") ;
break ;
}
else
{
bytes = atoi (line) ;
if ( bytes <= 0 || (bytes%512) != 0 )
{
fprintf (stderr,"bogus write line?\n") ;
break ;
}
if ( fd == -1 )
{
sprintf (line,"file%02d",n) ;
if ( ( fd = creat (line,0644) ) < 0 )
{
perror (line) ;
break ;
}
fprintf (stderr,"%s ... ",line) ;
}
if ( fread (buffer,1,bytes,dfd) != bytes )
{
fprintf (stderr,"read error?\n") ;
break ;
}
if ( write (fd,buffer,bytes) != bytes )
{
fprintf (stderr,"write error?\n") ;
break ;
}
}
}
(void) fclose (lfd) ;
(void) fclose (dfd) ;
exit (0) ;
}