* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / Mono.PEToolkit / Image.cs
index 11b523187353146970dcd1b8d8950ba1ceee772b..f909b2b6b7bf44c263ede779f15937eef9647415 100644 (file)
@@ -1,3 +1,24 @@
+\r
+//\r
+// Permission is hereby granted, free of charge, to any person obtaining\r
+// a copy of this software and associated documentation files (the\r
+// "Software"), to deal in the Software without restriction, including\r
+// without limitation the rights to use, copy, modify, merge, publish,\r
+// distribute, sublicense, and/or sell copies of the Software, and to\r
+// permit persons to whom the Software is furnished to do so, subject to\r
+// the following conditions:\r
+// \r
+// The above copyright notice and this permission notice shall be\r
+// included in all copies or substantial portions of the Software.\r
+// \r
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
+//\r
 /*\r
  * Copyright (c) 2002 Sergey Chaban <serge@wildwestsoftware.com>\r
  */\r
@@ -131,11 +152,10 @@ namespace Mono.PEToolkit {
                                \r
                                reader.BaseStream.Position = RVAToVA(peHdr.CLIHdrDir.virtAddr);\r
                                corHdr.Read (reader);\r
-                               \r
+\r
                                mdRoot = new MetaDataRoot(this);\r
                                reader.BaseStream.Position = RVAToVA(corHdr.MetaData.virtAddr);\r
                                mdRoot.Read(reader);\r
-                               \r
                        }\r
                        \r
                }\r
@@ -150,21 +170,18 @@ namespace Mono.PEToolkit {
                        coffHdr.Write (writer);\r
                        peHdr.Write (writer);\r
                \r
-                       /*\r
-                       int pos = reader.BaseStream.Position;\r
-                       ReadSections();\r
+                       WriteSections (writer);\r
                        \r
                        if (this.IsCLI) {\r
                                \r
-                               reader.BaseStream.Position = RVAToVA(peHdr.CLIHdrDir.virtAddr);\r
-                               corHdr.Read (reader);\r
-                               \r
-                               mdRoot = new MetaDataRoot(this);\r
-                               reader.BaseStream.Position = RVAToVA(corHdr.MetaData.virtAddr);\r
-                               mdRoot.Read(reader);\r
+                               writer.BaseStream.Position = RVAToVA (peHdr.CLIHdrDir.virtAddr);\r
+                               corHdr.Write (writer);\r
+\r
+                               long pos = RVAToVA (corHdr.MetaData.virtAddr);\r
+                               writer.BaseStream.Position = pos;\r
+                               mdRoot.Write (writer);\r
                                \r
                        }\r
-                       */\r
                        \r
                }\r
 \r
@@ -185,6 +202,13 @@ namespace Mono.PEToolkit {
                        }\r
                }\r
 \r
+               protected void WriteSections (BinaryWriter writer)\r
+               {\r
+                       foreach (Section section in sections.Values) {\r
+                               section.Write (writer);\r
+                       }\r
+               }\r
+\r
 \r
                /// <summary>\r
                /// </summary>\r