diff --git a/src/core/Buffer.cc b/src/core/Buffer.cc index 8de2d40..3896bb1 100644 --- a/src/core/Buffer.cc +++ b/src/core/Buffer.cc @@ -119,8 +119,9 @@ void Buffer::load_text_in_buffer(uint8_t * buffer, size_t buffer_size, size_t da m_line_endings = text_loader.get_line_endings(); } -bool Buffer::write_to_file(const char * filename) +bool Buffer::write_to_file(const char * filename, size_t * n_lines, size_t * n_bytes) { + size_t l_n_lines = 0; File file; if (!file.open(filename, true)) { @@ -134,6 +135,7 @@ bool Buffer::write_to_file(const char * filename) while (start_of_line.valid()) { + l_n_lines++; Iterator iterator = start_of_line; iterator.go_end_of_line(true); size_t len = iterator.address() - start_of_line.address(); @@ -161,6 +163,14 @@ bool Buffer::write_to_file(const char * filename) start_of_line = iterator; } + if (n_lines != nullptr) + { + *n_lines = l_n_lines; + } + if (n_bytes != nullptr) + { + *n_bytes = bytes_written; + } return true; } diff --git a/src/core/Buffer.h b/src/core/Buffer.h index b762bf0..1fda412 100644 --- a/src/core/Buffer.h +++ b/src/core/Buffer.h @@ -156,7 +156,7 @@ public: Buffer(); Buffer(const char * filename); Buffer(const uint8_t * data, size_t data_length); - bool write_to_file(const char * filename); + bool write_to_file(const char * filename, size_t * n_lines, size_t * n_bytes); std::shared_ptr add_iterator() { diff --git a/src/gui/Window.cc b/src/gui/Window.cc index 43cae4a..a7574f5 100644 --- a/src/gui/Window.cc +++ b/src/gui/Window.cc @@ -649,9 +649,14 @@ void Window::command_write_file(const CommandParser & cp) } if (path != "") { - if (buffer->write_to_file(Path::clean(path).c_str())) + size_t n_lines; + size_t n_bytes; + if (buffer->write_to_file(Path::clean(path).c_str(), &n_lines, &n_bytes)) { - set_status("Wrote file"); + char msg[100]; + sprintf(msg, "Wrote file: %u lines, %u bytes", + (unsigned int)n_lines, (unsigned int)n_bytes); + set_status(msg); } else {