mdf@trwrba.UUCP (Mark D. Falleroni) (11/04/85)
The is an ST program that executes from the Hippo OS shell. It allows
files (up to 28000 bytes) to be copied with only one disk swap.
- - - - - - - - cut here - - - - - - - - cut here - - - - - - - -
#include <stdio.h>
#define MEMBUF 28000
#define READ 0
#define WRITE 1
#define BUFSIZE 1024
main(argc,argv)
int argc;
char *argv[];
{
int handle,n,bytes_read,cnt,i,c;
char bigbuf[MEMBUF];
if (argc != 3)
error("ONEDSK usage: onedsk source file destination file",NULL);
printf("\nOpening %s\n",argv[1]);
if ((handle = open(argv[1],READ)) < 0)
error("ONEDSK: error opening %s",argv[1]);
n=0;
bytes_read=0;
while ((n = read(handle,BUFSIZE,bigbuf+bytes_read)) > 0)
{
bytes_read += n;
printf("Bytes read = %d\n",bytes_read);
}
close (handle);
printf("\n\n");
printf("Insert destination disk in Drive A:\n");
printf("Type any key when ready\n");
necin(); /* get char with no screen echo */
printf("\nCreating %s on the destination disk\n",argv[2]);
if ((handle = create(argv[2],0777)) < 0) /* if can't create it */
handle = open(argv[2],WRITE); /* try opening it */
if (handle < 0)
error("ONEDSK: cannot create or open %s",argv[2]);
if ((n = write(handle,bytes_read,bigbuf)) < 0)
error("ONEDSK: error writing to %s",argv[2]);
printf("\nBytes written = %d\n",n);
close(handle);
if (n == bytes_read)
printf("\nCOPY COMPLETED\n\n");
else
printf("\nBYTE COUNT MISMATCH: BAD COPY!\n\n");
}
error(s1,s2)
char *s1, *s2;
{
printf(s1,s2);
printf("\n");
exit(1);
}