diff options
| author | JosJuice <josjuice@gmail.com> | 2020-11-04 20:59:39 +0100 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2020-12-20 13:24:54 +0100 |
| commit | 99ffee9a0acc3200f8c8af7b3fc58af2d38fb614 (patch) | |
| tree | a15ca74f13513c29041ab7e0ba7f7c62e9d0f643 /Source/Android/jni/AndroidCommon/AndroidCommon.cpp | |
| parent | 64afe97491c1b713c18a79e4cd18a0cca732ade1 (diff) | |
Android: Add content provider support to File::OpenFStream
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(); |
