'use strict'; var fs = require('fs'); module.exports.fs = function() { this.rename = function (oldPath, newPath) { return new Promise (function(resolve, reject) { fs.rename (oldPath, newPath, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.ftruncate = function (fd, len) { return new Promise (function(resolve, reject) { fs.ftruncate (fd, len, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.truncate = function (path, len) { return new Promise (function(resolve, reject) { fs.truncate (path, len, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.chown = function (path, uid, gid) { return new Promise (function(resolve, reject) { fs.chown (path, uid, gid, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.fchown = function (fd, uid, gid) { return new Promise (function(resolve, reject) { fs.fchown (fd, uid, gid, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.lchown = function (path, uid, gid) { return new Promise (function(resolve, reject) { fs.lchown (path, uid, gid, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.chmod = function (path, mode) { return new Promise (function(resolve, reject) { fs.chmod (path, mode, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.fchmod = function (fd, mode) { return new Promise (function(resolve, reject) { fs.fchmod (fd, mode, function(err) { if (err) { reject(err); } else { resolve(); } }); }); }; this.stat = function (path) { return new Promise (function(resolve, reject) { fs.stat (path, function(err, stats) { if (err) { reject(err); } else { resolve(stats); } }); }); }; this.lstat = function (path) { return new Promise (function(resolve, reject) { fs.lstat (path, function(err, stats) { if (err) { reject(err); } else { resolve(stats); } }); }); }; this.fstat = function (fd) { return new Promise (function(resolve, reject) { fs.fstat (fd, function (err, stats) { if (err) { reject(err); } else { resolve(stats); } }); }); }; this.link = function (srcpath, dstpath) { return new Promise (function (resolve, reject) { fs.link (srcpath, dstpath, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.symlink = function (destination, path) { return new Promise (function (resolve, reject) { fs.symlink (destination, path, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.readlink = function (path) { return new Promise (function (resolve, reject) { fs.readlink (path, function (err, linkString) { if (err) { reject (err); } else { resolve (linkString); } }); }); }; this.realpath = function (path, cache) { return new Promise (function (resolve, reject) { fs.readlink (path, cache, function (err, resolvedPath) { if (err) { reject (err); } else { resolve (resolvedPath); } }); }); }; this.unlink = function (path) { return new Promise (function (resolve, reject) { fs.unlink (path, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.rmdir = function (path) { return new Promise (function (resolve, reject) { fs.rmdir (path, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.mkdir = function (path, mode) { return new Promise (function (resolve, reject) { fs.mkdir (path, mode ? mode : 0o777, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.readdir = function (path) { return new Promise (function (resolve, reject) { fs.readdir (path, function (err, files) { if (err) { reject (err); } else { resolve (files); } }); }); }; this.close = function (fd) { return new Promise (function (resolve, reject) { fs.close (fd, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.open = function (path, flags, mode) { return new Promise (function (resolve, reject) { fs.open (path, flags, mode, function (err, fd) { if (err) { reject (err); } else { resolve (fd); } }); }); }; this.utimes = function (path, atime, mtime) { return new Promise (function (resolve, reject) { fs.utimes (path, atime, mtime, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.futimes = function (fd, atime, mtime) { return new Promise (function (resolve, reject) { fs.futimes (fd, atime, mtime, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.fsync = function (fd) { return new Promise (function (resolve, reject) { fs.fsync (fd, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.write = function (fd, buffer, offset, length, position) { return new Promise (function (resolve, reject) { fs.write (fd, buffer, offset, length, position, function (err, written, buffer) { if (err) { reject (err); } else { resolve (written, buffer); } }); }); }; this.read = function (fd, buffer, offset, length, position) { return new Promise (function (resolve, reject) { fs.read (fd, buffer, offset, length, position, function (err, bytesRead, buffer) { if (err) { reject (err); } else { resolve (bytesRead, buffer); } }); }); }; this.readFile = function (filename, options) { return new Promise (function (resolve, reject) { fs.readFile (filename, options, function (err, data) { if (err) { reject (err); } else { resolve (data); } }); }); }; this.writeFile = function (filename, options) { return new Promise (function (resolve, reject) { fs.writeFile (filename, options, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.appendFile = function (filename, options) { return new Promise (function (resolve, reject) { fs.appendFile (filename, options, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; this.access = function (path, mode) { return new Promise (function (resolve, reject) { fs.access (path, mode, function (err) { if (err) { reject (err); } else { resolve (); } }); }); }; };