Index: runtime/bin/directory_android.cc |
diff --git a/runtime/bin/directory_android.cc b/runtime/bin/directory_android.cc |
index 6a2646a06ce01d6f9cee9444406f005265b643e3..7dd450ab503840d950e2af63557642462cb02e47 100644 |
--- a/runtime/bin/directory_android.cc |
+++ b/runtime/bin/directory_android.cc |
@@ -382,34 +382,34 @@ static char* MakeTempDirectory(char* path_template) { |
} |
-char* Directory::CreateTemp(const char* const_template, bool system) { |
- // Returns a new, unused directory name, modifying the contents of |
- // dir_template. Creates the directory with the permissions specified |
+char* Directory::SystemTemp() { |
+ // Android does not have a /tmp directory. A partial substitute, |
+ // suitable for bring-up work and tests, is to create a tmp |
+ // directory in /data/local/tmp. |
+ // |
+ // TODO(4413): In the long run, when running in an application we should |
+ // probably use the appropriate directory from the Android API, |
+ // probably what File.createTempFile uses. |
+#define ANDROID_TEMP_DIR "/data/local/tmp" |
+ struct stat st; |
+ if (stat(ANDROID_TEMP_DIR, &st) != 0) { |
+ mkdir(ANDROID_TEMP_DIR, 0777); |
+ } |
+ return strdup(ANDROID_TEMP_DIR); |
+} |
+ |
+ |
+char* Directory::CreateTemp(const char* prefix) { |
+ // Returns a new, unused directory name, adding characters to the end |
+ // of prefix. Creates the directory with the permissions specified |
// by the process umask. |
// The return value must be freed by the caller. |
PathBuffer path; |
- if (system) { |
- // Android does not have a /tmp directory. A partial substitute, |
- // suitable for bring-up work and tests, is to create a tmp |
- // directory in /data/local/tmp. |
- // |
- // TODO(4413): In the long run, when running in an application we should |
- // probably use the appropriate directory from the Android API, |
- // probably what File.createTempFile uses. |
- #define ANDROID_TEMP_DIR "/data/local/tmp" |
- struct stat st; |
- if (stat(ANDROID_TEMP_DIR, &st) != 0) { |
- mkdir(ANDROID_TEMP_DIR, 0777); |
- } |
- path.Add(ANDROID_TEMP_DIR "/"); |
- } |
- |
- path.Add(const_template); |
+ path.Add(prefix); |
if (!path.Add("XXXXXX")) { |
// Pattern has overflowed. |
return NULL; |
} |
- |
char* result; |
do { |
result = MakeTempDirectory(path.AsString()); |
@@ -417,11 +417,7 @@ char* Directory::CreateTemp(const char* const_template, bool system) { |
if (result == NULL) { |
return NULL; |
} |
- int length = strnlen(path.AsString(), PATH_MAX); |
- result = static_cast<char*>(malloc(length + 1)); |
- strncpy(result, path.AsString(), length); |
- result[length] = '\0'; |
- return result; |
+ return strdup(result); |
} |