char log_buf[8192];
int log_size;
-__attribute__((destructor)) static void write_log_file(void)
+static int write_log_file(void)
{
- int log_fd;
+ _CLEANUP_FD_ int log_fd = -1;
int ret;
char path[128];
snprintf(path, sizeof(path), "%s/%s", dirname(recovery_image_path), LOG_FILE_BASENAME);
log_fd = creat(path, 0644);
- if (log_fd == -1) {
- _E("Failed to open log file (%d)", errno);
- return;
- }
+ ASSERT_RETV(log_fd != -1, errno, "Failed to open log file (%d)", errno);
ret = write(log_fd, log_buf, log_size);
- if (ret < log_size)
- _E("Failed to write log (log size=%d, ret=%d)", log_size, ret);
+ ASSERT_RETV(ret == log_size, EIO, "Failed to write log (log size=%d, ret=%d)", log_size, ret);
- close(log_fd);
+ return SUCCEED;
}
#endif
+__attribute__((destructor)) static void __fini__(void)
+{
+ int ret = SUCCEED;
+
+#ifdef LOG_FILE
+ ret = write_log_file();
+ if (ret != SUCCEED)
+ _W("Failed to write log file (%d)", ret);
+#endif
+}
+
static unsigned long long total_image_size;