summary refs log tree commit diff
path: root/crypto/src/util
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2015-11-08 17:18:27 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2015-11-08 17:18:27 +0700
commitd644e956bb0dd3fe0731c3050c185f27ab6d9e1f (patch)
tree2e4464b274efeb8ce3205c7a736bd65dea7b8262 /crypto/src/util
parentMerge pull request #10 from peterdettman/pcl (diff)
parentMerge branch 'master' of git.bouncycastle.org:bc-csharp (diff)
downloadBouncyCastle.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.cs18
-rw-r--r--crypto/src/util/io/BaseInputStream.cs12
-rw-r--r--crypto/src/util/io/BaseOutputStream.cs12
-rw-r--r--crypto/src/util/io/FilterStream.cs10
-rw-r--r--crypto/src/util/io/TeeInputStream.cs31
-rw-r--r--crypto/src/util/io/TeeOutputStream.cs17
-rw-r--r--crypto/src/util/zlib/ZDeflaterOutputStream.cs29
-rw-r--r--crypto/src/util/zlib/ZInflaterInputStream.cs12
-rw-r--r--crypto/src/util/zlib/ZInputStream.cs36
-rw-r--r--crypto/src/util/zlib/ZOutputStream.cs64
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;