Don't overwrite ANR traces.txt if it can't be renamed (usually

due to lack of permissions, usually due to an old adb running
"dumpstate" directly rather than via bugreport).
This commit is contained in:
Dan Egnor
2010-02-17 14:16:32 -08:00
parent 1168baae84
commit 6a70d7d1e2

View File

@@ -268,7 +268,10 @@ const char *dump_vm_traces() {
char anr_traces_path[PATH_MAX];
strlcpy(anr_traces_path, traces_path, sizeof(anr_traces_path));
strlcat(anr_traces_path, ".anr", sizeof(anr_traces_path));
rename(traces_path, anr_traces_path);
if (rename(traces_path, anr_traces_path) && errno != ENOENT) {
fprintf(stderr, "rename(%s, %s): %s\n", traces_path, anr_traces_path, strerror(errno));
return NULL; // Can't rename old traces.txt -- no permission? -- leave it alone instead
}
/* create a new, empty traces.txt file to receive stack dumps */
int fd = open(traces_path, O_CREAT | O_WRONLY | O_TRUNC, 0666); /* -rw-rw-rw- */