Coverage

100%
24
24
0

cp.js

100%
24
24
0
LineHitsSource
11'use strict';
2
31var fs;
4
51try {
61 fs = require('graceful-fs');
7} catch (e) {
81 fs = require('fs');
9}
10
111exports = module.exports = function (src, dest, cb) {
122 function next(err) {
132 if (!done) {
142 done = true;
152 cb(err);
16 }
17 }
18
192 var done = false
20 , read = fs.createReadStream(src)
21 , write = fs.createWriteStream(dest);
22
232 write
24 .on('error', next)
25 .on('close', next);
26
272 read
28 .on('error', next)
29 .pipe(write);
30};
31
32// magic number. number of bytes allowed to be read
33// at a time. we're limiting this, as memory overflows
34// are likely to happen when reading large files
35// synchronously.
361var MAX_BUFFER = 1024;
37
381exports.sync = function (src, dest) {
392 if (!fs.existsSync(src)) {
401 throw new Error('no such file or directory: ' + src);
41 }
42
431 var buffer = new Buffer(MAX_BUFFER)
44 , bytesRead = MAX_BUFFER
45 , position = 0
46 , read = fs.openSync(src, 'r')
47 , write = fs.openSync(dest, 'w');
48
491 while (bytesRead === MAX_BUFFER) {
501 bytesRead = fs.readSync(read, buffer, 0, MAX_BUFFER, position);
511 fs.writeSync(write, buffer, 0, bytesRead);
521 position += bytesRead;
53 }
54
551 fs.closeSync(read);
561 fs.closeSync(write);
57};