From 27d77de2d4b62da15c55191b9cd270ceb1649604 Mon Sep 17 00:00:00 2001
From: Romain Bertozzi <romain.bertozzi@savoirfairelinux.com>
Date: Wed, 8 Mar 2017 14:57:24 -0500
Subject: [PATCH] ios: open signals for iOS platform

This patch opens signals for the iOS platform.
The signals that are opened are:
    - GetAppDataPath
    - GetHardwareAudioFormat

Issue: #1540
Change-Id: Ia0a5d999aaf358a562fa8af58bc1c630fb1388f5
Reviewed-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
---
 src/client/ring_signal.cpp                 |  4 ++--
 src/client/ring_signal.h                   |  4 ++++
 src/dring/configurationmanager_interface.h |  8 ++++++--
 src/fileutils.cpp                          | 14 +++++++-------
 4 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/src/client/ring_signal.cpp b/src/client/ring_signal.cpp
index 9c5c8667df..b8fd4b083f 100644
--- a/src/client/ring_signal.cpp
+++ b/src/client/ring_signal.cpp
@@ -73,10 +73,10 @@ getSignalHandlers()
         exported_callback<DRing::ConfigurationSignal::MigrationEnded>(),
         exported_callback<DRing::ConfigurationSignal::DeviceRevocationEnded>(),
         exported_callback<DRing::ConfigurationSignal::Error>(),
-#ifdef __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
         exported_callback<DRing::ConfigurationSignal::GetHardwareAudioFormat>(),
 #endif
-#if defined(__ANDROID__) || defined(RING_UWP)
+#if defined(__ANDROID__) || TARGET_OS_IOS || defined(RING_UWP)
         exported_callback<DRing::ConfigurationSignal::GetAppDataPath>(),
 #endif
 
diff --git a/src/client/ring_signal.h b/src/client/ring_signal.h
index b88bc45022..13c7cc16be 100644
--- a/src/client/ring_signal.h
+++ b/src/client/ring_signal.h
@@ -35,6 +35,10 @@
 #include "dring.h"
 #include "logger.h"
 
+#ifdef __APPLE__
+#include <TargetConditionals.h>
+#endif
+
 #include <exception>
 #include <memory>
 #include <map>
diff --git a/src/dring/configurationmanager_interface.h b/src/dring/configurationmanager_interface.h
index 766fe0fe61..409e0b1af9 100644
--- a/src/dring/configurationmanager_interface.h
+++ b/src/dring/configurationmanager_interface.h
@@ -34,6 +34,10 @@
 #include "dring.h"
 #include "security_const.h"
 
+#ifdef __APPLE__
+#include <TargetConditionals.h>
+#endif
+
 namespace DRing {
 
 void registerConfHandlers(const std::map<std::string, std::shared_ptr<CallbackWrapperBase>>&);
@@ -278,13 +282,13 @@ struct ConfigurationSignal {
          * These are special getters for Android and UWP, so the daemon can retreive
          * information only accessible through their respective platform APIs
          */
-#ifdef __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
         struct GetHardwareAudioFormat {
                 constexpr static const char* name = "GetHardwareAudioFormat";
                 using cb_type = void(std::vector<int32_t>* /* params_ret */);
         };
 #endif
-#if defined(__ANDROID__) || defined(RING_UWP)
+#if defined(__ANDROID__) || defined(RING_UWP) || TARGET_OS_IOS
         struct GetAppDataPath {
                 constexpr static const char* name = "GetAppDataPath";
                 using cb_type = void(const std::string& name, std::vector<std::string>* /* path_ret */);
diff --git a/src/fileutils.cpp b/src/fileutils.cpp
index 5e87286f13..c08336d215 100644
--- a/src/fileutils.cpp
+++ b/src/fileutils.cpp
@@ -37,7 +37,7 @@
 #include <TargetConditionals.h>
 #endif
 
-#ifdef __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
 #include "client/ring_signal.h"
 #endif
 #ifdef _WIN32
@@ -175,7 +175,7 @@ create_pidfile()
 std::string
 expand_path(const std::string &path)
 {
-#if defined __ANDROID__ || defined RING_UWP || defined WIN32 || TARGET_OS_IPHONE
+#if defined __ANDROID__ || defined RING_UWP || defined WIN32 || TARGET_OS_IOS
     RING_ERR("Path expansion not implemented, returning original");
     return path;
 #else
@@ -417,7 +417,7 @@ FileHandle::~FileHandle()
     }
 }
 
-#if defined(__ANDROID__) || defined(RING_UWP)
+#if defined(__ANDROID__) || defined(RING_UWP) || TARGET_OS_IOS
 static std::string files_path;
 static std::string cache_path;
 static std::string config_path;
@@ -451,7 +451,7 @@ get_cache_dir()
         return cache_home;
     } else {
 #endif
-#ifdef __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
         std::vector<std::string> paths;
         emitSignal<DRing::ConfigurationSignal::GetAppDataPath>("cache", &paths);
         if (not paths.empty())
@@ -473,7 +473,7 @@ get_cache_dir()
 std::string
 get_home_dir()
 {
-#if defined __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
     std::vector<std::string> paths;
     emitSignal<DRing::ConfigurationSignal::GetAppDataPath>("files", &paths);
     if (not paths.empty())
@@ -517,7 +517,7 @@ get_home_dir()
 std::string
 get_data_dir()
 {
-#ifdef __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
     std::vector<std::string> paths;
     emitSignal<DRing::ConfigurationSignal::GetAppDataPath>("files", &paths);
     if (not paths.empty())
@@ -553,7 +553,7 @@ get_data_dir()
 std::string
 get_config_dir()
 {
-#ifdef __ANDROID__
+#if defined(__ANDROID__) || TARGET_OS_IOS
     std::vector<std::string> paths;
     emitSignal<DRing::ConfigurationSignal::GetAppDataPath>("config", &paths);
     if (not paths.empty())
-- 
GitLab