5
public static class DmgIsoExtract
7
public static int Main(string [] args)
9
string dmg_file = null;
10
string iso_file = null;
11
string plist_file = null;
12
bool list_partitions = false;
19
for(int i = 0; i < args.Length; i++) {
21
case "--list-partitions":
22
list_partitions = true;
25
plist_file = args[++i];
31
if(dmg_file == null) {
33
} else if(iso_file == null) {
36
Console.Error.WriteLine("Invalid argument: `{0}'", args[0]);
43
if(!File.Exists(dmg_file)) {
44
Console.Error.WriteLine("DMG file `{0}' does not exist", dmg_file);
48
FileStream dmg_stream = new FileStream(dmg_file, FileMode.Open);
49
Image image = new Image(dmg_stream);
52
foreach(Partition partition in image) {
53
Console.WriteLine("ID = {0}, Name = {1}, Attributes = 0x{2:x2}",
54
partition.ID, partition.Name, partition.AttributesNumeric);
58
if(plist_file != null) {
59
image.SavePartitionsXml(new FileStream(plist_file, FileMode.Create));
62
if(iso_file != null) {
63
image.Extract(new FileStream(iso_file, FileMode.Create));
69
private static void ShowHelp()
71
Console.Error.WriteLine("Usage: dmg-iso-extract <dmg-file> [<iso-file>] [--list-partitions]");
72
Console.Error.WriteLine(" [--dump-plist <plist-file>]\n");
73
Console.Error.WriteLine(" <dmg-file> DMG input file to read (required)");
74
Console.Error.WriteLine(" <iso-file> HFS+ ISO file to output (optional)");
75
Console.Error.WriteLine(" --list-partitions Show the partitions in the DMG image");
76
Console.Error.WriteLine(" --dump-plist <plist-file> Dump the raw plist XML to file\n");
77
Console.Error.WriteLine(" --help Show this help\n");