diff options
Diffstat (limited to 'MediaBrowser.Server.Mono')
| -rw-r--r-- | MediaBrowser.Server.Mono/IO/FileSystemFactory.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj | 2 | ||||
| -rw-r--r-- | MediaBrowser.Server.Mono/Program.cs | 33 |
3 files changed, 56 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Mono/IO/FileSystemFactory.cs b/MediaBrowser.Server.Mono/IO/FileSystemFactory.cs new file mode 100644 index 000000000..4a424a282 --- /dev/null +++ b/MediaBrowser.Server.Mono/IO/FileSystemFactory.cs @@ -0,0 +1,21 @@ +using MediaBrowser.Common.IO; +using MediaBrowser.Model.Logging; +using MediaBrowser.Common.Implementations.IO; + +namespace MediaBrowser.ServerApplication.IO +{ + /// <summary> + /// Class FileSystemFactory + /// </summary> + public static class FileSystemFactory + { + /// <summary> + /// Creates the file system manager. + /// </summary> + /// <returns>IFileSystem.</returns> + public static IFileSystem CreateFileSystemManager(ILogManager logManager) + { + return new CommonFileSystem(logManager.GetLogger("FileSystem"), false); + } + } +} diff --git a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj index 2c99f3370..900169c70 100644 --- a/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj +++ b/MediaBrowser.Server.Mono/MediaBrowser.Server.Mono.csproj @@ -88,6 +88,7 @@ <Link>FFMpeg\FFMpegDownloader.cs</Link> </Compile> <Compile Include="FFMpeg\FFMpegDownloadInfo.cs" /> + <Compile Include="IO\FileSystemFactory.cs" /> </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <ItemGroup> @@ -129,6 +130,7 @@ <Folder Include="Native\" /> <Folder Include="FFMpeg\" /> <Folder Include="Networking\" /> + <Folder Include="IO\" /> </ItemGroup> <ItemGroup> <None Include="app.config" /> diff --git a/MediaBrowser.Server.Mono/Program.cs b/MediaBrowser.Server.Mono/Program.cs index 6d3cbcf26..057a2456f 100644 --- a/MediaBrowser.Server.Mono/Program.cs +++ b/MediaBrowser.Server.Mono/Program.cs @@ -17,6 +17,7 @@ using System.Security.Cryptography.X509Certificates; using Gtk; using Gdk; using System.Threading.Tasks; +using System.Reflection; namespace MediaBrowser.Server.Mono { @@ -203,6 +204,8 @@ namespace MediaBrowser.Server.Mono logger.Info("Server: {0}", Environment.MachineName); logger.Info("Operating system: {0}", Environment.OSVersion.ToString()); + + MonoBug11817WorkAround.Apply (); } /// <summary> @@ -280,4 +283,34 @@ namespace MediaBrowser.Server.Mono return true; } } + + public class MonoBug11817WorkAround + { + public static void Apply() + { + var property = typeof(TimeZoneInfo).GetProperty("TimeZoneDirectory", BindingFlags.Static | BindingFlags.NonPublic); + + if (property == null) return; + + var zoneInfo = FindZoneInfoFolder(); + property.SetValue(null, zoneInfo, new object[0]); + } + + public static string FindZoneInfoFolder() + { + var current = new DirectoryInfo(Directory.GetCurrentDirectory()); + + while(current != null) + { + var zoneinfoTestPath = Path.Combine(current.FullName, "zoneinfo"); + + if (Directory.Exists(zoneinfoTestPath)) + return zoneinfoTestPath; + + current = current.Parent; + } + + return null; + } + } } |
