#include <u.h>
#include <libc.h>
#define DEFB (8*1024)
-#define Nwork 16
+#define Nwork 8
+int buflen;
int failed;
int gflag;
int uflag;
failed = 1;
return;
}
+
+ buflen = iounit(fdf);
+ if(buflen <= 0)
+ buflen = DEFB;
+
if(copy1(fdf, fdt, from, to)==0 && (xflag || gflag || uflag)){
nulldir(&dirt);
if(xflag){
void
worker(int fdf, int fdt, char *from, char *to)
{
- char buf[DEFB], *bp;
+ char *buf, *bp;
long len, n;
vlong o;
- len = sizeof(buf);
+ len = buflen;
+ buf = malloc(len);
+ if(buf == nil){
+ fprint(2, "out of memory\n");
+ _exits(nil);
+ }
bp = buf;
o = nextoff();
o += n;
len -= n;
if(len == 0){
- len = sizeof buf;
+ len = buflen;
bp = buf;
o = nextoff();
}
}
+
+ free(buf);
_exits(nil);
}
qlock(&lk);
o = off;
- off += DEFB;
+ off += buflen;
qunlock(&lk);
return o;