Refactored a bit, added comments on the file systems.

This commit is contained in:
cake
2025-10-30 03:05:53 +01:00
parent 7c4d0fd5e9
commit b3cc41382f
2 changed files with 49 additions and 56 deletions

View File

@@ -8,15 +8,15 @@ namespace LightlessSync.Utils
public enum FilesystemType
{
Unknown = 0,
NTFS, // Compressable
Btrfs, // Compressable
Ext4,
Xfs,
Apfs,
HfsPlus,
Fat,
Exfat,
Zfs // Compressable
NTFS, // Compressable on file level
Btrfs, // Compressable on file level
Ext4, // Uncompressable
Xfs, // Uncompressable
Apfs, // Compressable on OS
HfsPlus, // Compressable on OS
Fat, // Uncompressable
Exfat, // Uncompressable
Zfs // Compressable, not on file level
}
private const string _mountPath = "/proc/mounts";
@@ -105,6 +105,40 @@ namespace LightlessSync.Utils
}
}
public static string GetMountOptionsForPath(string path)
{
try
{
var fullPath = Path.GetFullPath(path);
var mounts = File.ReadAllLines("/proc/mounts");
string bestMount = string.Empty;
string mountOptions = string.Empty;
foreach (var line in mounts)
{
var parts = line.Split(' ');
if (parts.Length < 4) continue;
var mountPoint = parts[1].Replace("\\040", " ", StringComparison.Ordinal);
string normalized;
try { normalized = Path.GetFullPath(mountPoint); }
catch { normalized = mountPoint; }
if (fullPath.StartsWith(normalized, StringComparison.Ordinal) &&
normalized.Length > bestMount.Length)
{
bestMount = normalized;
mountOptions = parts[3];
}
}
return mountOptions;
}
catch (Exception ex)
{
return string.Empty;
}
}
private static FilesystemType GetLinuxFilesystemType(string filePath)
{
try