Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fs: remove options.encoding from Dir.read*() #29908

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 6 additions & 19 deletions doc/api/fs.md
Original file line number Diff line number Diff line change
Expand Up @@ -351,13 +351,11 @@ added: REPLACEME
Synchronously close the directory's underlying resource handle.
Subsequent reads will result in errors.

### dir.read([options])
### dir.read()
<!-- YAML
added: REPLACEME
-->

* `options` {Object}
* `encoding` {string|null} **Default:** `'utf8'`
* Returns: {Promise} containing {fs.Dirent}

Asynchronously read the next directory entry via readdir(3) as an
Expand All @@ -369,13 +367,11 @@ is completed.
_Directory entries returned by this function are in no particular order as
provided by the operating system's underlying directory mechanisms._

### dir.read([options, ]callback)
### dir.read(callback)
<!-- YAML
added: REPLACEME
-->

* `options` {Object}
* `encoding` {string|null} **Default:** `'utf8'`
* `callback` {Function}
* `err` {Error}
* `dirent` {fs.Dirent}
Expand All @@ -385,25 +381,19 @@ Asynchronously read the next directory entry via readdir(3) as an

The `callback` will be called with a [Dirent][] after the read is completed.

The `encoding` option sets the encoding of the `name` in the `dirent`.

_Directory entries returned by this function are in no particular order as
provided by the operating system's underlying directory mechanisms._

### dir.readSync([options])
### dir.readSync()
<!-- YAML
added: REPLACEME
-->

* `options` {Object}
* `encoding` {string|null} **Default:** `'utf8'`
* Returns: {fs.Dirent}

Synchronously read the next directory entry via readdir(3) as an
[`fs.Dirent`][].

The `encoding` option sets the encoding of the `name` in the `dirent`.

_Directory entries returned by this function are in no particular order as
provided by the operating system's underlying directory mechanisms._

Expand Down Expand Up @@ -2658,8 +2648,7 @@ Creates an [`fs.Dir`][], which contains all further functions for reading from
and cleaning up the directory.

The `encoding` option sets the encoding for the `path` while opening the
directory and subsequent read operations (unless otherwise overriden during
reads from the directory).
directory and subsequent read operations.

## fs.opendirSync(path[, options])
<!-- YAML
Expand All @@ -2677,8 +2666,7 @@ Creates an [`fs.Dir`][], which contains all further functions for reading from
and cleaning up the directory.

The `encoding` option sets the encoding for the `path` while opening the
directory and subsequent read operations (unless otherwise overriden during
reads from the directory).
directory and subsequent read operations.

## fs.read(fd, buffer, offset, length, position, callback)
<!-- YAML
Expand Down Expand Up @@ -4835,8 +4823,7 @@ Creates an [`fs.Dir`][], which contains all further functions for reading from
and cleaning up the directory.

The `encoding` option sets the encoding for the `path` while opening the
directory and subsequent read operations (unless otherwise overriden during
reads from the directory).
directory and subsequent read operations.

Example using async interation:

Expand Down
12 changes: 4 additions & 8 deletions lib/internal/fs/dir.js
Original file line number Diff line number Diff line change
Expand Up @@ -48,18 +48,16 @@ class Dir {
return this[kDirPath];
}

read(options, callback) {
read(callback) {
if (this[kDirClosed] === true) {
throw new ERR_DIR_CLOSED();
}

callback = typeof options === 'function' ? options : callback;
if (callback === undefined) {
return this[kDirReadPromisified](options);
return this[kDirReadPromisified]();
} else if (typeof callback !== 'function') {
throw new ERR_INVALID_CALLBACK(callback);
}
options = getOptions(options, this[kDirOptions]);

const req = new FSReqCallback();
req.oncomplete = (err, result) => {
Expand All @@ -70,7 +68,7 @@ class Dir {
};

this[kDirHandle].read(
options.encoding,
this[kDirOptions].encoding,
req
);
}
Expand All @@ -80,11 +78,9 @@ class Dir {
throw new ERR_DIR_CLOSED();
}

options = getOptions(options, this[kDirOptions]);

const ctx = { path: this[kDirPath] };
const result = this[kDirHandle].read(
options.encoding,
this[kDirOptions].encoding,
undefined,
ctx
);
Expand Down