From d5f4221f7820a774fd209c7a75a8a526aeec7ee2 Mon Sep 17 00:00:00 2001 From: Syndamia Date: Mon, 30 May 2022 20:23:22 +0300 Subject: Autocommit at 30.05.2022 @ 20:23 --- src/UserInterface/UserInterface.cpp | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) (limited to 'src/UserInterface/UserInterface.cpp') diff --git a/src/UserInterface/UserInterface.cpp b/src/UserInterface/UserInterface.cpp index d2de4f3..190bb54 100644 --- a/src/UserInterface/UserInterface.cpp +++ b/src/UserInterface/UserInterface.cpp @@ -77,6 +77,8 @@ void UserInterface::com_print(const char* params) { printTable(cells, table->get_cols()); } +#define isDigit(a) (a >= '0' && a <= '9') + void UserInterface::com_edit(const char* params) { if (*params != 'R') { printLine("Error: Invalid cell position format! Expected RC"); @@ -84,12 +86,39 @@ void UserInterface::com_edit(const char* params) { } unsigned row = atoi(++params); - while (*params != 'C') params++; + while (*params != 'C') { + if (*params == '\0') { + printLine("Error: End of line reached. Expected row number."); + return; + } + if (!isDigit(*params)) { + printLine("Error: Found a non-digit character. Exptected row number."); + return; + } + + params++; + } unsigned col = atoi(++params); - while (*params != ' ') params++; + while (*params != ' ') { + if (*params == '\0') { + printLine("Error: End of line reached. Expected columns number."); + return; + } + if (!isDigit(*params)) { + printLine("Error: Found a non-digit character. Exptected column number."); + return; + } + + params++; + } - table->putCell(row, col, params); - saved = false; + try { + table->putCell(row, col, params); + saved = false; + } + catch (std::logic_error err) { + printLine(err.what()); + } } /* Public */ -- cgit v1.3.1-23-gd82d