home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
-
- #ifndef min
- #define min(a,b) ((a)<=(b)?(a):(b))
- #endif
-
- char VerStr[] = "$VER: DiskJoin 1.0 (7.5.96)";
-
- #define BUFSIZE 50000
-
- int main( int argv, char **arg )
- {
-
- long read;
- char *name = 0;
- short f, vol;
- FILE *In, *Out = 0;
- char *Buf, namebuf[30], *pnt, faul;
-
- if( argv < 2 ) {
- Info:
- printf( "DiskJoin v1.0 (7.5.96)\nJoin files created by DiskSplit\n\n Usage: DiskJoin filebase\n\n" );
- return( 20 );
- } else {
- for( f = 1; f < argv; f++ ) {
- name = arg[f];
- }
- if( !name ) goto Info;
-
- if( !(Buf = malloc( BUFSIZE )) ) {
- printf( "Can not alloc %d bytes buffer\n", (int)BUFSIZE );
- return( 20 );
- }
-
- vol = 0;
-
-
- if( !(Out = fopen( name, "ab" )) ) {
- printf( "Can not open file for writing\n" );
- return( 20 );
- }
-
- faul = 0;
-
- while( 1 ) {
-
- strcpy( namebuf, name );
- for( pnt = namebuf; ; pnt++ ) {
- if( !*pnt ) {
- *(pnt++) = '.';
- break;
- }
- else if( *pnt == '.' ) {
- pnt++;
- if( *pnt ) pnt++;
- break;
- }
- }
- sprintf( pnt, "%02hd", vol );
-
- In = fopen( namebuf, "rb" );
-
- if( In ) {
-
- faul = 0;
-
- printf( "Processing: %s\n", namebuf );
- while( read = fread( Buf, 1, BUFSIZE, In ) ) {
- if( read != fwrite( Buf, 1, read, Out ) ) {
- printf( "Problems with output\n" );
- return( 20 );
- }
- }
-
- fclose( In );
- remove( namebuf );
-
- } else {
-
- if( faul>1 ) break;
- faul++;
-
- }
- vol++;
-
- }
-
-
- }
-
- return 0;
-
- }
-