diff options
author | Elliott Hughes <enh@google.com> | 2013-02-14 16:14:07 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-02-14 16:14:07 -0800 |
commit | 0f1ce3dd0b880b6ae0cf7f5413702b8ef542efb2 (patch) | |
tree | eba4352a2914f712c1d077e4a68b68c19a766c9a | |
parent | dac6030289c87010b31bad60b769399b387ef15c (diff) | |
parent | 8c212ebe53bb2baab3575f03069016f1fb11e449 (diff) | |
download | gtest-0f1ce3dd0b880b6ae0cf7f5413702b8ef542efb2.tar.gz |
am 8c212ebe: Merge "Only use if it exists and is writable."android-sdk-4.4.2_r1.0.1android-sdk-4.4.2_r1android-cts-4.4_r4android-cts-4.4_r1android-4.4w_r1android-4.4_r1.2.0.1android-4.4_r1.2android-4.4_r1.1.0.1android-4.4_r1.1android-4.4_r1.0.1android-4.4_r1android-4.4_r0.9android-4.4_r0.8android-4.4_r0.7android-4.4.4_r2.0.1android-4.4.4_r2android-4.4.4_r1.0.1android-4.4.4_r1android-4.4.3_r1.1.0.1android-4.4.3_r1.1android-4.4.3_r1.0.1android-4.4.3_r1android-4.4.2_r2.0.1android-4.4.2_r2android-4.4.2_r1.0.1android-4.4.2_r1android-4.4.1_r1.0.1android-4.4.1_r1android-4.3_r3.1android-4.3_r3android-4.3_r2.3android-4.3_r2.2android-4.3_r2.1android-4.3_r2android-4.3_r1.1android-4.3_r1android-4.3_r0.9.1android-4.3_r0.9android-4.3.1_r1tools_r22.2kitkat-wearkitkat-releasekitkat-mr2.2-releasekitkat-mr2.1-releasekitkat-mr2-releasekitkat-mr1.1-releasekitkat-mr1-releasekitkat-devkitkat-cts-releasekitkat-cts-devjb-mr2.0.0-releasejb-mr2.0-releasejb-mr2-releasejb-mr2-dev
# Via Elliott Hughes (1) and Gerrit Code Review (1)
* commit '8c212ebe53bb2baab3575f03069016f1fb11e449':
Only use $EXTERNAL_STORAGE if it exists and is writable.
-rw-r--r-- | src/gtest-port.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gtest-port.cc b/src/gtest-port.cc index 01c5e1e..f914dbc 100644 --- a/src/gtest-port.cc +++ b/src/gtest-port.cc @@ -508,16 +508,23 @@ class CapturedStream { // ANDROID #elif GTEST_OS_LINUX_ANDROID // Get $EXTERNAL_STORAGE from the environment, since this can change - // for shell users (fallback is still /sdcard, but this probably will - // never work properly again). - ::std::string external_storage = "/sdcard"; + // for shell users (fallback is /data/nativetest, for emulator users). + ::std::string external_storage = "/data/nativetest"; char *sdcard_path = getenv("EXTERNAL_STORAGE"); - if (sdcard_path) { - external_storage = sdcard_path; + if (sdcard_path != NULL) { + // Check that $EXTERNAL_STORAGE exists and is writable before trying to use it. + struct stat sb; + if (stat(sdcard_path, &sb) != -1) { + if ((sb.st_mode & S_IWUSR) != 0) { + external_storage = sdcard_path; + } + } } external_storage += "/captured_stderr.XXXXXX"; char *name_template = strdup(external_storage.c_str()); const int captured_fd = mkstemp(name_template); + GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file " + << name_template; filename_ = name_template; free(name_template); name_template = NULL; |