home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / monitors / rsys / goodies / myjoin / myjoin.c < prev    next >
C/C++ Source or Header  |  1995-02-27  |  2KB  |  101 lines

  1. #include <string.h>
  2.  
  3. #include <exec/types.h>
  4. #include <exec/memory.h>
  5.  
  6. #include <dos/dos.h>
  7. #include <dos/dosextens.h>
  8.  
  9. #include <clib/dos_protos.h>
  10. #include <clib/exec_protos.h>
  11.  
  12. #include <dos/stdio.h>
  13.  
  14. struct Library *DosBase = NULL;
  15. BPTR stdout;
  16.  
  17.  
  18. LONG SizeOfFile( char *Name )
  19. {
  20.    BPTR                    lock;
  21.    struct FileInfoBlock   *InfoBlock;
  22.    LONG                    Size = 0L;
  23.  
  24.    if( InfoBlock = (struct FileInfoBlock *)
  25.                    AllocVec(sizeof(struct FileInfoBlock),MEMF_CLEAR) )
  26.    {
  27.       if( lock = Lock( (STRPTR)Name,ACCESS_READ ) )
  28.       {
  29.          if( Examine( lock,InfoBlock ) )
  30.             Size = InfoBlock->fib_Size;
  31.  
  32.          UnLock( lock );
  33.       }
  34.  
  35.       FreeVec( InfoBlock );
  36.    }
  37.  
  38.    return( Size );
  39. }
  40.  
  41.  
  42. void
  43. main(int argc,char *argv[])
  44. {
  45.    register int i;
  46.    BPTR out,in;
  47.    UBYTE *buffer;
  48.    long size;
  49.  
  50.    if(DosBase = OpenLibrary((STRPTR)"dos.library",37))
  51.    {
  52.       stdout = Output();
  53.  
  54.       if(argc >= 3)
  55.       {
  56.          if(out = Open((STRPTR)argv[1],MODE_NEWFILE))
  57.          {
  58.             for(i = 2; i < argc; i++)
  59.                if(in = Open((STRPTR)argv[i],MODE_OLDFILE))
  60.                {
  61.                   size = SizeOfFile(argv[i]);
  62.  
  63.                   buffer = AllocVec(size+2,MEMF_CLEAR|MEMF_ANY);
  64.                   if(buffer)
  65.                   {
  66.                      Read(in,buffer,size);
  67.                      Write(out,buffer,size);
  68.  
  69.                      FreeVec(buffer);
  70.  
  71.                      Write(out,(STRPTR)"\n",1);
  72.  
  73.                      Printf((STRPTR)"File %s written...\n",(ULONG)argv[i]);
  74.                   }
  75.                   else
  76.                   {
  77.                      PutStr((STRPTR)"No memory available!\n");
  78.                      break;
  79.                   }
  80.  
  81.                   Close(in);
  82.                }
  83.                else
  84.                {
  85.                   Printf((STRPTR)"Error opening %s...", (ULONG)argv[i]);
  86.                   break;
  87.                }
  88.  
  89.             Close(out);
  90.          }
  91.          else
  92.             Printf((STRPTR)"Error opening %s...", (ULONG)argv[1]);
  93.       }
  94.       else
  95.          Printf((STRPTR)"Call: %s <ToFile> <File1> <File2> ... <FileN>\n",(ULONG)argv[0]);
  96.  
  97.       CloseLibrary(DosBase);
  98.    }
  99. }
  100.  
  101.