aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-11-09 12:24:57 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-11-09 12:24:57 -0500
commit48a5fa17b034947669d7ce0e81cbe599f628acf9 (patch)
tree12aa6b0ef59ab7086f938026b86cc2bac1c88676
parent24532f3e2d7de2542b664383c5e0bc0cce61d7fc (diff)
update file saving
-rw-r--r--Emby.Common.Implementations/IO/ManagedFileSystem.cs33
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs14
-rw-r--r--MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs5
-rw-r--r--MediaBrowser.Model/IO/IFileSystem.cs1
-rw-r--r--MediaBrowser.Providers/Manager/ImageSaver.cs4
-rw-r--r--MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs4
6 files changed, 47 insertions, 14 deletions
diff --git a/Emby.Common.Implementations/IO/ManagedFileSystem.cs b/Emby.Common.Implementations/IO/ManagedFileSystem.cs
index 5b965efdc..37b457598 100644
--- a/Emby.Common.Implementations/IO/ManagedFileSystem.cs
+++ b/Emby.Common.Implementations/IO/ManagedFileSystem.cs
@@ -419,6 +419,25 @@ namespace Emby.Common.Implementations.IO
}
}
+ public void SetReadOnly(string path, bool isReadOnly)
+ {
+ var info = GetFileInfo(path);
+
+ if (info.Exists && info.IsReadOnly != isReadOnly)
+ {
+ if (isReadOnly)
+ {
+ File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.ReadOnly);
+ }
+ else
+ {
+ FileAttributes attributes = File.GetAttributes(path);
+ attributes = RemoveAttribute(attributes, FileAttributes.ReadOnly);
+ File.SetAttributes(path, attributes);
+ }
+ }
+ }
+
private static FileAttributes RemoveAttribute(FileAttributes attributes, FileAttributes attributesToRemove)
{
return attributes & ~attributesToRemove;
@@ -564,6 +583,20 @@ namespace Emby.Common.Implementations.IO
public void DeleteFile(string path)
{
+ var fileInfo = GetFileInfo(path);
+
+ if (fileInfo.Exists)
+ {
+ if (fileInfo.IsHidden)
+ {
+ SetHidden(path, false);
+ }
+ if (fileInfo.IsReadOnly)
+ {
+ SetReadOnly(path, false);
+ }
+ }
+
File.Delete(path);
}
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 433fdbe16..b079da97c 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -1892,19 +1892,7 @@ namespace MediaBrowser.Controller.Entities
if (info.IsLocalFile)
{
- // Delete the source file
- var currentFile = FileSystem.GetFileInfo(info.Path);
-
- // Deletion will fail if the file is hidden so remove the attribute first
- if (currentFile.Exists)
- {
- if (currentFile.IsHidden)
- {
- FileSystem.SetHidden(currentFile.FullName, false);
- }
-
- FileSystem.DeleteFile(currentFile.FullName);
- }
+ FileSystem.DeleteFile(info.Path);
}
return UpdateToRepository(ItemUpdateType.ImageUpdate, CancellationToken.None);
diff --git a/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs b/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs
index c489b5728..02c34320b 100644
--- a/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs
+++ b/MediaBrowser.LocalMetadata/Savers/BaseXmlSaver.cs
@@ -226,9 +226,12 @@ namespace MediaBrowser.LocalMetadata.Savers
if (file.IsHidden)
{
FileSystem.SetHidden(path, false);
-
wasHidden = true;
}
+ if (file.IsReadOnly)
+ {
+ FileSystem.SetReadOnly(path, false);
+ }
}
using (var filestream = FileSystem.GetFileStream(path, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))
diff --git a/MediaBrowser.Model/IO/IFileSystem.cs b/MediaBrowser.Model/IO/IFileSystem.cs
index ca537752a..d2bb35520 100644
--- a/MediaBrowser.Model/IO/IFileSystem.cs
+++ b/MediaBrowser.Model/IO/IFileSystem.cs
@@ -305,6 +305,7 @@ namespace MediaBrowser.Model.IO
IEnumerable<string> GetFileSystemEntryPaths(string path, bool recursive = false);
void SetHidden(string path, bool isHidden);
+ void SetReadOnly(string path, bool isHidden);
char DirectorySeparatorChar { get; }
diff --git a/MediaBrowser.Providers/Manager/ImageSaver.cs b/MediaBrowser.Providers/Manager/ImageSaver.cs
index 59d67740d..b59875378 100644
--- a/MediaBrowser.Providers/Manager/ImageSaver.cs
+++ b/MediaBrowser.Providers/Manager/ImageSaver.cs
@@ -265,6 +265,10 @@ namespace MediaBrowser.Providers.Manager
{
_fileSystem.SetHidden(file.FullName, false);
}
+ if (file.IsReadOnly)
+ {
+ _fileSystem.SetReadOnly(path, false);
+ }
}
using (var fs = _fileSystem.GetFileStream(path, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read, true))
diff --git a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
index 168827025..84dd095cd 100644
--- a/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
+++ b/MediaBrowser.XbmcMetadata/Savers/BaseNfoSaver.cs
@@ -221,6 +221,10 @@ namespace MediaBrowser.XbmcMetadata.Savers
wasHidden = true;
}
+ if (file.IsReadOnly)
+ {
+ FileSystem.SetReadOnly(path, false);
+ }
}
using (var filestream = FileSystem.GetFileStream(path, FileOpenMode.Create, FileAccessMode.Write, FileShareMode.Read))