Print number of lines and bytes written to file

This commit is contained in:
Josh Holtrop 2018-03-23 20:40:20 -04:00
parent 68b2c7e0e7
commit 93719bf042
3 changed files with 19 additions and 4 deletions

View File

@ -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(); 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; File file;
if (!file.open(filename, true)) if (!file.open(filename, true))
{ {
@ -134,6 +135,7 @@ bool Buffer::write_to_file(const char * filename)
while (start_of_line.valid()) while (start_of_line.valid())
{ {
l_n_lines++;
Iterator iterator = start_of_line; Iterator iterator = start_of_line;
iterator.go_end_of_line(true); iterator.go_end_of_line(true);
size_t len = iterator.address() - start_of_line.address(); 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; start_of_line = iterator;
} }
if (n_lines != nullptr)
{
*n_lines = l_n_lines;
}
if (n_bytes != nullptr)
{
*n_bytes = bytes_written;
}
return true; return true;
} }

View File

@ -156,7 +156,7 @@ public:
Buffer(); Buffer();
Buffer(const char * filename); Buffer(const char * filename);
Buffer(const uint8_t * data, size_t data_length); 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<Iterator> add_iterator() std::shared_ptr<Iterator> add_iterator()
{ {

View File

@ -649,9 +649,14 @@ void Window::command_write_file(const CommandParser & cp)
} }
if (path != "") 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 else
{ {