diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2015-11-08 17:18:27 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2015-11-08 17:18:27 +0700 |
commit | d644e956bb0dd3fe0731c3050c185f27ab6d9e1f (patch) | |
tree | 2e4464b274efeb8ce3205c7a736bd65dea7b8262 /crypto/src/util | |
parent | Merge pull request #10 from peterdettman/pcl (diff) | |
parent | Merge branch 'master' of git.bouncycastle.org:bc-csharp (diff) | |
download | BouncyCastle.NET-ed25519-d644e956bb0dd3fe0731c3050c185f27ab6d9e1f.tar.xz |
Merge branch 'master' of git.bouncycastle.org:bc-csharp into pcl
Diffstat (limited to 'crypto/src/util')
-rw-r--r-- | crypto/src/util/Platform.cs | 18 | ||||
-rw-r--r-- | crypto/src/util/io/BaseInputStream.cs | 12 | ||||
-rw-r--r-- | crypto/src/util/io/BaseOutputStream.cs | 12 | ||||
-rw-r--r-- | crypto/src/util/io/FilterStream.cs | 10 | ||||
-rw-r--r-- | crypto/src/util/io/TeeInputStream.cs | 31 | ||||
-rw-r--r-- | crypto/src/util/io/TeeOutputStream.cs | 17 | ||||
-rw-r--r-- | crypto/src/util/zlib/ZDeflaterOutputStream.cs | 29 | ||||
-rw-r--r-- | crypto/src/util/zlib/ZInflaterInputStream.cs | 12 | ||||
-rw-r--r-- | crypto/src/util/zlib/ZInputStream.cs | 36 | ||||
-rw-r--r-- | crypto/src/util/zlib/ZOutputStream.cs | 64 |
10 files changed, 175 insertions, 66 deletions
diff --git a/crypto/src/util/Platform.cs b/crypto/src/util/Platform.cs index 1b5ba462e..d4b18f182 100644 --- a/crypto/src/util/Platform.cs +++ b/crypto/src/util/Platform.cs @@ -19,7 +19,7 @@ namespace Org.BouncyCastle.Utilities MemoryStream buf = new MemoryStream(); StreamWriter w = new StreamWriter(buf, Encoding.UTF8); w.WriteLine(); - w.Close(); + Dispose(w); byte[] bs = buf.ToArray(); return Encoding.UTF8.GetString(bs, 0, bs.Length); } @@ -186,5 +186,21 @@ namespace Org.BouncyCastle.Utilities } internal static readonly string NewLine = GetNewLine(); + +#if PORTABLE + internal static void Dispose(IDisposable d) + { + d.Dispose(); + } +#else + internal static void Dispose(Stream s) + { + s.Close(); + } + internal static void Dispose(TextWriter t) + { + t.Close(); + } +#endif } } diff --git a/crypto/src/util/io/BaseInputStream.cs b/crypto/src/util/io/BaseInputStream.cs index 2407bbabe..a5613d801 100644 --- a/crypto/src/util/io/BaseInputStream.cs +++ b/crypto/src/util/io/BaseInputStream.cs @@ -11,15 +11,23 @@ namespace Org.BouncyCastle.Utilities.IO public sealed override bool CanRead { get { return !closed; } } public sealed override bool CanSeek { get { return false; } } public sealed override bool CanWrite { get { return false; } } - protected override void Dispose(bool disposing) + +#if PORTABLE + protected override void Dispose(bool disposing) { if (disposing) { closed = true; } - base.Dispose(disposing); } +#else + public override void Close() + { + closed = true; + base.Close(); + } +#endif public sealed override void Flush() {} public sealed override long Length { get { throw new NotSupportedException(); } } diff --git a/crypto/src/util/io/BaseOutputStream.cs b/crypto/src/util/io/BaseOutputStream.cs index 56ce847e0..a0608d111 100644 --- a/crypto/src/util/io/BaseOutputStream.cs +++ b/crypto/src/util/io/BaseOutputStream.cs @@ -11,6 +11,8 @@ namespace Org.BouncyCastle.Utilities.IO public sealed override bool CanRead { get { return false; } } public sealed override bool CanSeek { get { return false; } } public sealed override bool CanWrite { get { return !closed; } } + +#if PORTABLE protected override void Dispose(bool disposing) { if (disposing) @@ -19,7 +21,15 @@ namespace Org.BouncyCastle.Utilities.IO } base.Dispose(disposing); } - public override void Flush() {} +#else + public override void Close() + { + closed = true; + base.Close(); + } +#endif + + public override void Flush() { } public sealed override long Length { get { throw new NotSupportedException(); } } public sealed override long Position { diff --git a/crypto/src/util/io/FilterStream.cs b/crypto/src/util/io/FilterStream.cs index 1aa1f9889..a92dee3e5 100644 --- a/crypto/src/util/io/FilterStream.cs +++ b/crypto/src/util/io/FilterStream.cs @@ -29,14 +29,22 @@ namespace Org.BouncyCastle.Utilities.IO get { return s.Position; } set { s.Position = value; } } +#if PORTABLE protected override void Dispose(bool disposing) { if (disposing) { - s.Dispose(); + Platform.Dispose(s); } base.Dispose(disposing); } +#else + public override void Close() + { + Platform.Dispose(s); + base.Close(); + } +#endif public override void Flush() { s.Flush(); diff --git a/crypto/src/util/io/TeeInputStream.cs b/crypto/src/util/io/TeeInputStream.cs index aeed3bae6..6996f3fbb 100644 --- a/crypto/src/util/io/TeeInputStream.cs +++ b/crypto/src/util/io/TeeInputStream.cs @@ -18,17 +18,26 @@ namespace Org.BouncyCastle.Utilities.IO this.tee = tee; } - protected override void Dispose(bool disposing) - { - if (disposing) - { - input.Dispose(); - tee.Dispose(); - } - base.Dispose(disposing); - } - - public override int Read(byte[] buf, int off, int len) +#if PORTABLE + protected override void Dispose(bool disposing) + { + if (disposing) + { + Platform.Dispose(input); + Platform.Dispose(tee); + } + base.Dispose(disposing); + } +#else + public override void Close() + { + Platform.Dispose(input); + Platform.Dispose(tee); + base.Close(); + } +#endif + + public override int Read(byte[] buf, int off, int len) { int i = input.Read(buf, off, len); diff --git a/crypto/src/util/io/TeeOutputStream.cs b/crypto/src/util/io/TeeOutputStream.cs index cebca89fe..a6c7fd5b5 100644 --- a/crypto/src/util/io/TeeOutputStream.cs +++ b/crypto/src/util/io/TeeOutputStream.cs @@ -18,17 +18,26 @@ namespace Org.BouncyCastle.Utilities.IO this.tee = tee; } +#if PORTABLE protected override void Dispose(bool disposing) { if (disposing) { - output.Dispose(); - tee.Dispose(); + Platform.Dispose(output); + Platform.Dispose(tee); } base.Dispose(disposing); } - - public override void Write(byte[] buffer, int offset, int count) +#else + public override void Close() + { + Platform.Dispose(output); + Platform.Dispose(tee); + base.Close(); + } +#endif + + public override void Write(byte[] buffer, int offset, int count) { output.Write(buffer, offset, count); tee.Write(buffer, offset, count); diff --git a/crypto/src/util/zlib/ZDeflaterOutputStream.cs b/crypto/src/util/zlib/ZDeflaterOutputStream.cs index 544ba8601..d0978942a 100644 --- a/crypto/src/util/zlib/ZDeflaterOutputStream.cs +++ b/crypto/src/util/zlib/ZDeflaterOutputStream.cs @@ -136,23 +136,36 @@ namespace Org.BouncyCastle.Utilities.Zlib { z=null; } +#if PORTABLE protected override void Dispose(bool disposing) { if (disposing) { - try - { - try { Finish(); } - catch (IOException) { } + try{ + try{Finish();} + catch (IOException) {} } - finally - { + finally{ End(); - outp.Dispose(); - outp = null; + Platform.Dispose(outp); + outp=null; } } base.Dispose(disposing); } +#else + public override void Close() { + try{ + try{Finish();} + catch (IOException) {} + } + finally{ + End(); + Platform.Dispose(outp); + outp=null; + } + base.Close(); + } +#endif } } diff --git a/crypto/src/util/zlib/ZInflaterInputStream.cs b/crypto/src/util/zlib/ZInflaterInputStream.cs index 9e82954b9..ef742bb00 100644 --- a/crypto/src/util/zlib/ZInflaterInputStream.cs +++ b/crypto/src/util/zlib/ZInflaterInputStream.cs @@ -114,15 +114,23 @@ namespace Org.BouncyCastle.Utilities.Zlib { public override void WriteByte(byte b) { } +#if PORTABLE protected override void Dispose(bool disposing) { if (disposing) { - inp.Dispose(); + Platform.Dispose(inp); } base.Dispose(disposing); } - +#else + public override void Close() + { + Platform.Dispose(inp); + base.Close(); + } +#endif + public override int ReadByte() { if(Read(buf1, 0, 1)<=0) return -1; diff --git a/crypto/src/util/zlib/ZInputStream.cs b/crypto/src/util/zlib/ZInputStream.cs index 671cf68b0..4b7351555 100644 --- a/crypto/src/util/zlib/ZInputStream.cs +++ b/crypto/src/util/zlib/ZInputStream.cs @@ -93,18 +93,30 @@ namespace Org.BouncyCastle.Utilities.Zlib public sealed override bool CanSeek { get { return false; } } public sealed override bool CanWrite { get { return false; } } - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (!closed) - { - closed = true; - input.Dispose(); - } - } - base.Dispose(disposing); - } +#if PORTABLE + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (closed) + return; + + closed = true; + Platform.Dispose(input); + } + base.Dispose(disposing); + } +#else + public override void Close() + { + if (closed) + return; + + closed = true; + Platform.Dispose(input); + base.Close(); + } +#endif public sealed override void Flush() {} diff --git a/crypto/src/util/zlib/ZOutputStream.cs b/crypto/src/util/zlib/ZOutputStream.cs index 2cef06397..d9f005f69 100644 --- a/crypto/src/util/zlib/ZOutputStream.cs +++ b/crypto/src/util/zlib/ZOutputStream.cs @@ -95,36 +95,52 @@ namespace Org.BouncyCastle.Utilities.Zlib public sealed override bool CanSeek { get { return false; } } public sealed override bool CanWrite { get { return !closed; } } - protected override void Dispose(bool disposing) - { - if (disposing) - { - if (this.closed) - return; +#if PORTABLE + protected override void Dispose(bool disposing) + { + if (disposing) + { + if (closed) + return; + + DoClose(); + } + base.Dispose(disposing); + } +#else + public override void Close() + { + if (closed) + return; + + DoClose(); + base.Close(); + } +#endif + private void DoClose() + { + try + { try { - try - { - Finish(); - } - catch (IOException) - { - // Ignore - } + Finish(); } - finally + catch (IOException) { - this.closed = true; - End(); - output.Dispose(); - output = null; + // Ignore } - } - base.Dispose(disposing); - } - - public virtual void End() + } + finally + { + this.closed = true; + End(); + Platform.Dispose(output); + output = null; + } + } + + public virtual void End() { if (z == null) return; |