home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Distributions / dec / Ultrix-3.0 / wtu.c < prev   
C/C++ Source or Header  |  1991-11-08  |  1KB  |  89 lines

  1. #include <stdio.h>
  2.  
  3. main (argc,argv)
  4.   int argc ;
  5.   char ** argv ;
  6. {
  7.     register int n, fd, bytes ;
  8.     FILE * lfd, * dfd ;
  9.     char * buffer ;
  10.     char line[256] ;
  11.     extern char * malloc() ;
  12.  
  13.     if ( argc != 3 )
  14.     {
  15.         fprintf (stderr,"Usage: %s log-file dump-file\n",argv[0]) ;
  16.         exit (1) ;
  17.     }
  18.  
  19.     buffer = malloc (65535) ;
  20.  
  21.     if ( ( lfd = fopen (argv[1],"r") ) == NULL )
  22.     {
  23.         perror (argv[1]) ;
  24.         exit (1) ;
  25.     }
  26.  
  27.     if ( ( dfd = fopen (argv[2],"r") ) == NULL )
  28.     {
  29.         perror (argv[2]) ;
  30.         exit (1) ;
  31.     }
  32.  
  33.     for ( n = 1, fd = -1 ; fgets (line,sizeof(line),lfd) != NULL ; )
  34.     {
  35.         if ( strncmp (line,"EOF",3) == 0 )
  36.         {
  37.             fprintf (stderr," done.\n") ;
  38.             (void) close (fd) ;
  39.             fd = -1 ;
  40.             n++ ;
  41.         }
  42.         else if ( strncmp (line,"EOT",3) == 0 )
  43.         {
  44.             fprintf (stderr,"end of dump.\n") ;
  45.             break ;
  46.         }
  47.         else
  48.         {
  49.             bytes = atoi (line) ;
  50.  
  51.             if ( bytes <= 0 || (bytes%512) != 0 )
  52.             {
  53.                 fprintf (stderr,"bogus write line?\n") ;
  54.                 break ;
  55.             }
  56.  
  57.             if ( fd == -1 )
  58.             {
  59.                 sprintf (line,"file%02d",n) ;
  60.  
  61.                 if ( ( fd = creat (line,0644) ) < 0 )
  62.                 {
  63.                     perror (line) ;
  64.                     break ;
  65.                 }
  66.  
  67.                 fprintf (stderr,"%s ... ",line) ;
  68.             }
  69.  
  70.             if ( fread (buffer,1,bytes,dfd) != bytes )
  71.             {
  72.                 fprintf (stderr,"read error?\n") ;
  73.                 break ;
  74.             }
  75.  
  76.             if ( write (fd,buffer,bytes) != bytes )
  77.             {
  78.                 fprintf (stderr,"write error?\n") ;
  79.                 break ;
  80.             }
  81.         }
  82.     }
  83.  
  84.     (void) fclose (lfd) ;
  85.     (void) fclose (dfd) ;
  86.  
  87.     exit (0) ;
  88. }
  89.