diff options
Diffstat (limited to 'Source/Android/jni/AndroidCommon/AndroidCommon.cpp')
| -rw-r--r-- | Source/Android/jni/AndroidCommon/AndroidCommon.cpp | 23 |
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(); |
