diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cmake/core.cmake | 5 | ||||
-rw-r--r-- | src/core/zip/MCZip.cpp | 19 |
2 files changed, 20 insertions, 4 deletions
diff --git a/src/cmake/core.cmake b/src/cmake/core.cmake index ac2e6ea8..963b02ce 100644 --- a/src/cmake/core.cmake +++ b/src/cmake/core.cmake @@ -19,6 +19,10 @@ IF(APPLE) core/rfc822/MCMessageParserMac.mm ) + set(zip_files_apple + core/zip/MCZipMac.mm + ) + set(core_includes_apple "${CMAKE_CURRENT_SOURCE_DIR}/core/basetypes/icu-ucsdet" "${CMAKE_CURRENT_SOURCE_DIR}/core/basetypes/icu-ucsdet/include" @@ -149,6 +153,7 @@ set(zip_files core/zip/MiniZip/ioapi.c core/zip/MiniZip/unzip.c core/zip/MiniZip/zip.c + ${zip_files_apple} ) set(security_files diff --git a/src/core/zip/MCZip.cpp b/src/core/zip/MCZip.cpp index a9879c9f..69e7fc6e 100644 --- a/src/core/zip/MCZip.cpp +++ b/src/core/zip/MCZip.cpp @@ -1,6 +1,7 @@ #include "MCWin32.h" // Should be included first. #include "MCZip.h" +#include "MCZipPrivate.h" #include "zip.h" #include "unzip.h" @@ -166,23 +167,33 @@ static ErrorCode addFile(zipFile file, String * path) return ErrorNone; } -String * mailcore::CreateTemporaryZipFileFromFolder(String * folder) +#ifndef __APPLE__ +String * mailcore::TemporaryDirectoryForZip() { char tempdir[] = "/tmp/mailcore2-XXXXXX"; char * result = mkdtemp(tempdir); if (result == NULL) { return NULL; } + return String::stringWithFileSystemRepresentation(tempdir); +} +#endif + +String * mailcore::CreateTemporaryZipFileFromFolder(String * folder) +{ + String * tempDirectoryString = TemporaryDirectoryForZip(); + + if (tempDirectoryString == NULL) { + return NULL; + } - String * tempDirectoryString = String::stringWithFileSystemRepresentation(tempdir); String * path = tempDirectoryString->stringByAppendingPathComponent(folder->lastPathComponent())->stringByAppendingUTF8Format(".zip"); ErrorCode err = CreateZipFileFromFolder(path, folder); if (err != ErrorNone) { - unlink(path->fileSystemRepresentation()); - unlink(tempdir); return NULL; } + unlink(tempDirectoryString->fileSystemRepresentation()); return path; } |