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();
}
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;
}

View File

@ -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<Iterator> add_iterator()
{

View File

@ -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
{