From 6a70d7d1e28bd0b98d03e7ecab3fd08ea5973e34 Mon Sep 17 00:00:00 2001 From: Dan Egnor Date: Wed, 17 Feb 2010 14:16:32 -0800 Subject: 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). --- cmds/dumpstate/utils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'cmds') 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- */ -- cgit v1.1