From 46052913f307b1561f1661bb776fa29c0775758c Mon Sep 17 00:00:00 2001 From: Andy McFadden Date: Tue, 13 Aug 2013 09:56:19 -0700 Subject: Better error message Attempt to create the output file before handing it to MediaMuxer, which doesn't report file-open failures in a useful way. Change-Id: Ie24ff577dd50e185b4eb72575684d23a46f38d3d --- cmds/screenrecord/screenrecord.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'cmds') diff --git a/cmds/screenrecord/screenrecord.cpp b/cmds/screenrecord/screenrecord.cpp index 28fc00f..923f781 100644 --- a/cmds/screenrecord/screenrecord.cpp +++ b/cmds/screenrecord/screenrecord.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -599,7 +600,19 @@ int main(int argc, char* const argv[]) { return 2; } - status_t err = recordScreen(argv[optind]); + // MediaMuxer tries to create the file in the constructor, but we don't + // learn about the failure until muxer.start(), which returns a generic + // error code without logging anything. We attempt to create the file + // now for better diagnostics. + const char* fileName = argv[optind]; + int fd = open(fileName, O_CREAT | O_RDWR, 0644); + if (fd < 0) { + fprintf(stderr, "Unable to open '%s': %s\n", fileName, strerror(errno)); + return 1; + } + close(fd); + + status_t err = recordScreen(fileName); ALOGD(err == NO_ERROR ? "success" : "failed"); return (int) err; } -- cgit v1.1