@@ -100,7 +100,22 @@ protected TarArchive(TarOutputStream stream)
100100 /// </summary>
101101 /// <param name="inputStream">The stream to retrieve archive data from.</param>
102102 /// <returns>Returns a new <see cref="TarArchive"/> suitable for reading from.</returns>
103+ [ Obsolete ( "No Encoding for Name field is specified, any non-ASCII bytes will be discarded" ) ]
103104 public static TarArchive CreateInputTarArchive ( Stream inputStream )
105+ {
106+ return CreateInputTarArchive ( inputStream , null ) ;
107+ }
108+
109+ /// <summary>
110+ /// The InputStream based constructors create a TarArchive for the
111+ /// purposes of extracting or listing a tar archive. Thus, use
112+ /// these constructors when you wish to extract files from or list
113+ /// the contents of an existing tar archive.
114+ /// </summary>
115+ /// <param name="inputStream">The stream to retrieve archive data from.</param>
116+ /// <param name="nameEncoding">The <see cref="Encoding"/> used for the Name fields, or null for ASCII only</param>
117+ /// <returns>Returns a new <see cref="TarArchive"/> suitable for reading from.</returns>
118+ public static TarArchive CreateInputTarArchive ( Stream inputStream , Encoding nameEncoding )
104119 {
105120 if ( inputStream == null )
106121 {
@@ -116,7 +131,7 @@ public static TarArchive CreateInputTarArchive(Stream inputStream)
116131 }
117132 else
118133 {
119- result = CreateInputTarArchive ( inputStream , TarBuffer . DefaultBlockFactor ) ;
134+ result = CreateInputTarArchive ( inputStream , TarBuffer . DefaultBlockFactor , nameEncoding ) ;
120135 }
121136 return result ;
122137 }
@@ -127,7 +142,20 @@ public static TarArchive CreateInputTarArchive(Stream inputStream)
127142 /// <param name="inputStream">A stream containing the tar archive contents</param>
128143 /// <param name="blockFactor">The blocking factor to apply</param>
129144 /// <returns>Returns a <see cref="TarArchive"/> suitable for reading.</returns>
145+ [ Obsolete ( "No Encoding for Name field is specified, any non-ASCII bytes will be discarded" ) ]
130146 public static TarArchive CreateInputTarArchive ( Stream inputStream , int blockFactor )
147+ {
148+ return CreateInputTarArchive ( inputStream , blockFactor , null ) ;
149+ }
150+
151+ /// <summary>
152+ /// Create TarArchive for reading setting block factor
153+ /// </summary>
154+ /// <param name="inputStream">A stream containing the tar archive contents</param>
155+ /// <param name="blockFactor">The blocking factor to apply</param>
156+ /// <param name="nameEncoding">The <see cref="Encoding"/> used for the Name fields, or null for ASCII only</param>
157+ /// <returns>Returns a <see cref="TarArchive"/> suitable for reading.</returns>
158+ public static TarArchive CreateInputTarArchive ( Stream inputStream , int blockFactor , Encoding nameEncoding )
131159 {
132160 if ( inputStream == null )
133161 {
@@ -139,15 +167,15 @@ public static TarArchive CreateInputTarArchive(Stream inputStream, int blockFact
139167 throw new ArgumentException ( "TarInputStream not valid" ) ;
140168 }
141169
142- return new TarArchive ( new TarInputStream ( inputStream , blockFactor ) ) ;
170+ return new TarArchive ( new TarInputStream ( inputStream , blockFactor , nameEncoding ) ) ;
143171 }
144-
145172 /// <summary>
146173 /// Create a TarArchive for writing to, using the default blocking factor
147174 /// </summary>
148175 /// <param name="outputStream">The <see cref="Stream"/> to write to</param>
176+ /// <param name="nameEncoding">The <see cref="Encoding"/> used for the Name fields, or null for ASCII only</param>
149177 /// <returns>Returns a <see cref="TarArchive"/> suitable for writing.</returns>
150- public static TarArchive CreateOutputTarArchive ( Stream outputStream )
178+ public static TarArchive CreateOutputTarArchive ( Stream outputStream , Encoding nameEncoding )
151179 {
152180 if ( outputStream == null )
153181 {
@@ -163,10 +191,19 @@ public static TarArchive CreateOutputTarArchive(Stream outputStream)
163191 }
164192 else
165193 {
166- result = CreateOutputTarArchive ( outputStream , TarBuffer . DefaultBlockFactor ) ;
194+ result = CreateOutputTarArchive ( outputStream , TarBuffer . DefaultBlockFactor , nameEncoding ) ;
167195 }
168196 return result ;
169197 }
198+ /// <summary>
199+ /// Create a TarArchive for writing to, using the default blocking factor
200+ /// </summary>
201+ /// <param name="outputStream">The <see cref="Stream"/> to write to</param>
202+ /// <returns>Returns a <see cref="TarArchive"/> suitable for writing.</returns>
203+ public static TarArchive CreateOutputTarArchive ( Stream outputStream )
204+ {
205+ return CreateOutputTarArchive ( outputStream , null ) ;
206+ }
170207
171208 /// <summary>
172209 /// Create a <see cref="TarArchive">tar archive</see> for writing.
@@ -175,6 +212,17 @@ public static TarArchive CreateOutputTarArchive(Stream outputStream)
175212 /// <param name="blockFactor">The blocking factor to use for buffering.</param>
176213 /// <returns>Returns a <see cref="TarArchive"/> suitable for writing.</returns>
177214 public static TarArchive CreateOutputTarArchive ( Stream outputStream , int blockFactor )
215+ {
216+ return CreateOutputTarArchive ( outputStream , blockFactor , null ) ;
217+ }
218+ /// <summary>
219+ /// Create a <see cref="TarArchive">tar archive</see> for writing.
220+ /// </summary>
221+ /// <param name="outputStream">The stream to write to</param>
222+ /// <param name="blockFactor">The blocking factor to use for buffering.</param>
223+ /// <param name="nameEncoding">The <see cref="Encoding"/> used for the Name fields, or null for ASCII only</param>
224+ /// <returns>Returns a <see cref="TarArchive"/> suitable for writing.</returns>
225+ public static TarArchive CreateOutputTarArchive ( Stream outputStream , int blockFactor , Encoding nameEncoding )
178226 {
179227 if ( outputStream == null )
180228 {
@@ -186,7 +234,7 @@ public static TarArchive CreateOutputTarArchive(Stream outputStream, int blockFa
186234 throw new ArgumentException ( "TarOutputStream is not valid" ) ;
187235 }
188236
189- return new TarArchive ( new TarOutputStream ( outputStream , blockFactor ) ) ;
237+ return new TarArchive ( new TarOutputStream ( outputStream , blockFactor , nameEncoding ) ) ;
190238 }
191239
192240 #endregion Static factory methods
0 commit comments