Jacek Caban : cabinet: Make sure that parent directories exist when creating a new directory.

Alexandre Julliard julliard at winehq.org
Mon Dec 29 08:48:03 CST 2008


Module: wine
Branch: master
Commit: edda4637b449cd17a7c091cac867d1e5a6896f2a
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=edda4637b449cd17a7c091cac867d1e5a6896f2a

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Dec 29 14:50:26 2008 +0100

cabinet: Make sure that parent directories exist when creating a new directory.

---

 dlls/cabinet/cabinet_main.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/dlls/cabinet/cabinet_main.c b/dlls/cabinet/cabinet_main.c
index 35810e3..4748a99 100644
--- a/dlls/cabinet/cabinet_main.c
+++ b/dlls/cabinet/cabinet_main.c
@@ -237,7 +237,18 @@ static INT_PTR fdi_notify_extract(FDINOTIFICATIONTYPE fdint, PFDINOTIFICATION pf
 
                 /* create the destination directory if it doesn't exist */
                 if (GetFileAttributesA(szDirectory) == INVALID_FILE_ATTRIBUTES)
+                {
+                    char *ptr;
+
+                    for(ptr = szDirectory + strlen(pDestination->Destination)+1; *ptr; ptr++) {
+                        if(*ptr == '\\') {
+                            *ptr = 0;
+                            CreateDirectoryA(szDirectory, NULL);
+                            *ptr = '\\';
+                        }
+                    }
                     CreateDirectoryA(szDirectory, NULL);
+                }
 
                 hFile = CreateFileA(szFullPath, GENERIC_READ | GENERIC_WRITE, 0, NULL,
                                     CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL);




More information about the wine-cvs mailing list