From add00ce563c572d2f855659f6327ee02372f7ec5 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Sun, 23 Sep 2018 13:49:00 -0400 Subject: [PATCH 01/12] testing out the validateAndMask() function, with console.log's... --- package-lock.json | 28 +++++++++++++++++++++------- src/filesystem/implementation.js | 16 ++++++++++++++-- tests/spec/fs.open.spec.js | 16 ++++++++++++++++ 3 files changed, 51 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7524475..d76a628 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3278,12 +3278,14 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, + "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3298,17 +3300,20 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "core-util-is": { "version": "1.0.2", @@ -3425,7 +3430,8 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "ini": { "version": "1.3.5", @@ -3437,6 +3443,7 @@ "version": "1.0.0", "bundled": true, "dev": true, + "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3451,6 +3458,7 @@ "version": "3.0.4", "bundled": true, "dev": true, + "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3458,12 +3466,14 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, + "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -3482,6 +3492,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -3562,7 +3573,8 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "object-assign": { "version": "4.1.1", @@ -3574,6 +3586,7 @@ "version": "1.4.0", "bundled": true, "dev": true, + "optional": true, "requires": { "wrappy": "1" } @@ -3695,6 +3708,7 @@ "version": "1.0.2", "bundled": true, "dev": true, + "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 6f15e2c..35e4abe 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1623,8 +1623,16 @@ function open(fs, context, path, flags, mode, callback) { * callback = makeCallback(callback); * } */ - - callback = arguments[arguments.length - 1]; + if (arguments.length == 5){ + callback = arguments[arguments.length - 1]; + } + else { + //need to test this validateAndMakeMode + console.log("open'd mode: " + mode) + mode = validateAndMaskMode(mode, FULL_READ_WRITE_EXEC_PERMISSIONS, callback); + console.log("mask'd mode: " + mode) + } + if(!pathCheck(path, callback)) return; function check_result(error, fileNode) { @@ -1913,12 +1921,15 @@ function isUint32(value) { // Validator for mode_t (the S_* constants). Valid numbers or octal strings // will be masked with 0o777 to be consistent with the behavior in POSIX APIs. function validateAndMaskMode(value, def, callback) { + console.log("Passed in mode: " + value) if(typeof def === 'function') { callback = def; def = undefined; } if (isUint32(value)) { + let newMode = value & FULL_READ_WRITE_EXEC_PERMISSIONS; + console.log("Masked mode: " + newMode) return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } @@ -1939,6 +1950,7 @@ function validateAndMaskMode(value, def, callback) { return false; } var parsed = parseInt(value, 8); + console.log("Parsed + Masekd mode: " + parsed & FULL_READ_WRITE_EXEC_PERMISSIONS) return parsed & FULL_READ_WRITE_EXEC_PERMISSIONS; } diff --git a/tests/spec/fs.open.spec.js b/tests/spec/fs.open.spec.js index b995755..ce7435d 100644 --- a/tests/spec/fs.open.spec.js +++ b/tests/spec/fs.open.spec.js @@ -106,6 +106,22 @@ describe('fs.open', function() { }); }); + it('should create a new file when flagged for write, and set the mode', function(done) { + var fs = util.fs(); + + fs.open('/myfile', 'w', 644, function(error) { + if(error) throw error; + + fs.stat('/myfile', function(error, result) { + expect(error).not.to.exist; + expect(result).to.exist; + expect(result.type).to.equal('FILE'); + expect(result.mode).to.exist; + expect(result.mode).to.equal(33188) + done(); + }); + }); + }); /** * This test is currently correct per our code, but incorrect according to the spec. * When we fix https://github.com/filerjs/filer/issues/314 we'll have to update this. From e7811eb53bc8033ebbc8d197743f7852f4869d94 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Mon, 24 Sep 2018 17:46:01 -0400 Subject: [PATCH 02/12] fixed lint spaces/indentation errors --- src/filesystem/implementation.js | 24 ++++++++++++------------ tests/spec/fs.open.spec.js | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 35e4abe..1ec08ea 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1623,15 +1623,15 @@ function open(fs, context, path, flags, mode, callback) { * callback = makeCallback(callback); * } */ - if (arguments.length == 5){ - callback = arguments[arguments.length - 1]; - } - else { - //need to test this validateAndMakeMode - console.log("open'd mode: " + mode) - mode = validateAndMaskMode(mode, FULL_READ_WRITE_EXEC_PERMISSIONS, callback); - console.log("mask'd mode: " + mode) - } + if (arguments.length == 5){ + callback = arguments[arguments.length - 1]; + } + else { + //need to test this validateAndMakeMode + console.log('open\'d mode: ' + mode); + mode = validateAndMaskMode(mode, FULL_READ_WRITE_EXEC_PERMISSIONS, callback); + console.log('mask\'d mode: ' + mode); + } if(!pathCheck(path, callback)) return; @@ -1921,7 +1921,7 @@ function isUint32(value) { // Validator for mode_t (the S_* constants). Valid numbers or octal strings // will be masked with 0o777 to be consistent with the behavior in POSIX APIs. function validateAndMaskMode(value, def, callback) { - console.log("Passed in mode: " + value) + console.log('Passed in mode: ' + value); if(typeof def === 'function') { callback = def; def = undefined; @@ -1929,7 +1929,7 @@ function validateAndMaskMode(value, def, callback) { if (isUint32(value)) { let newMode = value & FULL_READ_WRITE_EXEC_PERMISSIONS; - console.log("Masked mode: " + newMode) + console.log('Masked mode: ' + newMode); return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } @@ -1950,7 +1950,7 @@ function validateAndMaskMode(value, def, callback) { return false; } var parsed = parseInt(value, 8); - console.log("Parsed + Masekd mode: " + parsed & FULL_READ_WRITE_EXEC_PERMISSIONS) + console.log('Parsed + Masekd mode: ' + parsed & FULL_READ_WRITE_EXEC_PERMISSIONS); return parsed & FULL_READ_WRITE_EXEC_PERMISSIONS; } diff --git a/tests/spec/fs.open.spec.js b/tests/spec/fs.open.spec.js index ce7435d..64caf0d 100644 --- a/tests/spec/fs.open.spec.js +++ b/tests/spec/fs.open.spec.js @@ -117,7 +117,7 @@ describe('fs.open', function() { expect(result).to.exist; expect(result.type).to.equal('FILE'); expect(result.mode).to.exist; - expect(result.mode).to.equal(33188) + expect(result.mode).to.equal(33188); done(); }); }); From 78b3452d5d4687faac874167a5982a425eeabcd1 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Mon, 24 Sep 2018 19:10:09 -0400 Subject: [PATCH 03/12] added the addition of an optional mode when opening a file, removed my test because it was broken. Seemingly passes all the other tests still. STILL TO DO: add a proper test which makes sure the mode is set. --- src/filesystem/implementation.js | 11 +++++++---- tests/spec/fs.open.spec.js | 16 ---------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 1ec08ea..d192cb4 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -533,7 +533,10 @@ function remove_directory(context, path, callback) { find_node(context, parentPath, read_parent_directory_data); } -function open_file(context, path, flags, callback) { +function open_file(context, path, flags, mode, callback) { + if (typeof mode == 'function'){ + callback = mode; + } path = normalize(path); var name = basename(path); var parentPath = dirname(path); @@ -645,6 +648,7 @@ function open_file(context, path, flags, callback) { } fileNode = result; fileNode.nlinks += 1; + if(mode){Node.setMode(mode, fileNode);} context.putObject(fileNode.id, fileNode, write_file_data); }); } @@ -1625,12 +1629,11 @@ function open(fs, context, path, flags, mode, callback) { */ if (arguments.length == 5){ callback = arguments[arguments.length - 1]; + mode = 0o666; } else { //need to test this validateAndMakeMode - console.log('open\'d mode: ' + mode); mode = validateAndMaskMode(mode, FULL_READ_WRITE_EXEC_PERMISSIONS, callback); - console.log('mask\'d mode: ' + mode); } if(!pathCheck(path, callback)) return; @@ -1656,7 +1659,7 @@ function open(fs, context, path, flags, mode, callback) { callback(new Errors.EINVAL('flags is not valid'), path); } - open_file(context, path, flags, check_result); + open_file(context, path, flags, mode, check_result); } function close(fs, context, fd, callback) { diff --git a/tests/spec/fs.open.spec.js b/tests/spec/fs.open.spec.js index 64caf0d..b995755 100644 --- a/tests/spec/fs.open.spec.js +++ b/tests/spec/fs.open.spec.js @@ -106,22 +106,6 @@ describe('fs.open', function() { }); }); - it('should create a new file when flagged for write, and set the mode', function(done) { - var fs = util.fs(); - - fs.open('/myfile', 'w', 644, function(error) { - if(error) throw error; - - fs.stat('/myfile', function(error, result) { - expect(error).not.to.exist; - expect(result).to.exist; - expect(result.type).to.equal('FILE'); - expect(result.mode).to.exist; - expect(result.mode).to.equal(33188); - done(); - }); - }); - }); /** * This test is currently correct per our code, but incorrect according to the spec. * When we fix https://github.com/filerjs/filer/issues/314 we'll have to update this. From 833ac62c4562e10d03a8be74fd69a8983bf59f1d Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Mon, 24 Sep 2018 19:14:08 -0400 Subject: [PATCH 04/12] removed some console.logs because travis-ci complained --- src/filesystem/implementation.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index d192cb4..efe300a 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1924,7 +1924,6 @@ function isUint32(value) { // Validator for mode_t (the S_* constants). Valid numbers or octal strings // will be masked with 0o777 to be consistent with the behavior in POSIX APIs. function validateAndMaskMode(value, def, callback) { - console.log('Passed in mode: ' + value); if(typeof def === 'function') { callback = def; def = undefined; @@ -1932,7 +1931,6 @@ function validateAndMaskMode(value, def, callback) { if (isUint32(value)) { let newMode = value & FULL_READ_WRITE_EXEC_PERMISSIONS; - console.log('Masked mode: ' + newMode); return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } @@ -1953,7 +1951,6 @@ function validateAndMaskMode(value, def, callback) { return false; } var parsed = parseInt(value, 8); - console.log('Parsed + Masekd mode: ' + parsed & FULL_READ_WRITE_EXEC_PERMISSIONS); return parsed & FULL_READ_WRITE_EXEC_PERMISSIONS; } From f3a71701330569874f7fac787f3679bf0aa00bc7 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Mon, 24 Sep 2018 19:17:19 -0400 Subject: [PATCH 05/12] removed an unused variable, because I was using it for those console.logs which I just deleted --- src/filesystem/implementation.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index efe300a..09fe361 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1930,7 +1930,6 @@ function validateAndMaskMode(value, def, callback) { } if (isUint32(value)) { - let newMode = value & FULL_READ_WRITE_EXEC_PERMISSIONS; return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } From 30752c910972fbfa3776fda6cbc5419f3a1b34fd Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Mon, 24 Sep 2018 23:28:56 -0400 Subject: [PATCH 06/12] added a test: open a new file for writing, and set a mode for that file --- src/filesystem/implementation.js | 4 ++-- tests/spec/fs.open.spec.js | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 09fe361..2c6cc69 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1629,7 +1629,7 @@ function open(fs, context, path, flags, mode, callback) { */ if (arguments.length == 5){ callback = arguments[arguments.length - 1]; - mode = 0o666; + mode = 0o644; } else { //need to test this validateAndMakeMode @@ -1928,8 +1928,8 @@ function validateAndMaskMode(value, def, callback) { callback = def; def = undefined; } - if (isUint32(value)) { + let newMode = value & FULL_READ_WRITE_EXEC_PERMISSIONS; return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } diff --git a/tests/spec/fs.open.spec.js b/tests/spec/fs.open.spec.js index b995755..474fd23 100644 --- a/tests/spec/fs.open.spec.js +++ b/tests/spec/fs.open.spec.js @@ -106,6 +106,24 @@ describe('fs.open', function() { }); }); + + it('should create a new file, when flagged for write, and set the mode to the passed value', function(done) { + + var fs = util.fs(); + fs.open('/myfile', 'w', 0o777, function(error) { + if(error) throw error; + + fs.stat('/myfile', function(error, result) { + expect(error).not.to.exist; + expect(result).to.exist; + expect(result.mode).to.exist; + expect(result.mode & 0o777).to.equal(0o777); + done(); + }); + }); + }); + + /** * This test is currently correct per our code, but incorrect according to the spec. * When we fix https://github.com/filerjs/filer/issues/314 we'll have to update this. From 62b85d14424bedaa81ee15a7f0d5ee8e18a5df25 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Mon, 24 Sep 2018 23:32:11 -0400 Subject: [PATCH 07/12] i did it again...forgot to remove an unused variable so travis-ci test failed. --- src/filesystem/implementation.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 2c6cc69..9548971 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1929,7 +1929,6 @@ function validateAndMaskMode(value, def, callback) { def = undefined; } if (isUint32(value)) { - let newMode = value & FULL_READ_WRITE_EXEC_PERMISSIONS; return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } From 7a6a4160e6ed144a1327626e50b760c3c6bcc2d0 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Tue, 9 Oct 2018 20:25:19 -0400 Subject: [PATCH 08/12] made changes as per thomas's and dave's PR review --- src/filesystem/implementation.js | 10 ++++++---- tests/spec/fs.open.spec.js | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 9548971..4b44f18 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -534,8 +534,9 @@ function remove_directory(context, path, callback) { } function open_file(context, path, flags, mode, callback) { - if (typeof mode == 'function'){ + if (typeof mode === 'function'){ callback = mode; + mode = null } path = normalize(path); var name = basename(path); @@ -648,7 +649,9 @@ function open_file(context, path, flags, mode, callback) { } fileNode = result; fileNode.nlinks += 1; - if(mode){Node.setMode(mode, fileNode);} + if(mode){ + Node.setMode(mode, fileNode); + } context.putObject(fileNode.id, fileNode, write_file_data); }); } @@ -1627,12 +1630,11 @@ function open(fs, context, path, flags, mode, callback) { * callback = makeCallback(callback); * } */ - if (arguments.length == 5){ + if (arguments.length < 6 ){ callback = arguments[arguments.length - 1]; mode = 0o644; } else { - //need to test this validateAndMakeMode mode = validateAndMaskMode(mode, FULL_READ_WRITE_EXEC_PERMISSIONS, callback); } diff --git a/tests/spec/fs.open.spec.js b/tests/spec/fs.open.spec.js index 474fd23..ba76408 100644 --- a/tests/spec/fs.open.spec.js +++ b/tests/spec/fs.open.spec.js @@ -123,7 +123,6 @@ describe('fs.open', function() { }); }); - /** * This test is currently correct per our code, but incorrect according to the spec. * When we fix https://github.com/filerjs/filer/issues/314 we'll have to update this. From e11c101600b290413b1977e55ecf95b675806206 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Tue, 9 Oct 2018 20:28:46 -0400 Subject: [PATCH 09/12] forgot a semicolon --- src/filesystem/implementation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index 4b44f18..c691d67 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -536,7 +536,7 @@ function remove_directory(context, path, callback) { function open_file(context, path, flags, mode, callback) { if (typeof mode === 'function'){ callback = mode; - mode = null + mode = null; } path = normalize(path); var name = basename(path); From ee67cb39de7c7e0eee6a38b5bbdf25aeb07123ca Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Tue, 9 Oct 2018 20:34:09 -0400 Subject: [PATCH 10/12] rolled back the package-lock.json to master's version --- package-lock.json | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index d76a628..7524475 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3278,14 +3278,12 @@ "balanced-match": { "version": "1.0.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, - "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -3300,20 +3298,17 @@ "code-point-at": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "concat-map": { "version": "0.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "core-util-is": { "version": "1.0.2", @@ -3430,8 +3425,7 @@ "inherits": { "version": "2.0.3", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "ini": { "version": "1.3.5", @@ -3443,7 +3437,6 @@ "version": "1.0.0", "bundled": true, "dev": true, - "optional": true, "requires": { "number-is-nan": "^1.0.0" } @@ -3458,7 +3451,6 @@ "version": "3.0.4", "bundled": true, "dev": true, - "optional": true, "requires": { "brace-expansion": "^1.1.7" } @@ -3466,14 +3458,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "minipass": { "version": "2.2.4", "bundled": true, "dev": true, - "optional": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -3492,7 +3482,6 @@ "version": "0.5.1", "bundled": true, "dev": true, - "optional": true, "requires": { "minimist": "0.0.8" } @@ -3573,8 +3562,7 @@ "number-is-nan": { "version": "1.0.1", "bundled": true, - "dev": true, - "optional": true + "dev": true }, "object-assign": { "version": "4.1.1", @@ -3586,7 +3574,6 @@ "version": "1.4.0", "bundled": true, "dev": true, - "optional": true, "requires": { "wrappy": "1" } @@ -3708,7 +3695,6 @@ "version": "1.0.2", "bundled": true, "dev": true, - "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", From 675773b92aea2d5c8fb1117d18d69e16944f6f64 Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Wed, 10 Oct 2018 15:10:34 -0400 Subject: [PATCH 11/12] re-added the newline, as well as another test case to make sure mode is still set to default value when a new file is opened --- src/filesystem/implementation.js | 1 + tests/spec/fs.open.spec.js | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index c691d67..a6efc4b 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1930,6 +1930,7 @@ function validateAndMaskMode(value, def, callback) { callback = def; def = undefined; } + if (isUint32(value)) { return value & FULL_READ_WRITE_EXEC_PERMISSIONS; } diff --git a/tests/spec/fs.open.spec.js b/tests/spec/fs.open.spec.js index ba76408..1907142 100644 --- a/tests/spec/fs.open.spec.js +++ b/tests/spec/fs.open.spec.js @@ -123,6 +123,22 @@ describe('fs.open', function() { }); }); + it('should create a new file, but no mode is passed, so the default value of 644 should be seen', function(done) { + + var fs = util.fs(); + fs.open('/myfile', 'w', function(error) { + if(error) throw error; + + fs.stat('/myfile', function(error, result) { + expect(error).not.to.exist; + expect(result).to.exist; + expect(result.mode).to.exist; + expect(result.mode & 0o644).to.equal(0o644); + done(); + }); + }); + }); + /** * This test is currently correct per our code, but incorrect according to the spec. * When we fix https://github.com/filerjs/filer/issues/314 we'll have to update this. From 08b0b3001e60ffeef0974591efc2376f6a09fecd Mon Sep 17 00:00:00 2001 From: Stephen Ward Date: Wed, 10 Oct 2018 22:48:13 -0400 Subject: [PATCH 12/12] removed pre-existing comment about open() --- src/filesystem/implementation.js | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/filesystem/implementation.js b/src/filesystem/implementation.js index a6efc4b..ef59abf 100644 --- a/src/filesystem/implementation.js +++ b/src/filesystem/implementation.js @@ -1615,21 +1615,6 @@ function pathCheck(path, allowRelative, callback) { function open(fs, context, path, flags, mode, callback) { - /** - * NOTE: we support the same signature as node with a `mode` arg, - * but ignore it. We need to add it. Here is what node.js does: - * function open(path, flags, mode, callback) { - * path = getPathFromURL(path); - * validatePath(path); - * const flagsNumber = stringToFlags(flags); - * if (arguments.length < 4) { - * callback = makeCallback(mode); - * mode = 0o666; - * } else { - * mode = validateAndMaskMode(mode, 'mode', 0o666); - * callback = makeCallback(callback); - * } - */ if (arguments.length < 6 ){ callback = arguments[arguments.length - 1]; mode = 0o644; @@ -1930,7 +1915,7 @@ function validateAndMaskMode(value, def, callback) { callback = def; def = undefined; } - + if (isUint32(value)) { return value & FULL_READ_WRITE_EXEC_PERMISSIONS; }