bug fixing

This commit is contained in:
defrex 2011-04-28 18:42:02 -04:00
parent e9991ed62c
commit 5b71715d88

View file

@ -120,25 +120,23 @@ exports.chmodSyncRecursive = function(sourceDir, filemode) {
*/
exports.rmdirRecursive = function rmdirRecursive(dir, clbk){
fs.readdir(dir, function(err, files){
if (err) return clbk();
var called = 0;
var done = function(){
if (called == files.length)
fs.rmdir(dir, clbk);
else
called++;
};
done();
files.forEach(function(f){
f = dir+f;
fs.stat(f, function(err, stat){
if (err) return done();
if (err) return clbk(err);
(function rmFile(err){
if (err) return clbk(err);
var filename = files.shift();
if (filename === null || typeof filename == 'undefined')
return fs.rmdir(dir, clbk);
var file = dir+'/'+filename;
fs.stat(file, function(err, stat){
if (err) return clbk(err);
if (stat.isDirectory())
rmdirRecursive(f, done);
rmdirRecursive(file, rmFile);
else
fs.unlink(f, done);
fs.unlink(file, rmFile);
});
});
})();
});
};
@ -151,7 +149,7 @@ exports.rmdirRecursive = function rmdirRecursive(dir, clbk){
*/
exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) {
fs.stat(newDir, function(err, newDirStat){
if (!err) return exports.rmdirRecursive(newDir, function(){
if (!err) return exports.rmdirRecursive(newDir, function(err){
copyDirRecursive(srcDir, newDir, clbk);
});
@ -161,32 +159,29 @@ exports.copyDirRecursive = function copyDirRecursive(srcDir, newDir, clbk) {
if (err) return clbk(err);
fs.readdir(srcDir, function(err, files){
if (err) return clbk(err);
var called = 0;
var done = function(err){
(function copyFiles(err){
if (err) return clbk(err);
if (called == files.length)
clbk();
else
called++;
};
done();
files.forEach(function(filename){
var filename = files.shift();
if (filename === null || typeof filename == 'undefined')
return clbk();
var file = srcDir+'/'+filename,
newFile = newDir+'/'+filename,
called = 0;
newFile = newDir+'/'+filename;
fs.stat(file, function(err, fileStat){
if (fileStat.isDirectory())
copyDirRecursive(file, newFile, done);
copyDirRecursive(file, newFile, copyFiles);
else if (fileStat.isSymbolicLink())
fs.readlink(file, function(err, link){
fs.symlink(link, newFile, done);
fs.symlink(link, newFile, copyFiles);
});
else
fs.readFile(file, function(err, data){
fs.writeFile(newFile, data, done);
fs.writeFile(newFile, data, copyFiles);
});
});
});
})();
});
});
});