format-table: add table_fill_empty() to fill in empty cells until the specified colum...
authorLennart Poettering <lennart@poettering.net>
Mon, 29 Jul 2019 16:38:13 +0000 (18:38 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 29 Jul 2019 16:48:28 +0000 (18:48 +0200)
src/shared/format-table.c
src/shared/format-table.h

index d2764ee..39fc805 100644 (file)
@@ -418,6 +418,27 @@ int table_add_cell_stringf(Table *t, TableCell **ret_cell, const char *format, .
         return table_add_cell(t, ret_cell, TABLE_STRING, buffer);
 }
 
+int table_fill_empty(Table *t, size_t until_column) {
+        int r;
+
+        assert(t);
+
+        /* Fill the rest of the current line with empty cells until we reach the specified column. Will add
+         * at least one cell. Pass 0 in order to fill a line to the end or insert an empty line. */
+
+        if (until_column >= t->n_columns)
+                return -EINVAL;
+
+        do {
+                r = table_add_cell(t, NULL, TABLE_EMPTY, NULL);
+                if (r < 0)
+                        return r;
+
+        } while ((t->n_cells % t->n_columns) != until_column);
+
+        return 0;
+}
+
 int table_dup_cell(Table *t, TableCell *cell) {
         size_t i;
 
index 8afb425..0942fd7 100644 (file)
@@ -59,6 +59,8 @@ static inline int table_add_cell(Table *t, TableCell **ret_cell, TableDataType t
 }
 int table_add_cell_stringf(Table *t, TableCell **ret_cell, const char *format, ...) _printf_(3, 4);
 
+int table_fill_empty(Table *t, size_t until_column);
+
 int table_dup_cell(Table *t, TableCell *cell);
 
 int table_set_minimum_width(Table *t, TableCell *cell, size_t minimum_width);