ZipArchive.st
changeset 2010 268f51b7c9c7
parent 2009 931dbfe551ab
child 2012 8d9bcd9260cd
--- a/ZipArchive.st	Fri Jun 06 12:42:29 2008 +0200
+++ b/ZipArchive.st	Mon Jun 09 20:33:45 2008 +0200
@@ -3869,18 +3869,24 @@
 !
 
 restoreOsDirectory:osDirectoryName fromArchiveDirectory: archiveDirectoryName
-    |osDirectory fileNameOrDirectoryEntry|
+    |osDirectory fileNameOrDirectoryEntry directoryAlreadyCreated|
+
     osDirectory := osDirectoryName asFilename.
     (osDirectory exists and: [osDirectory isDirectory not]) ifTrue:[
         ^ self
     ].
 
-    osDirectory exists ifFalse:[
-        osDirectory recursiveMakeDirectory
-    ].
+    directoryAlreadyCreated := false.
 
     self members do: [:aMember|
         (aMember fileName startsWith: archiveDirectoryName) ifTrue: [
+            directoryAlreadyCreated ifFalse:[
+                osDirectory exists ifFalse:[
+                    osDirectory recursiveMakeDirectory.
+                    directoryAlreadyCreated := true.
+                ]
+            ].
+
             fileNameOrDirectoryEntry := osDirectory construct: (aMember fileName copyFrom: (archiveDirectoryName size +1)).
             fileNameOrDirectoryEntry notEmptyOrNil ifTrue: [
                 aMember compressedSize == 0 ifTrue: [
@@ -4523,7 +4529,7 @@
 !ZipArchive class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic2/ZipArchive.st,v 1.66 2008-06-06 10:42:29 ab Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic2/ZipArchive.st,v 1.67 2008-06-09 18:33:45 cg Exp $'
 ! !
 
 ZipArchive initialize!