Skip to content

Commit b187887

Browse files
committed
Update DeterministicPackage.cs
1 parent 211733c commit b187887

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

src/DeterministicIoPackaging/DeterministicPackage.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,15 @@ public static async Task ConvertAsync(Stream source, Stream target, Cancel token
4646

4747
static Archive CreateArchive(Stream target) => new(target, ZipArchiveMode.Create, leaveOpen: true);
4848

49-
static Archive ReadArchive(Stream source) => new(source, ZipArchiveMode.Read, leaveOpen: false);
49+
static Archive ReadArchive(Stream source)
50+
{
51+
if (source is MemoryStream memoryStream)
52+
{
53+
memoryStream.Position = 0;
54+
}
55+
56+
return new(source, ZipArchiveMode.Read, leaveOpen: true);
57+
}
5058

5159
static void DuplicateEntry(Entry sourceEntry, Archive targetArchive)
5260
{
@@ -58,7 +66,7 @@ static void DuplicateEntry(Entry sourceEntry, Archive targetArchive)
5866
using var sourceStream = sourceEntry.Open();
5967
var targetEntry = CreateEntry(sourceEntry, targetArchive);
6068
using var targetStream = targetEntry.Open();
61-
if (IsRels(sourceEntry))
69+
if (IsRelationships(sourceEntry))
6270
{
6371
var xml = PatchRelationships(sourceStream);
6472
xml.Save(targetStream, SaveOptions.None);
@@ -79,7 +87,7 @@ static async Task DuplicateEntryAsync(Entry sourceEntry, Archive targetArchive,
7987
using var sourceStream = await sourceEntry.OpenAsync(cancel);
8088
var targetEntry = CreateEntry(sourceEntry, targetArchive);
8189
using var targetStream = await targetEntry.OpenAsync(cancel);
82-
if (IsRels(sourceEntry))
90+
if (IsRelationships(sourceEntry))
8391
{
8492
var xml = PatchRelationships(sourceStream);
8593

@@ -91,11 +99,12 @@ static async Task DuplicateEntryAsync(Entry sourceEntry, Archive targetArchive,
9199
}
92100
}
93101

102+
static XName relationshipName = XName.Get("Relationship", "http://schemas.openxmlformats.org/package/2006/relationships");
103+
94104
static XDocument PatchRelationships(Stream sourceStream)
95105
{
96106
var xml = XDocument.Load(sourceStream);
97-
var name = XName.Get("Relationship", "http://schemas.openxmlformats.org/package/2006/relationships");
98-
var relationships = xml.Descendants(name).ToList();
107+
var relationships = xml.Descendants(relationshipName).ToList();
99108

100109
for (var index = 0; index < relationships.Count; index++)
101110
{
@@ -127,6 +136,6 @@ static bool IsPsmdcp(Entry entry) =>
127136
entry.FullName.StartsWith("package/services/metadata/core-properties/") &&
128137
entry.Name.EndsWith("psmdcp");
129138

130-
static bool IsRels(Entry _) =>
139+
static bool IsRelationships(Entry _) =>
131140
_.FullName == "_rels/.rels";
132141
}

0 commit comments

Comments
 (0)