aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cmake/core.cmake5
-rw-r--r--src/core/zip/MCZip.cpp19
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;
}