From ffa797b9261fe70e141d009b993e78555f6384c0 Mon Sep 17 00:00:00 2001 From: Jared Boone Date: Sun, 24 Jul 2016 20:39:21 -0700 Subject: [PATCH] File: Remove puts(), add write_line(), cascade changes in interface. --- firmware/application/file.cpp | 17 +++++++++++------ firmware/application/file.hpp | 2 +- firmware/application/log_file.cpp | 12 ++++++------ firmware/application/log_file.hpp | 4 ++-- firmware/application/ui_record_view.cpp | 12 ++++++------ 5 files changed, 26 insertions(+), 21 deletions(-) diff --git a/firmware/application/file.cpp b/firmware/application/file.cpp index 814f3bde6..f44154528 100644 --- a/firmware/application/file.cpp +++ b/firmware/application/file.cpp @@ -101,13 +101,18 @@ File::Result File::seek(const uint64_t new_position) { return { static_cast(old_position) }; } -File::Result File::puts(const std::string& string) { - const auto result = f_puts(string.c_str(), &f); - if( result >= 0 ) { - return { static_cast(result) }; - } else { - return { static_cast(FR_EOF) }; +Optional File::write_line(const std::string& s) { + const auto result_s = write(s.c_str(), s.size()); + if( result_s.is_error() ) { + return { result_s.error() }; } + + const auto result_crlf = write("\r\n", 2); + if( result_crlf.is_error() ) { + return { result_crlf.error() }; + } + + return { }; } Optional File::sync() { diff --git a/firmware/application/file.hpp b/firmware/application/file.hpp index 96b719914..f3739317f 100644 --- a/firmware/application/file.hpp +++ b/firmware/application/file.hpp @@ -207,7 +207,7 @@ public: return write(data.data(), N); } - Result puts(const std::string& string); + Optional write_line(const std::string& s); // TODO: Return Result<>. Optional sync(); diff --git a/firmware/application/log_file.cpp b/firmware/application/log_file.cpp index a761650fe..fa82f4b1e 100644 --- a/firmware/application/log_file.cpp +++ b/firmware/application/log_file.cpp @@ -23,15 +23,15 @@ #include "string_format.hpp" -File::Result LogFile::write_entry(const rtc::RTC& datetime, const std::string& entry) { +Optional LogFile::write_entry(const rtc::RTC& datetime, const std::string& entry) { std::string timestamp = to_string_timestamp(datetime); - return write(timestamp + " " + entry + "\r\n"); + return write_line(timestamp + " " + entry); } -File::Result LogFile::write(const std::string& message) { - auto puts_result = file.puts(message); - if( puts_result.is_ok() ) { +Optional LogFile::write_line(const std::string& message) { + auto error = file.write_line(message); + if( !error.is_valid() ) { file.sync(); } - return puts_result; + return error; } diff --git a/firmware/application/log_file.hpp b/firmware/application/log_file.hpp index 2aa515fab..1e1f667a9 100644 --- a/firmware/application/log_file.hpp +++ b/firmware/application/log_file.hpp @@ -35,12 +35,12 @@ public: return file.append(filename); } - File::Result write_entry(const rtc::RTC& datetime, const std::string& entry); + Optional write_entry(const rtc::RTC& datetime, const std::string& entry); private: File file; - File::Result write(const std::string& message); + Optional write_line(const std::string& message); }; #endif/*__LOG_FILE_H__*/ diff --git a/firmware/application/ui_record_view.cpp b/firmware/application/ui_record_view.cpp index dca544b8b..695a454dc 100644 --- a/firmware/application/ui_record_view.cpp +++ b/firmware/application/ui_record_view.cpp @@ -320,13 +320,13 @@ Optional RecordView::write_metadata_file(const std::string& filenam if( create_error.is_valid() ) { return create_error; } else { - const auto puts_result1 = file.puts("sample_rate=" + to_string_dec_uint(sampling_rate) + "\n"); - if( puts_result1.is_error() ) { - return { puts_result1.error() }; + const auto error_line1 = file.write_line("sample_rate=" + to_string_dec_uint(sampling_rate)); + if( error_line1.is_valid() ) { + return error_line1; } - const auto puts_result2 = file.puts("center_frequency=" + to_string_dec_uint(receiver_model.tuning_frequency()) + "\n"); - if( puts_result2.is_error() ) { - return { puts_result2.error() }; + const auto error_line2 = file.write_line("center_frequency=" + to_string_dec_uint(receiver_model.tuning_frequency())); + if( error_line2.is_valid() ) { + return error_line2; } return { }; }