| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1986,8 +1986,29 @@ static void ReadDir(const FunctionCallbackInfo<Value>& args) { | |||
| 1986 | 1986 | ||
| 1987 | 1987 | BufferValue path(isolate, args[0]); | |
| 1988 | 1988 | CHECK_NOT_NULL(*path); | |
| 1989 | + #ifdef _WIN32 | ||
| 1990 | + // On Windows, some API functions accept paths with trailing slashes, | ||
| 1991 | + // while others do not. This code checks if the input path ends with | ||
| 1992 | + // a slash (either '/' or '\\') and, if so, ensures that the processed | ||
| 1993 | + // path also ends with a trailing backslash ('\\'). | ||
| 1994 | + bool slashCheck = false; | ||
| 1995 | + if (path.ToStringView().ends_with("/") || | ||
| 1996 | + path.ToStringView().ends_with("\\")) { | ||
| 1997 | + slashCheck = true; | ||
| 1998 | + } | ||
| 1999 | + #endif | ||
| 2000 | + | ||
| 1989 | 2001 | ToNamespacedPath(env, &path); | |
| 1990 | 2002 | ||
| 2003 | + #ifdef _WIN32 | ||
| 2004 | + if (slashCheck) { | ||
| 2005 | + size_t new_length = path.length() + 1; | ||
| 2006 | + path.AllocateSufficientStorage(new_length + 1); | ||
| 2007 | + path.SetLengthAndZeroTerminate(new_length); | ||
| 2008 | + path.out()[new_length - 1] = '\\'; | ||
| 2009 | + } | ||
| 2010 | + #endif | ||
| 2011 | + | ||
| 1991 | 2012 | const enum encoding encoding = ParseEncoding(isolate, args[1], UTF8); | |
| 1992 | 2013 | ||
| 1993 | 2014 | 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