diff --git a/example/main.c b/example/main.c index 6fe45aa..095266b 100644 --- a/example/main.c +++ b/example/main.c @@ -21,10 +21,8 @@ static FTABLE *create_basic_table() return table; } -int main(int argc, char *argv[]) +int main(void) { - (void)argc; - (void)argv; int result = 0; FTABLE *table = NULL; diff --git a/src/cell.c b/src/cell.c index 9f2174d..3314e18 100644 --- a/src/cell.c +++ b/src/cell.c @@ -117,33 +117,23 @@ int cell_printf(fort_cell_t *cell, size_t row, char *buf, size_t buf_len, const } -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; int left = cell_padding_left; int right = cell_padding_right; - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, left, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buf + written, buf_len - written, left, space_char)); if (cell->str_buffer) - CHECK_RESULT_AND_MOVE_DEV(buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + dev, buf_len - dev - right, context)); + CHCK_RSLT_ADD_TO_WRITTEN(buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + written, buf_len - written - right, context)); else - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, buf_len - dev - right, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, right, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buf + written, buf_len - written, buf_len - written - right, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buf + written, buf_len - written, right, space_char)); - return dev; + return written; clear: return -1; -#undef CHECK_RESULT_AND_MOVE_DEV } int cell_wprintf(fort_cell_t *cell, size_t row, wchar_t *buf, size_t buf_len, const context_t *context) @@ -168,33 +158,23 @@ int cell_wprintf(fort_cell_t *cell, size_t row, wchar_t *buf, size_t buf_len, co return snprint_n_chars_(buf, buf_len, buf_len - 1, space_char); } -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; int left = cell_padding_left; int right = cell_padding_right; - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, left, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buf + written, buf_len - written, left, space_char)); if (cell->str_buffer) - CHECK_RESULT_AND_MOVE_DEV(buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + dev, buf_len - dev - right, context)); + CHCK_RSLT_ADD_TO_WRITTEN(buffer_printf_(cell->str_buffer, row - cell_padding_top, buf + written, buf_len - written - right, context)); else - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, buf_len - dev - right, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buf + dev, buf_len - dev, right, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buf + written, buf_len - written, buf_len - written - right, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buf + written, buf_len - written, right, space_char)); - return dev; + return written; clear: return -1; -#undef CHECK_RESULT_AND_MOVE_DEV } diff --git a/src/fort.c b/src/fort.c index 81f3f9a..3ac709b 100644 --- a/src/fort.c +++ b/src/fort.c @@ -461,15 +461,6 @@ int ft_table_write_ln(FTABLE *table, size_t rows, size_t cols, const char **tabl const char *ft_to_string(const FTABLE *table) { -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - typedef char char_type; const char_type *empty_string = ""; const enum str_buf_type buf_type = CharBuf; @@ -520,8 +511,8 @@ const char *ft_to_string(const FTABLE *table) if (IS_ERROR(status)) return NULL; - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; size_t i = 0; context_t context; context.table_options = (table->options ? table->options : &g_table_options); @@ -532,8 +523,8 @@ const char *ft_to_string(const FTABLE *table) /* Print top margin */ for (i = 0; i < context.table_options->entire_table_options.top_margin; ++i) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, width - 1/* minus new_line*/, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, width - 1/* minus new_line*/, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, 1, new_line_char)); } for (i = 0; i < rows; ++i) { @@ -541,18 +532,18 @@ const char *ft_to_string(const FTABLE *table) cur_row = *(fort_row_t **)vector_at(table->rows, i); enum HorSeparatorPos separatorPos = (i == 0) ? TopSeparator : InsideSeparator; context.row = i; - CHECK_RESULT_AND_MOVE_DEV(print_row_separator_(buffer + dev, sz - dev, col_width_arr, cols, prev_row, cur_row, separatorPos, cur_sep, &context)); - CHECK_RESULT_AND_MOVE_DEV(snprintf_row_(cur_row, buffer + dev, sz - dev, col_width_arr, cols, row_height_arr[i], &context)); + CHCK_RSLT_ADD_TO_WRITTEN(print_row_separator_(buffer + written, sz - written, col_width_arr, cols, prev_row, cur_row, separatorPos, cur_sep, &context)); + CHCK_RSLT_ADD_TO_WRITTEN(snprintf_row_(cur_row, buffer + written, sz - written, col_width_arr, cols, row_height_arr[i], &context)); prev_row = cur_row; } cur_row = NULL; cur_sep = (i < sep_size) ? (*(separator_t **)vector_at(table->separators, i)) : NULL; - CHECK_RESULT_AND_MOVE_DEV(print_row_separator_(buffer + dev, sz - dev, col_width_arr, cols, prev_row, cur_row, BottomSeparator, cur_sep, &context)); + CHCK_RSLT_ADD_TO_WRITTEN(print_row_separator_(buffer + written, sz - written, col_width_arr, cols, prev_row, cur_row, BottomSeparator, cur_sep, &context)); /* Print bottom margin */ for (i = 0; i < context.table_options->entire_table_options.bottom_margin; ++i) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, width - 1/* minus new_line*/, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, width - 1/* minus new_line*/, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, 1, new_line_char)); } @@ -565,23 +556,12 @@ clear: F_FREE(row_height_arr); F_FREE(buffer); return NULL; - #undef cur_F_STRDUP -#undef CHECK_RESULT_AND_MOVE_DEV } const wchar_t *ft_to_wstring(const FTABLE *table) { -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - typedef wchar_t char_type; const char_type *empty_string = L""; const enum str_buf_type buf_type = WCharBuf; @@ -633,8 +613,8 @@ const wchar_t *ft_to_wstring(const FTABLE *table) if (IS_ERROR(status)) return NULL; - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; size_t i = 0; context_t context; context.table_options = (table->options ? table->options : &g_table_options); @@ -645,8 +625,8 @@ const wchar_t *ft_to_wstring(const FTABLE *table) /* Print top margin */ for (i = 0; i < context.table_options->entire_table_options.top_margin; ++i) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, width - 1/* minus new_line*/, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, width - 1/* minus new_line*/, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, 1, new_line_char)); } for (i = 0; i < rows; ++i) { @@ -654,18 +634,18 @@ const wchar_t *ft_to_wstring(const FTABLE *table) cur_row = *(fort_row_t **)vector_at(table->rows, i); enum HorSeparatorPos separatorPos = (i == 0) ? TopSeparator : InsideSeparator; context.row = i; - CHECK_RESULT_AND_MOVE_DEV(print_row_separator_(buffer + dev, sz - dev, col_width_arr, cols, prev_row, cur_row, separatorPos, cur_sep, &context)); - CHECK_RESULT_AND_MOVE_DEV(snprintf_row_(cur_row, buffer + dev, sz - dev, col_width_arr, cols, row_height_arr[i], &context)); + CHCK_RSLT_ADD_TO_WRITTEN(print_row_separator_(buffer + written, sz - written, col_width_arr, cols, prev_row, cur_row, separatorPos, cur_sep, &context)); + CHCK_RSLT_ADD_TO_WRITTEN(snprintf_row_(cur_row, buffer + written, sz - written, col_width_arr, cols, row_height_arr[i], &context)); prev_row = cur_row; } cur_row = NULL; cur_sep = (i < sep_size) ? (*(separator_t **)vector_at(table->separators, i)) : NULL; - CHECK_RESULT_AND_MOVE_DEV(print_row_separator_(buffer + dev, sz - dev, col_width_arr, cols, prev_row, cur_row, BottomSeparator, cur_sep, &context)); + CHCK_RSLT_ADD_TO_WRITTEN(print_row_separator_(buffer + written, sz - written, col_width_arr, cols, prev_row, cur_row, BottomSeparator, cur_sep, &context)); /* Print bottom margin */ for (i = 0; i < context.table_options->entire_table_options.bottom_margin; ++i) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, width - 1/* minus new_line*/, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, width - 1/* minus new_line*/, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, sz - written, 1, new_line_char)); } F_FREE(col_width_arr); @@ -677,8 +657,7 @@ clear: F_FREE(row_height_arr); F_FREE(buffer); return NULL; - -#undef CHECK_RESULT_AND_MOVE_DEV +#undef cur_F_STRDUP } diff --git a/src/fort_impl.h b/src/fort_impl.h index d17ce42..1bb08b4 100644 --- a/src/fort_impl.h +++ b/src/fort_impl.h @@ -116,4 +116,13 @@ int snprint_n_chars(char *buf, size_t length, size_t n, char ch); int wsnprint_n_chars(wchar_t *buf, size_t length, size_t n, wchar_t ch); +#define CHCK_RSLT_ADD_TO_WRITTEN(statement) \ + do { \ + tmp = statement; \ + if (tmp < 0) {\ + goto clear; \ + } \ + written += tmp; \ + } while(0) + #endif /* FORT_IMPL_H */ diff --git a/src/row.c b/src/row.c index c9e0c2d..571dbe1 100644 --- a/src/row.c +++ b/src/row.c @@ -116,15 +116,6 @@ int print_row_separator(char *buffer, size_t buffer_sz, enum HorSeparatorPos separatorPos, const separator_t *sep, const context_t *context) { -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - typedef char char_type; char new_line_char = '\n'; int (*snprint_n_chars_)(char *, size_t, size_t, char) = snprint_n_chars; @@ -133,8 +124,8 @@ int print_row_separator(char *buffer, size_t buffer_sz, assert(buffer); assert(context); - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; enum RowType lower_row_type = Common; if (lower_row != NULL) { @@ -199,29 +190,27 @@ int print_row_separator(char *buffer, size_t buffer_sz, size_t i = 0; /* Print left margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, context->table_options->entire_table_options.left_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, context->table_options->entire_table_options.left_margin, space_char)); for (i = 0; i < cols; ++i) { if (i == 0) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, (char_type)*L)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, (char_type)*L)); } else { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, (char_type)*IV)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, (char_type)*IV)); } - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, col_width_arr[i], (char_type)*I)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, col_width_arr[i], (char_type)*I)); } - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, (char_type)*R)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, (char_type)*R)); /* Print right margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, context->table_options->entire_table_options.right_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, context->table_options->entire_table_options.right_margin, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, new_line_char)); - return dev; + return written; clear: return -1; - -#undef CHECK_RESULT_AND_MOVE_DEV } @@ -232,26 +221,16 @@ int wprint_row_separator(wchar_t *buffer, size_t buffer_sz, enum HorSeparatorPos separatorPos, const separator_t *sep, const context_t *context) { -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - typedef wchar_t char_type; char new_line_char = L'\n'; int (*snprint_n_chars_)(wchar_t *, size_t, size_t, wchar_t) = wsnprint_n_chars; wchar_t space_char = L' '; - assert(buffer); assert(context); - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; enum RowType lower_row_type = Common; if (lower_row != NULL) { @@ -316,29 +295,27 @@ int wprint_row_separator(wchar_t *buffer, size_t buffer_sz, size_t i = 0; /* Print left margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, context->table_options->entire_table_options.left_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, context->table_options->entire_table_options.left_margin, space_char)); for (i = 0; i < cols; ++i) { if (i == 0) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, (char_type)*L)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, (char_type)*L)); } else { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, (char_type)*IV)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, (char_type)*IV)); } - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, col_width_arr[i], (char_type)*I)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, col_width_arr[i], (char_type)*I)); } - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, (char_type)*R)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, (char_type)*R)); /* Print right margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, context->table_options->entire_table_options.right_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, context->table_options->entire_table_options.right_margin, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buffer_sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buffer_sz - written, 1, new_line_char)); - return dev; + return written; clear: return -1; - -#undef CHECK_RESULT_AND_MOVE_DEV } @@ -475,15 +452,6 @@ clear: int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col_width_arr, size_t col_width_arr_sz, size_t row_height, const context_t *context) { -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - typedef char char_type; char space_char = ' '; char new_line_char = '\n'; @@ -514,40 +482,39 @@ int snprintf_row(const fort_row_t *row, char *buffer, size_t buf_sz, size_t *col const char *R = &(*bord_chars)[RR_bip]; - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; size_t i = 0; for (i = 0; i < row_height; ++i) { /* Print left margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, context->table_options->entire_table_options.left_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, context->table_options->entire_table_options.left_margin, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, (char_type)*L)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, (char_type)*L)); size_t j = 0; for (j = 0; j < col_width_arr_sz; ++j) { ((context_t *)context)->column = j; if (j < cols_in_row) { fort_cell_t *cell = *(fort_cell_t **)vector_at(row->cells, j); - CHECK_RESULT_AND_MOVE_DEV(cell_printf_(cell, i, buffer + dev, col_width_arr[j] + 1, context)); + CHCK_RSLT_ADD_TO_WRITTEN(cell_printf_(cell, i, buffer + written, col_width_arr[j] + 1, context)); } else { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, col_width_arr[j], space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, col_width_arr[j], space_char)); } if (j == col_width_arr_sz - 1) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, (char_type)*R)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, (char_type)*R)); } else { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, (char_type)*IV)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, (char_type)*IV)); } } /* Print right margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, context->table_options->entire_table_options.right_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, context->table_options->entire_table_options.right_margin, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, new_line_char)); } - return dev; + return written; clear: return -1; -#undef CHECK_RESULT_AND_MOVE_DEV } @@ -555,15 +522,6 @@ clear: int wsnprintf_row(const fort_row_t *row, wchar_t *buffer, size_t buf_sz, size_t *col_width_arr, size_t col_width_arr_sz, size_t row_height, const context_t *context) { -#define CHECK_RESULT_AND_MOVE_DEV(statement) \ - do { \ - k = statement; \ - if (k < 0) {\ - goto clear; \ - } \ - dev += k; \ - } while(0) - typedef wchar_t char_type; char space_char = L' '; char new_line_char = L'\n'; @@ -594,39 +552,38 @@ int wsnprintf_row(const fort_row_t *row, wchar_t *buffer, size_t buf_sz, size_t const char *R = &(*bord_chars)[RR_bip]; - int dev = 0; - int k = 0; + int written = 0; + int tmp = 0; size_t i = 0; for (i = 0; i < row_height; ++i) { /* Print left margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, context->table_options->entire_table_options.left_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, context->table_options->entire_table_options.left_margin, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, (char_type)*L)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, (char_type)*L)); size_t j = 0; for (j = 0; j < col_width_arr_sz; ++j) { ((context_t *)context)->column = j; if (j < cols_in_row) { fort_cell_t *cell = *(fort_cell_t **)vector_at(row->cells, j); - CHECK_RESULT_AND_MOVE_DEV(cell_printf_(cell, i, buffer + dev, col_width_arr[j] + 1, context)); + CHCK_RSLT_ADD_TO_WRITTEN(cell_printf_(cell, i, buffer + written, col_width_arr[j] + 1, context)); } else { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, col_width_arr[j], space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, col_width_arr[j], space_char)); } if (j == col_width_arr_sz - 1) { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, (char_type)*R)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, (char_type)*R)); } else { - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, (char_type)*IV)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, (char_type)*IV)); } } /* Print right margin */ - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, context->table_options->entire_table_options.right_margin, space_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, context->table_options->entire_table_options.right_margin, space_char)); - CHECK_RESULT_AND_MOVE_DEV(snprint_n_chars_(buffer + dev, buf_sz - dev, 1, new_line_char)); + CHCK_RSLT_ADD_TO_WRITTEN(snprint_n_chars_(buffer + written, buf_sz - written, 1, new_line_char)); } - return dev; + return written; clear: return -1; -#undef CHECK_RESULT_AND_MOVE_DEV }