mirror of
https://github.com/claunia/Claunia.RsrcFork.git
synced 2025-12-16 19:24:46 +00:00
General refactor and restyling.
This commit is contained in:
@@ -31,7 +31,7 @@ using System.Text;
|
||||
|
||||
namespace Claunia.RsrcFork.CLI;
|
||||
|
||||
class MainClass
|
||||
internal class MainClass
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
@@ -39,103 +39,101 @@ class MainClass
|
||||
Console.WriteLine("© 2016 Natalia Portillo");
|
||||
Console.WriteLine();
|
||||
|
||||
if(args.Length != 2 && args.Length != 4)
|
||||
if(args.Length != 2 &&
|
||||
args.Length != 4)
|
||||
{
|
||||
Usage();
|
||||
return;
|
||||
}
|
||||
|
||||
if(args.Length == 2)
|
||||
{
|
||||
if(args[0] != "-l")
|
||||
{
|
||||
Usage();
|
||||
return;
|
||||
}
|
||||
|
||||
if(!File.Exists(args[1]))
|
||||
{
|
||||
Console.WriteLine("Specified file does not exist.");
|
||||
return;
|
||||
}
|
||||
|
||||
FileStream rsrcStream = new FileStream(args[1], FileMode.Open, FileAccess.Read);
|
||||
|
||||
ResourceFork rsrc = new ResourceFork(rsrcStream);
|
||||
|
||||
foreach(uint type in rsrc.GetTypes())
|
||||
{
|
||||
byte[] typeBytes = BitConverter.GetBytes(type);
|
||||
typeBytes = typeBytes.Reverse().ToArray();
|
||||
string typeName = Types.GetName(type);
|
||||
if(typeName != null)
|
||||
Console.WriteLine("\"{0}\" (0x{1:X8}) - {2}", Encoding.ASCII.GetString(typeBytes), type,
|
||||
typeName);
|
||||
else Console.WriteLine("\"{0}\" (0x{1:X8})", Encoding.ASCII.GetString(typeBytes), type);
|
||||
|
||||
Resource rez = rsrc.GetResource(type);
|
||||
Console.WriteLine("{0,6}{1,8}\t{2}", "ID", "Length", "Name");
|
||||
Console.WriteLine("{0,6}{1,8}--{2}", "------", "--------", "----------------");
|
||||
foreach(short id in rez.GetIds())
|
||||
if(rez.GetName(id) != null)
|
||||
Console.WriteLine("{0,6}{1,8}\t\"{2}\"", id, rez.GetLength(id), rez.GetName(id));
|
||||
else Console.WriteLine("{0,6}{1,8}", id, rez.GetLength(id));
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(args.Length == 4)
|
||||
switch(args.Length)
|
||||
{
|
||||
if(args[0] != "-x")
|
||||
{
|
||||
case 2 when args[0] != "-l":
|
||||
Usage();
|
||||
return;
|
||||
}
|
||||
|
||||
if(args[1] != "-o")
|
||||
{
|
||||
Usage();
|
||||
return;
|
||||
}
|
||||
|
||||
if(Directory.Exists(args[2]))
|
||||
{
|
||||
Console.WriteLine("Output directory exists, not proceeding");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!File.Exists(args[3]))
|
||||
{
|
||||
case 2 when !File.Exists(args[1]):
|
||||
Console.WriteLine("Specified file does not exist.");
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
FileStream rsrcStream = new FileStream(args[3], FileMode.Open, FileAccess.Read);
|
||||
FileStream outStream;
|
||||
|
||||
ResourceFork rsrc = new ResourceFork(rsrcStream);
|
||||
|
||||
foreach(uint type in rsrc.GetTypes())
|
||||
case 2:
|
||||
{
|
||||
byte[] typeBytes = BitConverter.GetBytes(type);
|
||||
typeBytes = typeBytes.Reverse().ToArray();
|
||||
var rsrcStream = new FileStream(args[1], FileMode.Open, FileAccess.Read);
|
||||
|
||||
Directory.CreateDirectory(Path.Combine(args[2], Encoding.ASCII.GetString(typeBytes)));
|
||||
var rsrc = new ResourceFork(rsrcStream);
|
||||
|
||||
Resource rez = rsrc.GetResource(type);
|
||||
foreach(short id in rez.GetIds())
|
||||
foreach(uint type in rsrc.GetTypes())
|
||||
{
|
||||
outStream =
|
||||
new
|
||||
FileStream(Path.Combine(args[2], Encoding.ASCII.GetString(typeBytes), string.Format("{0}", id)),
|
||||
FileMode.Create, FileAccess.ReadWrite);
|
||||
byte[] rez_b = rez.GetResource(id);
|
||||
outStream.Write(rez_b, 0, rez_b.Length);
|
||||
outStream.Close();
|
||||
byte[] typeBytes = BitConverter.GetBytes(type);
|
||||
typeBytes = typeBytes.Reverse().ToArray();
|
||||
string typeName = Types.GetName(type);
|
||||
|
||||
if(typeName != null)
|
||||
Console.WriteLine("\"{0}\" (0x{1:X8}) - {2}", Encoding.ASCII.GetString(typeBytes), type,
|
||||
typeName);
|
||||
else
|
||||
Console.WriteLine("\"{0}\" (0x{1:X8})", Encoding.ASCII.GetString(typeBytes), type);
|
||||
|
||||
Resource rez = rsrc.GetResource(type);
|
||||
Console.WriteLine("{0,6}{1,8}\t{2}", "ID", "Length", "Name");
|
||||
Console.WriteLine("{0,6}{1,8}--{2}", "------", "--------", "----------------");
|
||||
|
||||
foreach(short id in rez.GetIds())
|
||||
if(rez.GetName(id) != null)
|
||||
Console.WriteLine("{0,6}{1,8}\t\"{2}\"", id, rez.GetLength(id), rez.GetName(id));
|
||||
else
|
||||
Console.WriteLine("{0,6}{1,8}", id, rez.GetLength(id));
|
||||
|
||||
Console.WriteLine();
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
case 4 when args[0] != "-x":
|
||||
Usage();
|
||||
|
||||
return;
|
||||
case 4 when args[1] != "-o":
|
||||
Usage();
|
||||
|
||||
return;
|
||||
case 4 when Directory.Exists(args[2]):
|
||||
Console.WriteLine("Output directory exists, not proceeding");
|
||||
|
||||
return;
|
||||
case 4 when !File.Exists(args[3]):
|
||||
Console.WriteLine("Specified file does not exist.");
|
||||
|
||||
return;
|
||||
case 4:
|
||||
{
|
||||
var rsrcStream = new FileStream(args[3], FileMode.Open, FileAccess.Read);
|
||||
FileStream outStream;
|
||||
|
||||
var rsrc = new ResourceFork(rsrcStream);
|
||||
|
||||
foreach(uint type in rsrc.GetTypes())
|
||||
{
|
||||
byte[] typeBytes = BitConverter.GetBytes(type);
|
||||
typeBytes = typeBytes.Reverse().ToArray();
|
||||
|
||||
Directory.CreateDirectory(Path.Combine(args[2], Encoding.ASCII.GetString(typeBytes)));
|
||||
|
||||
Resource rez = rsrc.GetResource(type);
|
||||
|
||||
foreach(short id in rez.GetIds())
|
||||
{
|
||||
outStream = new FileStream(Path.Combine(args[2], Encoding.ASCII.GetString(typeBytes), $"{id}"),
|
||||
FileMode.Create, FileAccess.ReadWrite);
|
||||
|
||||
byte[] rez_b = rez.GetResource(id);
|
||||
outStream.Write(rez_b, 0, rez_b.Length);
|
||||
outStream.Close();
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user