@@ -1066,7 +1066,7 @@ private long TestLocalHeader(ZipEntry entry, HeaderTest tests)
10661066 bool testData = ( tests & HeaderTest . Extract ) != 0 ;
10671067
10681068 var entryAbsOffset = offsetOfFirstEntry + entry . Offset ;
1069-
1069+
10701070 baseStream_ . Seek ( entryAbsOffset , SeekOrigin . Begin ) ;
10711071 var signature = ( int ) ReadLEUint ( ) ;
10721072
@@ -3826,7 +3826,7 @@ private void MakeBytesAvailable()
38263826 /// </summary>
38273827 /// <param name="zipString">The <see cref="ZipString"/> to convert to a string.</param>
38283828 /// <returns>The textual equivalent for the input value.</returns>
3829- static public implicit operator string ( ZipString zipString )
3829+ public static implicit operator string ( ZipString zipString )
38303830 {
38313831 zipString . MakeTextAvailable ( ) ;
38323832 return zipString . comment_ ;
@@ -4463,7 +4463,7 @@ public interface IArchiveStorage
44634463 /// <summary>
44644464 /// An abstract <see cref="IArchiveStorage"/> suitable for extension by inheritance.
44654465 /// </summary>
4466- abstract public class BaseArchiveStorage : IArchiveStorage
4466+ public abstract class BaseArchiveStorage : IArchiveStorage
44674467 {
44684468 #region Constructors
44694469
@@ -4577,18 +4577,8 @@ public DiskArchiveStorage(ZipFile file)
45774577 /// <returns>Returns the temporary output stream.</returns>
45784578 public override Stream GetTemporaryOutput ( )
45794579 {
4580- if ( temporaryName_ != null )
4581- {
4582- temporaryName_ = GetTempFileName ( temporaryName_ , true ) ;
4583- temporaryStream_ = File . Open ( temporaryName_ , FileMode . OpenOrCreate , FileAccess . Write , FileShare . None ) ;
4584- }
4585- else
4586- {
4587- // Determine where to place files based on internal strategy.
4588- // Currently this is always done in system temp directory.
4589- temporaryName_ = Path . GetTempFileName ( ) ;
4590- temporaryStream_ = File . Open ( temporaryName_ , FileMode . OpenOrCreate , FileAccess . Write , FileShare . None ) ;
4591- }
4580+ temporaryName_ = PathUtils . GetTempFileName ( temporaryName_ ) ;
4581+ temporaryStream_ = File . Open ( temporaryName_ , FileMode . OpenOrCreate , FileAccess . Write ) ;
45924582
45934583 return temporaryStream_ ;
45944584 }
@@ -4601,20 +4591,19 @@ public override Stream GetTemporaryOutput()
46014591 public override Stream ConvertTemporaryToFinal ( )
46024592 {
46034593 if ( temporaryStream_ == null )
4604- {
46054594 throw new ZipException ( "No temporary stream has been created" ) ;
4606- }
46074595
4608- string moveTempName = GetTempFileName ( fileName_ , false ) ;
4596+ string moveTempName = PathUtils . GetTempFileName ( fileName_ ) ;
46094597 bool newFileCreated = false ;
46104598
4611-
46124599 Stream result ;
46134600 try
46144601 {
46154602 temporaryStream_ . Dispose ( ) ;
4603+
46164604 File . Move ( fileName_ , moveTempName ) ;
46174605 File . Move ( temporaryName_ , fileName_ ) ;
4606+
46184607 newFileCreated = true ;
46194608 File . Delete ( moveTempName ) ;
46204609
@@ -4645,12 +4634,10 @@ public override Stream MakeTemporaryCopy(Stream stream)
46454634 {
46464635 stream . Dispose ( ) ;
46474636
4648- temporaryName_ = GetTempFileName ( fileName_ , true ) ;
4637+ temporaryName_ = PathUtils . GetTempFileName ( fileName_ ) ;
46494638 File . Copy ( fileName_ , temporaryName_ , true ) ;
46504639
4651- temporaryStream_ = new FileStream ( temporaryName_ ,
4652- FileMode . Open ,
4653- FileAccess . ReadWrite ) ;
4640+ temporaryStream_ = new FileStream ( temporaryName_ , FileMode . Open , FileAccess . ReadWrite ) ;
46544641 return temporaryStream_ ;
46554642 }
46564643
@@ -4666,18 +4653,12 @@ public override Stream OpenForDirectUpdate(Stream stream)
46664653 if ( ( stream == null ) || ! stream . CanWrite )
46674654 {
46684655 if ( stream != null )
4669- {
46704656 stream . Dispose ( ) ;
4671- }
46724657
4673- result = new FileStream ( fileName_ ,
4674- FileMode . Open ,
4675- FileAccess . ReadWrite ) ;
4658+ result = new FileStream ( fileName_ , FileMode . Open , FileAccess . ReadWrite ) ;
46764659 }
46774660 else
4678- {
46794661 result = stream ;
4680- }
46814662
46824663 return result ;
46834664 }
@@ -4688,61 +4669,11 @@ public override Stream OpenForDirectUpdate(Stream stream)
46884669 public override void Dispose ( )
46894670 {
46904671 if ( temporaryStream_ != null )
4691- {
46924672 temporaryStream_ . Dispose ( ) ;
4693- }
46944673 }
46954674
46964675 #endregion IArchiveStorage Members
46974676
4698- #region Internal routines
4699-
4700- private static string GetTempFileName ( string original , bool makeTempFile )
4701- {
4702- string result = null ;
4703-
4704- if ( original == null )
4705- {
4706- result = Path . GetTempFileName ( ) ;
4707- }
4708- else
4709- {
4710- int counter = 0 ;
4711- int suffixSeed = DateTime . Now . Second ;
4712-
4713- while ( result == null )
4714- {
4715- counter += 1 ;
4716- string newName = string . Format ( "{0}.{1}{2}.tmp" , original , suffixSeed , counter ) ;
4717- if ( ! File . Exists ( newName ) )
4718- {
4719- if ( makeTempFile )
4720- {
4721- try
4722- {
4723- // Try and create the file.
4724- using ( FileStream stream = File . Create ( newName ) )
4725- {
4726- }
4727- result = newName ;
4728- }
4729- catch
4730- {
4731- suffixSeed = DateTime . Now . Second ;
4732- }
4733- }
4734- else
4735- {
4736- result = newName ;
4737- }
4738- }
4739- }
4740- }
4741- return result ;
4742- }
4743-
4744- #endregion Internal routines
4745-
47464677 #region Instance Fields
47474678
47484679 private Stream temporaryStream_ ;
0 commit comments