summaryrefslogtreecommitdiff
path: root/Source/Android/jni/AndroidCommon/AndroidCommon.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/jni/AndroidCommon/AndroidCommon.cpp')
-rw-r--r--Source/Android/jni/AndroidCommon/AndroidCommon.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp
index 310db6b1f7..2870044ac9 100644
--- a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp
+++ b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp
@@ -4,6 +4,7 @@
#include "jni/AndroidCommon/AndroidCommon.h"
+#include <ios>
#include <string>
#include <string_view>
#include <vector>
@@ -66,6 +67,28 @@ std::string OpenModeToAndroid(std::string mode)
return mode;
}
+std::string OpenModeToAndroid(std::ios_base::openmode mode)
+{
+ std::string result;
+
+ if (mode & std::ios_base::in)
+ result += 'r';
+
+ if (mode & (std::ios_base::out | std::ios_base::app))
+ result += 'w';
+
+ if (mode & std::ios_base::app)
+ result += 'a';
+
+ constexpr std::ios_base::openmode t = std::ios_base::in | std::ios_base::trunc;
+ if ((mode & t) == t)
+ result += 't';
+
+ // The 'b' specifier is not supported. Since we're on POSIX, it's fine to just skip it.
+
+ return result;
+}
+
int OpenAndroidContent(const std::string& uri, const std::string& mode)
{
JNIEnv* env = IDCache::GetEnvForThread();