Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/ikvm-fork.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjfrijters <jfrijters>2013-02-18 12:59:00 +0400
committerjfrijters <jfrijters>2013-02-18 12:59:00 +0400
commit223030b1a2e37a0ec53e3b4f33d7923e9ed0ea6c (patch)
tree17026b2b69e412bd963f70e6f19ea086e948707a
parent92c2bf05e0a4cf63d3637c5472baa82a2b3892f8 (diff)
Copy zip file comment.
-rw-r--r--ikvmc/Compiler.cs7
-rw-r--r--ikvmc/CompilerClassLoader.cs26
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];
}