|
|
@ -1,5 +1,6 @@
|
|
|
|
using System;
|
|
|
|
using System;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
using System.IO;
|
|
|
|
using System.IO;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Linq;
|
|
|
|
using System.Text;
|
|
|
|
using System.Text;
|
|
|
@ -24,12 +25,14 @@ namespace Emby.Server.Implementations.IO
|
|
|
|
private string _tempPath;
|
|
|
|
private string _tempPath;
|
|
|
|
|
|
|
|
|
|
|
|
private SharpCifsFileSystem _sharpCifsFileSystem;
|
|
|
|
private SharpCifsFileSystem _sharpCifsFileSystem;
|
|
|
|
|
|
|
|
private IEnvironmentInfo _environmentInfo;
|
|
|
|
|
|
|
|
|
|
|
|
public ManagedFileSystem(ILogger logger, IEnvironmentInfo environmentInfo, string tempPath)
|
|
|
|
public ManagedFileSystem(ILogger logger, IEnvironmentInfo environmentInfo, string tempPath)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Logger = logger;
|
|
|
|
Logger = logger;
|
|
|
|
_supportsAsyncFileStreams = true;
|
|
|
|
_supportsAsyncFileStreams = true;
|
|
|
|
_tempPath = tempPath;
|
|
|
|
_tempPath = tempPath;
|
|
|
|
|
|
|
|
_environmentInfo = environmentInfo;
|
|
|
|
|
|
|
|
|
|
|
|
// On Linux, this needs to be true or symbolic links are ignored
|
|
|
|
// On Linux, this needs to be true or symbolic links are ignored
|
|
|
|
EnableFileSystemRequestConcat = environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows &&
|
|
|
|
EnableFileSystemRequestConcat = environmentInfo.OperatingSystem != MediaBrowser.Model.System.OperatingSystem.Windows &&
|
|
|
@ -1051,7 +1054,25 @@ namespace Emby.Server.Implementations.IO
|
|
|
|
|
|
|
|
|
|
|
|
public virtual void SetExecutable(string path)
|
|
|
|
public virtual void SetExecutable(string path)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
if (_environmentInfo.OperatingSystem == MediaBrowser.Model.System.OperatingSystem.OSX)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
RunProcess("chmod", "+x \"" + path + "\"", GetDirectoryName(path));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void RunProcess(string path, string args, string workingDirectory)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
using (var process = Process.Start(new ProcessStartInfo
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
Arguments = args,
|
|
|
|
|
|
|
|
FileName = path,
|
|
|
|
|
|
|
|
CreateNoWindow = true,
|
|
|
|
|
|
|
|
WorkingDirectory = workingDirectory,
|
|
|
|
|
|
|
|
WindowStyle = ProcessWindowStyle.Normal
|
|
|
|
|
|
|
|
}))
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
process.WaitForExit();
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|