summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/file.js28
1 files changed, 8 insertions, 20 deletions
diff --git a/lib/file.js b/lib/file.js
index 1ac89a8a84..dd3427876e 100644
--- a/lib/file.js
+++ b/lib/file.js
@@ -108,17 +108,16 @@ proto._maybeDispatch = function () {
debugObject(self.currentAction);
args = self.currentAction.args || [];
+ method = self.currentAction.method;
+
- if (self.currentAction.method !== "open") {
+ if (method !== "open") {
args.unshift(self.fd);
}
- method = self.currentAction.method;
-
if (!args[3] && (method === "read" || method === "write")) {
args[3] = self.encoding;
}
-
promise = node.fs[method].apply(self, args);
userPromise = self.currentAction.promise;
@@ -144,21 +143,10 @@ proto._queueAction = function (method, args) {
return userPromise;
};
-// FIXME the following can probably be DRY'd up with some fancy getter
-// stuff.
-proto.open = function (filename, flags, mode) {
- return this._queueAction("open", [filename, flags, mode]);
-};
+(["open", "write", "read", "close"]).forEach(function (name) {
+ proto[name] = function () {
+ return this._queueAction(name, Array.prototype.slice.call(arguments, 0));
+ };
+});
-proto.write = function (data, pos, encoding) {
- return this._queueAction("write", [data, pos, encoding]);
-};
-
-proto.read = function (length, pos, encoding) {
- return this._queueAction("read", [length, pos, encoding]);
-};
-
-proto.close = function () {
- return this._queueAction("close");
-};