From 882a5164557fe1f7dd4cb395ee219b6b2dc878a7 Mon Sep 17 00:00:00 2001 From: omigamedev Date: Tue, 17 Sep 2019 11:09:26 +0200 Subject: [PATCH] add create directory api for iOS and macOS --- src/asset.cpp | 3 +++ src/objc_utils.cpp | 14 ++++++++++++++ src/objc_utils.h | 1 + 3 files changed, 18 insertions(+) diff --git a/src/asset.cpp b/src/asset.cpp index 0c200d4..ece60d5 100644 --- a/src/asset.cpp +++ b/src/asset.cpp @@ -4,6 +4,7 @@ #ifdef __APPLE__ #include +#include "objc_utils.h" #endif #ifdef __ANDROID__ @@ -141,6 +142,8 @@ bool Asset::create_dir(const std::string& path) return PathFileExistsA(path.c_str()) ? true : CreateDirectoryA(path.c_str(), NULL); #elif __ANDROID__ return android_create_dir(path); +#elif __IOS__ || __OSX__ + return apple_create_dir(path); #endif } diff --git a/src/objc_utils.cpp b/src/objc_utils.cpp index 796312d..324a6dc 100644 --- a/src/objc_utils.cpp +++ b/src/objc_utils.cpp @@ -334,3 +334,17 @@ void save_image_library(const std::string& path) }]; #endif } + +bool apple_create_dir(const std::string& path) +{ + NSError* err = nil; + NSString* p = [NSString stringWithUTF8String:(path+"/").c_str()]; + NSURL* url = [NSURL fileURLWithPath:p isDirectory:YES]; + if (![[NSFileManager defaultManager] createDirectoryAtURL:url withIntermediateDirectories:YES attributes:nil error:&err]) + { + LOG("error creating path: %s", path.c_str()); + LOG("error creating path: %s", [[err description] cStringUsingEncoding:NSUTF8StringEncoding]); + return false; + } + return true; +} diff --git a/src/objc_utils.h b/src/objc_utils.h index 95e1f93..fed89f2 100644 --- a/src/objc_utils.h +++ b/src/objc_utils.h @@ -15,3 +15,4 @@ void uinstall_global_handlers(); void delete_all_files_in_path(const std::string& source_path); void export_mp4(const std::string& rec_path, int width, int height, int tot, void(^progress_callback)(float)); void save_image_library(const std::string& path); +bool apple_create_dir(const std::string& path);