Commit 97a9273e authored by Julien Fontanet's avatar Julien Fontanet

feat(open): add flags support

parent 89cde8df
var Writable = require('stream').Writable;
var BigInt = require('../tools/bigint');
var parseFlags = require('../tools/parse-flags');
var request = require('../tools/smb2-forge').request;
var constants = require('../structures/constants');
// Where does it come from?!
var maxPacketSize = 0x00010000 - 0x71;
......@@ -13,20 +13,13 @@ module.exports = function createWriteStream(path, options, cb) {
options = {};
}
var createDisposition;
var flags = options != null && options.flags;
if (flags === 'r+') {
createDisposition = constants.FILE_OPEN;
} else if (flags === 'w' || flags === 'w+') {
createDisposition = constants.FILE_OVERWRITE_IF;
} else if (flags === 'wx' || flags === 'wx+') {
createDisposition = constants.FILE_CREATE;
}
var connection = this;
request(
'create',
{ createDisposition: createDisposition, path: path },
{
createDisposition: parseFlags((options != null && options.flags) || 'wx'),
path: path,
},
connection,
function(err, file) {
if (err != null) {
......
var parseFlags = require('../tools/parse-flags');
var request = require('../tools/smb2-forge').request;
module.exports = function open(path, cb) {
request('open', { path: path }, this, cb);
module.exports = function open(path, flags, cb) {
if (typeof flags === 'function') {
cb = flags;
flags = undefined;
}
request(
'create',
{ createDisposition: parseFlags(flags || 'r'), path: path },
this,
cb
);
};
var SMB2Forge = require('../tools/smb2-forge');
var SMB2Request = SMB2Forge.request;
var BigInt = require('../tools/bigint');
var constants = require('../structures/constants');
var parseFlags = require('../tools/parse-flags');
/*
* writeFile
......@@ -24,16 +24,6 @@ module.exports = function writeFile(filename, data, options, cb) {
options = {};
}
var createDisposition;
var flags = options != null && (options.flags || options.flag);
if (flags === 'r+') {
createDisposition = constants.FILE_OPEN;
} else if (flags === 'w' || flags === 'w+') {
createDisposition = constants.FILE_OVERWRITE_IF;
} else if (flags === 'wx' || flags === 'wx+') {
createDisposition = constants.FILE_CREATE;
}
options.encoding = options.encoding || 'utf8';
var connection = this;
......@@ -46,7 +36,12 @@ module.exports = function writeFile(filename, data, options, cb) {
function createFile(fileCreated) {
SMB2Request(
'create',
{ createDisposition: createDisposition, path: filename },
{
createDisposition: parseFlags(
(options != null && (options.flags || options.flag)) || 'wx'
),
path: filename,
},
connection,
function(err, f) {
if (err) cb && cb(err);
......
var c = require('../structures/constants');
module.exports = function parseFlags(flags) {
const chars = { __proto__: null };
for (let i = 0, n = flags.length; i < n; ++i) {
chars[flags[i]] = true;
}
if ('r' in chars) {
return c.FILE_OPEN;
}
if ('x' in chars) {
return c.FILE_CREATE;
}
if ('a' in chars) {
return c.FILE_OPEN_IF;
}
if ('w' in chars) {
return c.FILE_OVERWRITE_IF;
}
throw new Error('invalid flags');
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment