| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1887,8 +1887,29 @@ static void ReadDir(const FunctionCallbackInfo<Value>& args) { | |||
| 1887 | 1887 | ||
| 1888 | 1888 | BufferValue path(isolate, args[0]); | |
| 1889 | 1889 | CHECK_NOT_NULL(*path); | |
| 1890 | + #ifdef _WIN32 | ||
| 1891 | + // On Windows, some API functions accept paths with trailing slashes, | ||
| 1892 | + // while others do not. This code checks if the input path ends with | ||
| 1893 | + // a slash (either '/' or '\\') and, if so, ensures that the processed | ||
| 1894 | + // path also ends with a trailing backslash ('\\'). | ||
| 1895 | + bool slashCheck = false; | ||
| 1896 | + if (path.ToStringView().ends_with("/") || | ||
| 1897 | + path.ToStringView().ends_with("\\")) { | ||
| 1898 | + slashCheck = true; | ||
| 1899 | + } | ||
| 1900 | + #endif | ||
| 1901 | + | ||
| 1890 | 1902 | ToNamespacedPath(env, &path); | |
| 1891 | 1903 | ||
| 1904 | + #ifdef _WIN32 | ||
| 1905 | + if (slashCheck) { | ||
| 1906 | + size_t new_length = path.length() + 1; | ||
| 1907 | + path.AllocateSufficientStorage(new_length + 1); | ||
| 1908 | + path.SetLengthAndZeroTerminate(new_length); | ||
| 1909 | + path.out()[new_length - 1] = '\\'; | ||
| 1910 | + } | ||
| 1911 | + #endif | ||
| 1912 | + | ||
| 1892 | 1913 | const enum encoding encoding = ParseEncoding(isolate, args[1], UTF8); | |
| 1893 | 1914 | ||
| 1894 | 1915 | bool with_types = args[2]->IsTrue(); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,21 @@ | |||
| 1 | + 'use strict'; | ||
| 2 | + | ||
| 3 | + const common = require('../common'); | ||
| 4 | + const assert = require('assert'); | ||
| 5 | + const { readdir, readdirSync } = require('fs'); | ||
| 6 | + | ||
| 7 | + if (!common.isWindows) { | ||
| 8 | + common.skip('This test is specific to Windows to test enumerate pipes'); | ||
| 9 | + } | ||
| 10 | + | ||
| 11 | + // Ref: https://github.com/nodejs/node/issues/56002 | ||
| 12 | + // This test is specific to Windows. | ||
| 13 | + | ||
| 14 | + const pipe = '\\\\.\\pipe\\'; | ||
| 15 | + | ||
| 16 | + const { length } = readdirSync(pipe); | ||
| 17 | + assert.ok(length >= 0, `${length} is not greater or equal to 0`); | ||
| 18 | + | ||
| 19 | + readdir(pipe, common.mustSucceed((files) => { | ||
| 20 | + assert.ok(files.length >= 0, `${files.length} is not greater or equal to 0`); | ||
| 21 | + })); | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments