mirror of
https://github.com/Thealexbarney/LibHac.git
synced 2024-11-14 10:49:41 +01:00
Fixes and an ugly hack in DiscUtils
This commit is contained in:
parent
9b476fa8ce
commit
f62b34905e
5 changed files with 37 additions and 15 deletions
|
@ -435,7 +435,11 @@ namespace DiscUtils.Internal
|
|||
pattern += ".";
|
||||
}
|
||||
|
||||
string query = "^" + Regex.Escape(pattern).Replace(@"\*", ".*").Replace(@"\?", "[^.]") + "$";
|
||||
string query;
|
||||
if (pattern == "*.")
|
||||
query = ".*";
|
||||
else
|
||||
query = "^" + Regex.Escape(pattern).Replace(@"\*", ".*").Replace(@"\?", "[^.]") + "$";
|
||||
return new Regex(query, RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,11 @@ namespace LibHac.Nand
|
|||
return Fs.DirectoryExists(directory.Path);
|
||||
}
|
||||
|
||||
public override long GetSize(IFile file)
|
||||
{
|
||||
return Fs.GetFileInfo(file.Path).Length;
|
||||
}
|
||||
|
||||
public new virtual IStorage OpenFile(IFile file, FileMode mode)
|
||||
{
|
||||
return Fs.OpenFile(file.Path, mode).AsStorage();
|
||||
|
@ -49,17 +54,12 @@ namespace LibHac.Nand
|
|||
string[] dirs = Fs.GetDirectories(directory.Path, searchPattern, searchOption);
|
||||
List<IFileSytemEntry> entries = new List<IFileSytemEntry>();
|
||||
for (int i = 0; i < dirs.Length; i++)
|
||||
entries.Add(new IDirectory(this, dirs[i]));
|
||||
entries.Add(GetDirectory(dirs[i]));
|
||||
for (int i = 0; i < files.Length; i++)
|
||||
entries.Add(new IFile(this, files[i]));
|
||||
entries.Add(GetFile(files[i]));
|
||||
return entries.ToArray();
|
||||
}
|
||||
|
||||
public string GetFullPath(string path)
|
||||
{
|
||||
return path;
|
||||
}
|
||||
|
||||
protected override IDirectory GetPath(string path)
|
||||
{
|
||||
return new IDirectory(this, path);
|
||||
|
|
|
@ -11,6 +11,7 @@ namespace LibHac
|
|||
|
||||
public abstract bool FileExists(IFile path);
|
||||
public abstract bool DirectoryExists(IDirectory path);
|
||||
public abstract long GetSize(IFile file);
|
||||
|
||||
public IStorage OpenFile(IFile file, FileMode mode)
|
||||
{
|
||||
|
@ -51,6 +52,7 @@ namespace LibHac
|
|||
{
|
||||
public abstract IFileSystem FileSystem { get; }
|
||||
public abstract string Path { get; }
|
||||
public virtual string Name => System.IO.Path.GetFileName(Path);
|
||||
public abstract bool Exists { get; }
|
||||
|
||||
public IDirectory Parent
|
||||
|
@ -108,9 +110,9 @@ namespace LibHac
|
|||
public override string Path { get; }
|
||||
public override bool Exists => FileSystem.FileExists(this);
|
||||
|
||||
public string Name => System.IO.Path.GetFileNameWithoutExtension(Path);
|
||||
public string Extension => System.IO.Path.GetExtension(Path);
|
||||
public string FileName => System.IO.Path.GetFileName(Path);
|
||||
public long Length => FileSystem.GetSize(this);
|
||||
|
||||
public IFile(IFileSystem filesystem, string path)
|
||||
{
|
||||
|
@ -127,5 +129,16 @@ namespace LibHac
|
|||
{
|
||||
return FileSystem.OpenFile(this, mode, access);
|
||||
}
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
IFile other = (IFile) obj;
|
||||
return other.FileSystem == FileSystem && other.Path == Path;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return base.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,23 +27,28 @@ namespace LibHac
|
|||
return Directory.Exists(Path.Combine(Root, directory.Path));
|
||||
}
|
||||
|
||||
public override long GetSize(IFile file)
|
||||
{
|
||||
return new FileInfo(GetFullPath(file)).Length;
|
||||
}
|
||||
|
||||
public override IStorage OpenFile(IFile file, FileMode mode, FileAccess access)
|
||||
{
|
||||
return new FileStream(GetFullPath(file), mode, access).AsStorage();
|
||||
return new StreamStorage(new FileStream(GetFullPath(file), mode, access), false);
|
||||
}
|
||||
|
||||
public override IFileSytemEntry[] GetFileSystemEntries(IDirectory path, string searchPattern, SearchOption searchOption)
|
||||
{
|
||||
var result = new List<IFileSytemEntry>();
|
||||
|
||||
Console.WriteLine(searchPattern);
|
||||
DirectoryInfo root = new DirectoryInfo(GetFullPath(path));
|
||||
foreach(FileSystemInfo info in root.EnumerateFileSystemInfos(searchPattern, searchOption))
|
||||
{
|
||||
string relativePath = Util.GetRelativePath(info.FullName, Root);
|
||||
if (info.Attributes.HasFlag(FileAttributes.Directory))
|
||||
result.Add(new IDirectory(this, relativePath));
|
||||
result.Add(GetDirectory(relativePath));
|
||||
else
|
||||
result.Add(new LocalFile(this, relativePath));
|
||||
result.Add(GetFile(relativePath));
|
||||
}
|
||||
|
||||
return result.ToArray();
|
||||
|
|
|
@ -545,7 +545,6 @@ namespace LibHac
|
|||
new KeyValue("bis_kek_source", 0x10, set => set.BisKekSource),
|
||||
new KeyValue("save_mac_kek_source", 0x10, set => set.SaveMacKekSource),
|
||||
new KeyValue("save_mac_key_source", 0x10, set => set.SaveMacKeySource),
|
||||
new KeyValue("save_mac_key", 0x10, set => set.SaveMacKey)
|
||||
};
|
||||
|
||||
for (int slot = 0; slot < 0x20; slot++)
|
||||
|
@ -585,7 +584,8 @@ namespace LibHac
|
|||
new KeyValue("secure_boot_key", 0x10, set => set.SecureBootKey),
|
||||
new KeyValue("tsec_key", 0x10, set => set.TsecKey),
|
||||
new KeyValue("device_key", 0x10, set => set.DeviceKey),
|
||||
new KeyValue("sd_seed", 0x10, set => set.SdSeed)
|
||||
new KeyValue("sd_seed", 0x10, set => set.SdSeed),
|
||||
new KeyValue("save_mac_key", 0x10, set => set.SaveMacKey)
|
||||
};
|
||||
|
||||
for (int slot = 0; slot < 0x20; slot++)
|
||||
|
|
Loading…
Reference in a new issue