diff options
author | Dan Egnor <egnor@google.com> | 2010-02-17 14:16:32 -0800 |
---|---|---|
committer | Dan Egnor <egnor@google.com> | 2010-02-17 14:25:03 -0800 |
commit | 6a70d7d1e28bd0b98d03e7ecab3fd08ea5973e34 (patch) | |
tree | e76ae4ea5cea4d0559b115d51ca10e1fc308255a | |
parent | 1168baae849f03ad655bff74360b286b2f10b4a8 (diff) | |
download | frameworks_base-6a70d7d1e28bd0b98d03e7ecab3fd08ea5973e34.zip frameworks_base-6a70d7d1e28bd0b98d03e7ecab3fd08ea5973e34.tar.gz frameworks_base-6a70d7d1e28bd0b98d03e7ecab3fd08ea5973e34.tar.bz2 |
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).
-rw-r--r-- | cmds/dumpstate/utils.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/cmds/dumpstate/utils.c b/cmds/dumpstate/utils.c index 39e14e4..6a79c6d 100644 --- a/cmds/dumpstate/utils.c +++ b/cmds/dumpstate/utils.c @@ -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- */ |