mirror of https://github.com/nodejs/node.git
fs: make parameters optional for readSync
This makes the offset, length and position parameters optional by passing in an options object. PR-URL: https://github.com/nodejs/node/pull/32460 Reviewed-By: Anna Henningsen <anna@addaleax.net>
This commit is contained in:
parent
05da0bbadc
commit
88b4e86fd7
|
@ -3069,6 +3069,32 @@ Returns the number of `bytesRead`.
|
|||
For detailed information, see the documentation of the asynchronous version of
|
||||
this API: [`fs.read()`][].
|
||||
|
||||
## `fs.readSync(fd, buffer, [options])`
|
||||
<!-- YAML
|
||||
added: REPLACEME
|
||||
changes:
|
||||
- version: REPLACEME
|
||||
pr-url: https://github.com/nodejs/node/pull/32460
|
||||
description: Options object can be passed in
|
||||
to make offset, length and position optional
|
||||
-->
|
||||
|
||||
* `fd` {integer}
|
||||
* `buffer` {Buffer|TypedArray|DataView}
|
||||
* `options` {Object}
|
||||
* `offset` {integer} **Default:** `0`
|
||||
* `length` {integer} **Default:** `buffer.length`
|
||||
* `position` {integer} **Default:** `null`
|
||||
* Returns: {number}
|
||||
|
||||
Returns the number of `bytesRead`.
|
||||
|
||||
Similar to the above `fs.readSync` function, this version takes an optional `options` object.
|
||||
If no `options` object is specified, it will default with the above values.
|
||||
|
||||
For detailed information, see the documentation of the asynchronous version of
|
||||
this API: [`fs.read()`][].
|
||||
|
||||
## `fs.readv(fd, buffers[, position], callback)`
|
||||
<!-- YAML
|
||||
added: REPLACEME
|
||||
|
|
12
lib/fs.js
12
lib/fs.js
|
@ -533,8 +533,20 @@ function read(fd, buffer, offset, length, position, callback) {
|
|||
ObjectDefineProperty(read, internalUtil.customPromisifyArgs,
|
||||
{ value: ['bytesRead', 'buffer'], enumerable: false });
|
||||
|
||||
// usage:
|
||||
// fs.readSync(fd, buffer, offset, length, position);
|
||||
// OR
|
||||
// fs.readSync(fd, buffer, {}) or fs.readSync(fd, buffer)
|
||||
function readSync(fd, buffer, offset, length, position) {
|
||||
validateInt32(fd, 'fd', 0);
|
||||
|
||||
if (arguments.length <= 3) {
|
||||
// Assume fs.read(fd, buffer, options)
|
||||
const options = offset || {};
|
||||
|
||||
({ offset = 0, length = buffer.length, position } = options);
|
||||
}
|
||||
|
||||
validateBuffer(buffer);
|
||||
|
||||
if (offset == null) {
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const fixtures = require('../common/fixtures');
|
||||
const fs = require('fs');
|
||||
const assert = require('assert');
|
||||
const filepath = fixtures.path('x.txt');
|
||||
const fd = fs.openSync(filepath, 'r');
|
||||
|
||||
const expected = Buffer.from('xyz\n');
|
||||
|
||||
function runTest(defaultBuffer, options) {
|
||||
const result = fs.readSync(fd, defaultBuffer, options);
|
||||
assert.strictEqual(result, expected.length);
|
||||
assert.deepStrictEqual(defaultBuffer, expected);
|
||||
}
|
||||
|
||||
// Test passing in an empty options object
|
||||
runTest(Buffer.allocUnsafe(expected.length), { position: 0 });
|
||||
|
||||
// Test not passing in any options object
|
||||
runTest(Buffer.allocUnsafe(expected.length));
|
||||
|
||||
// Test passing in options
|
||||
runTest(Buffer.allocUnsafe(expected.length), { offset: 0,
|
||||
length: expected.length,
|
||||
position: 0 });
|
Loading…
Reference in New Issue