diff options
author | jfrijters <jfrijters> | 2013-02-18 12:59:00 +0400 |
---|---|---|
committer | jfrijters <jfrijters> | 2013-02-18 12:59:00 +0400 |
commit | 223030b1a2e37a0ec53e3b4f33d7923e9ed0ea6c (patch) | |
tree | 17026b2b69e412bd963f70e6f19ea086e948707a | |
parent | 92c2bf05e0a4cf63d3637c5472baa82a2b3892f8 (diff) |
Copy zip file comment.
-rw-r--r-- | ikvmc/Compiler.cs | 7 | ||||
-rw-r--r-- | ikvmc/CompilerClassLoader.cs | 26 |
2 files changed, 22 insertions, 11 deletions
diff --git a/ikvmc/Compiler.cs b/ikvmc/Compiler.cs index 6dda2315..177217d7 100644 --- a/ikvmc/Compiler.cs +++ b/ikvmc/Compiler.cs @@ -1358,7 +1358,7 @@ sealed class IkvmcCompiler } if (jar == null) { - jar = options.GetJar(file); + jar = options.GetJar(zf); } jar.Add(ze, data); if (ze.Name == "META-INF/MANIFEST.MF") @@ -1367,6 +1367,11 @@ sealed class IkvmcCompiler } } } + // include empty zip file if it has a comment + if (!found && !string.IsNullOrEmpty(zf.ZipFileComment)) + { + options.GetJar(zf); + } return found; } finally diff --git a/ikvmc/CompilerClassLoader.cs b/ikvmc/CompilerClassLoader.cs index 051cf7fe..a69b7d3a 100644 --- a/ikvmc/CompilerClassLoader.cs +++ b/ikvmc/CompilerClassLoader.cs @@ -756,6 +756,10 @@ namespace IKVM.Internal MemoryStream mem = new MemoryStream(); using (ZipOutputStream zip = new ZipOutputStream(mem)) { + if (!string.IsNullOrEmpty(options.jars[i].Comment)) + { + zip.SetComment(options.jars[i].Comment); + } zip.SetLevel(9); List<string> stubs = new List<string>(); foreach (JarItem item in options.jars[i].Items) @@ -3337,16 +3341,18 @@ namespace IKVM.Internal sealed class Jar { internal readonly string Name; + internal readonly string Comment; internal readonly List<JarItem> Items = new List<JarItem>(); - internal Jar(string name) + internal Jar(string name, string comment) { this.Name = name; + this.Comment = comment; } internal Jar Copy() { - Jar newJar = new Jar(Name); + Jar newJar = new Jar(Name, Comment); newJar.Items.AddRange(Items); return newJar; } @@ -3470,18 +3476,18 @@ namespace IKVM.Internal return newJars; } - internal Jar GetJar(string path) + internal Jar GetJar(ZipFile zf) { int existingJar; - if (jarMap.TryGetValue(path, out existingJar)) + if (jarMap.TryGetValue(zf.Name, out existingJar)) { return jars[existingJar]; } - jarMap.Add(path, jars.Count); - return CreateJar(Path.GetFileName(path)); + jarMap.Add(zf.Name, jars.Count); + return CreateJar(Path.GetFileName(zf.Name), zf.ZipFileComment); } - private Jar CreateJar(string jarName) + private Jar CreateJar(string jarName, string comment) { int count = 0; string name = jarName; @@ -3494,7 +3500,7 @@ namespace IKVM.Internal goto retry; } } - Jar newJar = new Jar(name); + Jar newJar = new Jar(name, comment); jars.Add(newJar); return newJar; } @@ -3504,7 +3510,7 @@ namespace IKVM.Internal if (classesJar == -1) { classesJar = jars.Count; - CreateJar("classes.jar"); + CreateJar("classes.jar", null); } return jars[classesJar]; } @@ -3514,7 +3520,7 @@ namespace IKVM.Internal if (resourcesJar == -1) { resourcesJar = jars.Count; - CreateJar("resources.jar"); + CreateJar("resources.jar", null); } return jars[resourcesJar]; } |