Merge pull request #34514 from neikeq/remove-dep-on-mono-posix
Mono/C#: Remove GodotTools dependency on the Mono.Posix assembly
This commit is contained in:
commit
a10449bbbc
3 changed files with 18 additions and 6 deletions
|
@ -34,7 +34,6 @@
|
|||
<HintPath>..\packages\JetBrains.Annotations.2019.1.3\lib\net20\JetBrains.Annotations.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="Mono.Posix" />
|
||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed">
|
||||
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
|
@ -100,8 +99,5 @@
|
|||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Ides\Rider\.editorconfig" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -5,7 +5,6 @@ using System.Diagnostics.CodeAnalysis;
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.CompilerServices;
|
||||
using Mono.Unix.Native;
|
||||
|
||||
namespace GodotTools.Utils
|
||||
{
|
||||
|
@ -15,6 +14,9 @@ namespace GodotTools.Utils
|
|||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
static extern string GetPlatformName();
|
||||
|
||||
[MethodImpl(MethodImplOptions.InternalCall)]
|
||||
static extern bool UnixFileHasExecutableAccess(string filePath);
|
||||
|
||||
public static class Names
|
||||
{
|
||||
public const string Windows = "Windows";
|
||||
|
@ -131,7 +133,7 @@ namespace GodotTools.Utils
|
|||
searchDirs.Add(System.IO.Directory.GetCurrentDirectory()); // last in the list
|
||||
|
||||
return searchDirs.Select(dir => Path.Combine(dir, name))
|
||||
.FirstOrDefault(path => File.Exists(path) && Syscall.access(path, AccessModes.X_OK) == 0);
|
||||
.FirstOrDefault(path => File.Exists(path) && UnixFileHasExecutableAccess(path));
|
||||
}
|
||||
|
||||
public static void RunProcess(string command, IEnumerable<string> arguments)
|
||||
|
|
|
@ -30,6 +30,10 @@
|
|||
|
||||
#include "editor_internal_calls.h"
|
||||
|
||||
#ifdef UNIX_ENABLED
|
||||
#include <unistd.h> // access
|
||||
#endif
|
||||
|
||||
#include "core/os/os.h"
|
||||
#include "core/version.h"
|
||||
#include "editor/editor_node.h"
|
||||
|
@ -370,6 +374,15 @@ MonoString *godot_icall_Utils_OS_GetPlatformName() {
|
|||
return GDMonoMarshal::mono_string_from_godot(os_name);
|
||||
}
|
||||
|
||||
MonoBoolean godot_icall_Utils_OS_UnixFileHasExecutableAccess(MonoString *p_file_path) {
|
||||
#ifdef UNIX_ENABLED
|
||||
String file_path = GDMonoMarshal::mono_string_to_godot(p_file_path);
|
||||
return access(file_path.utf8().get_data(), X_OK) == 0;
|
||||
#else
|
||||
ERR_FAIL_V(false);
|
||||
#endif
|
||||
}
|
||||
|
||||
void register_editor_internal_calls() {
|
||||
|
||||
// GodotSharpDirs
|
||||
|
@ -442,4 +455,5 @@ void register_editor_internal_calls() {
|
|||
|
||||
// Utils.OS
|
||||
mono_add_internal_call("GodotTools.Utils.OS::GetPlatformName", (void *)godot_icall_Utils_OS_GetPlatformName);
|
||||
mono_add_internal_call("GodotTools.Utils.OS::UnixFileHasExecutableAccess", (void *)godot_icall_Utils_OS_UnixFileHasExecutableAccess);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue