Skip to content

Commit

Permalink
Fixed Windows 7 detection of named pipes. Fixes #215
Browse files Browse the repository at this point in the history
  • Loading branch information
gerardog committed Nov 30, 2022
1 parent 455084d commit d2ad119
Showing 1 changed file with 18 additions and 16 deletions.
34 changes: 18 additions & 16 deletions src/gsudo/Rpc/NamedPipeUtils.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
using System;
using System.Collections.Generic;
using System.IO;

using System.Linq;

namespace gsudo.Rpc
{
static class NamedPipeUtils
Expand Down Expand Up @@ -31,24 +32,25 @@ public static List<string> ListNamedPipes()

public static bool ExistsNamedPipe(string name)
{
var namedPipes = new List<string>();
Native.FileApi.WIN32_FIND_DATA lpFindFileData;

var ptr = Native.FileApi.FindFirstFile($@"\\.\pipe\{GetRootFolder(name)}*", out lpFindFileData);
do
{
if (lpFindFileData.cFileName.EndsWith(name, StringComparison.Ordinal))
{
Native.FileApi.FindClose(ptr);
Logger.Instance.Log($"Found Named Pipe \"{name}\".", LogLevel.Debug);
return true;
}
//Logger.Instance.Log($"Searching for {name}", LogLevel.Debug);
try
{
return System.IO.Directory.GetFiles("\\\\.\\\\pipe\\", name).Any();
}
catch
{
// Windows 7 workaround
foreach (var pipe in System.IO.Directory.GetFiles("\\\\.\\\\pipe\\"))
{
if (pipe.EndsWith(name, StringComparison.Ordinal))
{
//Logger.Instance.Log($"Found Named Pipe {name}", LogLevel.Debug);
return true;
}
}
}
while (Native.FileApi.FindNextFile(ptr, out lpFindFileData));

Native.FileApi.FindClose(ptr);
return false;

}

static string GetRootFolder(string path)
Expand Down

0 comments on commit d2ad119

Please sign in to comment.