- lseek(inFd, skipBlocks * blockSize, SEEK_SET);
- lseek(outFd, seekBlocks * blockSize, SEEK_SET);
- //
- //TODO: Convert to using fullRead & fullWrite
- // from utility.c
- // -Erik
- while (outTotal < count * blockSize) {
- inCc = read(inFd, buf, blockSize);
- if (inCc < 0) {
- perror(inFile);
- goto cleanup;
- } else if (inCc == 0) {
- goto cleanup;
- }
- intotal += inCc;
- cp = buf;
-
- while (intotal > outTotal) {
- if (outTotal + inCc > count * blockSize)
- inCc = count * blockSize - outTotal;
- outCc = write(outFd, cp, inCc);
- if (outCc < 0) {
- perror(outFile);
- goto cleanup;
- } else if (outCc == 0) {
- goto cleanup;
+ lseek(inFd, (off_t) (skipBlocks * blockSize), SEEK_SET);
+ lseek(outFd, (off_t) (seekBlocks * blockSize), SEEK_SET);
+ totalSize=count*blockSize;
+
+ ibs=blockSize;
+ if (ibs > BUFSIZ)
+ ibs=BUFSIZ;
+
+ while (totalSize > outTotal) {
+ inCc = fullRead(inFd, buf, ibs);
+ inTotal += inCc;
+ if ( (sync==TRUE) && (inCc>0) )
+ while (inCc<ibs)
+ buf[inCc++]='\0';
+
+ if ((outCc = fullWrite(outFd, buf, inCc)) < 1){
+ if (outCc < 0 ){
+ perror("Error during write");