home *** CD-ROM | disk | FTP | other *** search
/ Amiga MA Magazine 1998 #6 / amigamamagazinepolishissue1998.iso / disks / misc / disksplit / source / diskjoin / diskjoin.c next >
C/C++ Source or Header  |  1996-05-07  |  1KB  |  96 lines

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. #ifndef min
  6. #define min(a,b) ((a)<=(b)?(a):(b))
  7. #endif
  8.  
  9. char VerStr[] = "$VER: DiskJoin 1.0 (7.5.96)";
  10.  
  11. #define BUFSIZE 50000
  12.  
  13. int main( int argv, char **arg )
  14. {
  15.  
  16.  long read;
  17.  char *name = 0;
  18.  short f, vol;
  19.  FILE *In, *Out = 0;
  20.  char *Buf, namebuf[30], *pnt, faul;
  21.  
  22.  if( argv < 2 ) {
  23. Info:
  24.     printf( "DiskJoin v1.0 (7.5.96)\nJoin files created by DiskSplit\n\n  Usage: DiskJoin filebase\n\n" );
  25.     return( 20 );
  26.  } else {
  27.     for( f = 1; f < argv; f++ ) {
  28.         name = arg[f];
  29.     }
  30.     if( !name ) goto Info;
  31.  
  32.     if( !(Buf = malloc( BUFSIZE )) ) {
  33.         printf( "Can not alloc %d bytes buffer\n", (int)BUFSIZE );
  34.         return( 20 );
  35.     }
  36.  
  37.     vol = 0;
  38.  
  39.  
  40.     if( !(Out = fopen( name, "ab" )) ) {
  41.         printf( "Can not open file for writing\n" );
  42.         return( 20 );
  43.     }
  44.  
  45.     faul = 0;
  46.  
  47.     while( 1 ) {
  48.  
  49.         strcpy( namebuf, name );
  50.         for( pnt = namebuf; ; pnt++ ) {
  51.             if( !*pnt ) {
  52.                 *(pnt++) = '.';
  53.                 break;
  54.             }
  55.             else if( *pnt == '.' ) {
  56.                 pnt++;
  57.                 if( *pnt ) pnt++;
  58.                 break;
  59.             }
  60.         }
  61.         sprintf( pnt, "%02hd", vol );
  62.  
  63.         In = fopen( namebuf, "rb" );
  64.  
  65.         if( In ) {
  66.  
  67.             faul = 0;
  68.  
  69.             printf( "Processing: %s\n", namebuf );
  70.             while( read = fread( Buf, 1, BUFSIZE, In ) ) {
  71.                 if( read != fwrite( Buf, 1, read, Out ) ) {
  72.                     printf( "Problems with output\n" );
  73.                     return( 20 );
  74.                 }
  75.             }
  76.  
  77.             fclose( In );
  78.             remove( namebuf );
  79.  
  80.         } else {
  81.  
  82.             if( faul>1 ) break;
  83.             faul++;
  84.  
  85.         }
  86.         vol++;
  87.  
  88.     }
  89.  
  90.  
  91.  }
  92.  
  93.  return 0;
  94.  
  95. }
  96.