]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
analyze: optimize table creation by using table_add_many()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 10 Jan 2020 09:23:21 +0000 (18:23 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 10 Jan 2020 09:28:09 +0000 (18:28 +0900)
src/analyze/analyze-security.c
src/analyze/analyze.c

index 20c140139006fe04e8b37abeca890f8f5ac7c392..7fa17c99f52e0123d8344419f929dc02dd4f3564 100644 (file)
@@ -1484,7 +1484,6 @@ static int assess(const struct security_info *info, Table *overview_table, Analy
 
                 if (details_table) {
                         const char *checkmark, *description, *color = NULL;
-                        TableCell *cell;
 
                         if (badness == UINT64_MAX) {
                                 checkmark = " ";
@@ -1507,13 +1506,12 @@ static int assess(const struct security_info *info, Table *overview_table, Analy
                         if (d)
                                 description = d;
 
-                        r = table_add_cell_full(details_table, &cell, TABLE_STRING, checkmark, 1, 1, 0, 0, 0);
-                        if (r < 0)
-                                return log_error_errno(r, "Failed to add cell to table: %m");
-                        if (color)
-                                (void) table_set_color(details_table, cell, color);
-
                         r = table_add_many(details_table,
+                                           TABLE_STRING, checkmark,
+                                           TABLE_SET_MINIMUM_WIDTH, 1,
+                                           TABLE_SET_MAXIMUM_WIDTH, 1,
+                                           TABLE_SET_ELLIPSIZE_PERCENT, 0,
+                                           TABLE_SET_COLOR, color,
                                            TABLE_STRING, a->id, TABLE_SET_URL, a->url,
                                            TABLE_STRING, description,
                                            TABLE_UINT64, a->weight, TABLE_SET_ALIGN_PERCENT, 100,
@@ -1521,7 +1519,7 @@ static int assess(const struct security_info *info, Table *overview_table, Analy
                                            TABLE_UINT64, a->range, TABLE_SET_ALIGN_PERCENT, 100,
                                            TABLE_EMPTY, TABLE_SET_ALIGN_PERCENT, 100);
                         if (r < 0)
-                                return log_error_errno(r, "Failed to add cells to table: %m");
+                                return table_log_add_error(r);
                 }
         }
 
@@ -1597,35 +1595,26 @@ static int assess(const struct security_info *info, Table *overview_table, Analy
 
         if (overview_table) {
                 char buf[DECIMAL_STR_MAX(uint64_t) + 1 + DECIMAL_STR_MAX(uint64_t) + 1];
-                TableCell *cell;
+                _cleanup_free_ char *url = NULL;
 
-                r = table_add_cell(overview_table, &cell, TABLE_STRING, info->id);
-                if (r < 0)
-                        return log_error_errno(r, "Failed to add cell to table: %m");
                 if (info->fragment_path) {
-                        _cleanup_free_ char *url = NULL;
-
                         r = file_url_from_path(info->fragment_path, &url);
                         if (r < 0)
                                 return log_error_errno(r, "Failed to generate URL from path: %m");
-
-                        (void) table_set_url(overview_table, cell, url);
                 }
 
                 xsprintf(buf, "%" PRIu64 ".%" PRIu64, exposure / 10, exposure % 10);
-                r = table_add_cell(overview_table, &cell, TABLE_STRING, buf);
-                if (r < 0)
-                        return log_error_errno(r, "Failed to add cell to table: %m");
-                (void) table_set_align_percent(overview_table, cell, 100);
-
-                r = table_add_cell(overview_table, &cell, TABLE_STRING, badness_table[i].name);
-                if (r < 0)
-                        return log_error_errno(r, "Failed to add cell to table: %m");
-                (void) table_set_color(overview_table, cell, strempty(badness_table[i].color));
 
-                r = table_add_cell(overview_table, NULL, TABLE_STRING, special_glyph(badness_table[i].smiley));
+                r = table_add_many(overview_table,
+                                   TABLE_STRING, info->id,
+                                   TABLE_SET_URL, url,
+                                   TABLE_STRING, buf,
+                                   TABLE_SET_ALIGN_PERCENT, 100,
+                                   TABLE_STRING, badness_table[i].name,
+                                   TABLE_SET_COLOR, strempty(badness_table[i].color),
+                                   TABLE_STRING, special_glyph(badness_table[i].smiley));
                 if (r < 0)
-                        return log_error_errno(r, "Failed to add cell to table: %m");
+                        return table_log_add_error(r);
         }
 
         return 0;
index 991e61de7e7ff99a90fbc4bd60205379717ed85f..703a501ae6849ae208068873f49e710693465bd1 100644 (file)
@@ -1113,13 +1113,11 @@ static int analyze_blame(int argc, char *argv[], void *userdata) {
                 if (u->time <= 0)
                         continue;
 
-                r = table_add_cell(table, NULL, TABLE_TIMESPAN_MSEC, &u->time);
+                r = table_add_many(table,
+                                   TABLE_TIMESPAN_MSEC, &u->time,
+                                   TABLE_STRING, u->name);
                 if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, NULL, TABLE_STRING, u->name);
-                if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
         }
 
         (void) pager_open(arg_pager_flags);
@@ -1630,7 +1628,7 @@ static int dump_exit_status(int argc, char *argv[], void *userdata) {
                                            TABLE_INT, (int) i,
                                            TABLE_STRING, exit_status_class(i));
                         if (r < 0)
-                                return r;
+                                return table_log_add_error(r);
                 }
         else
                 for (int i = 1; i < argc; i++) {
@@ -1646,7 +1644,7 @@ static int dump_exit_status(int argc, char *argv[], void *userdata) {
                                            TABLE_INT, status,
                                            TABLE_STRING, exit_status_class(status) ?: "-");
                         if (r < 0)
-                                return r;
+                                return table_log_add_error(r);
                 }
 
         (void) pager_open(arg_pager_flags);
@@ -1853,33 +1851,23 @@ static int dump_timespan(int argc, char *argv[], void *userdata) {
                 if (r < 0)
                         return r;
 
-                r = table_add_cell(table, NULL, TABLE_STRING, "Original:");
+                r = table_add_many(table,
+                                   TABLE_STRING, "Original:",
+                                   TABLE_STRING, *input_timespan);
                 if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, NULL, TABLE_STRING, *input_timespan);
-                if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
 
                 r = table_add_cell_stringf(table, NULL, "%ss:", special_glyph(SPECIAL_GLYPH_MU));
                 if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, NULL, TABLE_UINT64, &output_usecs);
-                if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, NULL, TABLE_STRING, "Human:");
-                if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
 
-                r = table_add_cell(table, &cell, TABLE_TIMESPAN, &output_usecs);
+                r = table_add_many(table,
+                                   TABLE_UINT64, &output_usecs,
+                                   TABLE_STRING, "Human:",
+                                   TABLE_TIMESPAN, &output_usecs,
+                                   TABLE_SET_COLOR, ansi_highlight());
                 if (r < 0)
-                        return r;
-
-                r = table_set_color(table, cell, ansi_highlight());
-                if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
 
                 r = table_print(table, NULL);
                 if (r < 0)
@@ -1925,57 +1913,42 @@ static int test_timestamp_one(const char *p) {
         if (r < 0)
                 return r;
 
-        r = table_add_cell(table, NULL, TABLE_STRING, "Original form:");
-        if (r < 0)
-                return r;
-
-        r = table_add_cell(table, NULL, TABLE_STRING, p);
-        if (r < 0)
-                return r;
-
-        r = table_add_cell(table, NULL, TABLE_STRING, "Normalized form:");
+        r = table_add_many(table,
+                           TABLE_STRING, "Original form:",
+                           TABLE_STRING, p,
+                           TABLE_STRING, "Normalized form:",
+                           TABLE_TIMESTAMP, &usec,
+                           TABLE_SET_COLOR, ansi_highlight_blue());
         if (r < 0)
-                return r;
-
-        r = table_add_cell(table, &cell, TABLE_TIMESTAMP, &usec);
-        if (r < 0)
-                return r;
-
-        r = table_set_color(table, cell, ansi_highlight_blue());
-        if (r < 0)
-                return r;
+                return table_log_add_error(r);
 
         if (!in_utc_timezone()) {
-                r = table_add_cell(table, NULL, TABLE_STRING, "(in UTC):");
+                r = table_add_many(table,
+                                   TABLE_STRING, "(in UTC):",
+                                   TABLE_TIMESTAMP_UTC, &usec);
                 if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, &cell, TABLE_TIMESTAMP_UTC, &usec);
-                if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
         }
 
         r = table_add_cell(table, NULL, TABLE_STRING, "UNIX seconds:");
         if (r < 0)
-                return r;
+                return table_log_add_error(r);
 
         if (usec % USEC_PER_SEC == 0)
-                r = table_add_cell_stringf(table, &cell, "@%"PRI_USEC,
+                r = table_add_cell_stringf(table, NULL, "@%"PRI_USEC,
                                            usec / USEC_PER_SEC);
         else
-                r = table_add_cell_stringf(table, &cell, "@%"PRI_USEC".%06"PRI_USEC"",
+                r = table_add_cell_stringf(table, NULL, "@%"PRI_USEC".%06"PRI_USEC"",
                                            usec / USEC_PER_SEC,
                                            usec % USEC_PER_SEC);
         if (r < 0)
                 return r;
 
-        r = table_add_cell(table, NULL, TABLE_STRING, "From now:");
+        r = table_add_many(table,
+                           TABLE_STRING, "From now:",
+                           TABLE_TIMESTAMP_RELATIVE, &usec);
         if (r < 0)
-                return r;
-
-        r = table_add_cell(table, &cell, TABLE_TIMESTAMP_RELATIVE, &usec);
-        if (r < 0)
-                return r;
+                return table_log_add_error(r);
 
         return table_print(table, NULL);
 }
@@ -2035,22 +2008,18 @@ static int test_calendar_one(usec_t n, const char *p) {
                 return r;
 
         if (!streq(t, p)) {
-                r = table_add_cell(table, NULL, TABLE_STRING, "Original form:");
-                if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, NULL, TABLE_STRING, p);
+                r = table_add_many(table,
+                                   TABLE_STRING, "Original form:",
+                                   TABLE_STRING, p);
                 if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
         }
 
-        r = table_add_cell(table, NULL, TABLE_STRING, "Normalized form:");
-        if (r < 0)
-                return r;
-
-        r = table_add_cell(table, NULL, TABLE_STRING, t);
+        r = table_add_many(table,
+                           TABLE_STRING, "Normalized form:",
+                           TABLE_STRING, t);
         if (r < 0)
-                return r;
+                return table_log_add_error(r);
 
         for (unsigned i = 0; i < arg_iterations; i++) {
                 usec_t next;
@@ -2058,17 +2027,12 @@ static int test_calendar_one(usec_t n, const char *p) {
                 r = calendar_spec_next_usec(spec, n, &next);
                 if (r == -ENOENT) {
                         if (i == 0) {
-                                r = table_add_cell(table, NULL, TABLE_STRING, "Next elapse:");
-                                if (r < 0)
-                                        return r;
-
-                                r = table_add_cell(table, &cell, TABLE_STRING, "never");
-                                if (r < 0)
-                                        return r;
-
-                                r = table_set_color(table, cell, ansi_highlight_yellow());
+                                r = table_add_many(table,
+                                                   TABLE_STRING, "Next elapse:",
+                                                   TABLE_STRING, "never",
+                                                   TABLE_SET_COLOR, ansi_highlight_yellow());
                                 if (r < 0)
-                                        return r;
+                                        return table_log_add_error(r);
                         }
                         break;
                 }
@@ -2076,17 +2040,12 @@ static int test_calendar_one(usec_t n, const char *p) {
                         return log_error_errno(r, "Failed to determine next elapse for '%s': %m", p);
 
                 if (i == 0) {
-                        r = table_add_cell(table, NULL, TABLE_STRING, "Next elapse:");
-                        if (r < 0)
-                                return r;
-
-                        r = table_add_cell(table, &cell, TABLE_TIMESTAMP, &next);
-                        if (r < 0)
-                                return r;
-
-                        r = table_set_color(table, cell, ansi_highlight_blue());
+                        r = table_add_many(table,
+                                           TABLE_STRING, "Next elapse:",
+                                           TABLE_TIMESTAMP, &next,
+                                           TABLE_SET_COLOR, ansi_highlight_blue());
                         if (r < 0)
-                                return r;
+                                return table_log_add_error(r);
                 } else {
                         int k = DECIMAL_STR_WIDTH(i + 1);
 
@@ -2097,34 +2056,28 @@ static int test_calendar_one(usec_t n, const char *p) {
 
                         r = table_add_cell_stringf(table, NULL, "Iter. #%u:", i+1);
                         if (r < 0)
-                                return r;
-
-                        r = table_add_cell(table, &cell, TABLE_TIMESTAMP, &next);
-                        if (r < 0)
-                                return r;
+                                return table_log_add_error(r);
 
-                        r = table_set_color(table, cell, ansi_highlight_blue());
+                        r = table_add_many(table,
+                                           TABLE_TIMESTAMP, &next,
+                                           TABLE_SET_COLOR, ansi_highlight_blue());
                         if (r < 0)
-                                return r;
+                                return table_log_add_error(r);
                 }
 
                 if (!in_utc_timezone()) {
-                        r = table_add_cell(table, NULL, TABLE_STRING, "(in UTC):");
-                        if (r < 0)
-                                return r;
-
-                        r = table_add_cell(table, NULL, TABLE_TIMESTAMP_UTC, &next);
+                        r = table_add_many(table,
+                                           TABLE_STRING, "(in UTC):",
+                                           TABLE_TIMESTAMP_UTC, &next);
                         if (r < 0)
-                                return r;
+                                return table_log_add_error(r);
                 }
 
-                r = table_add_cell(table, NULL, TABLE_STRING, "From now:");
+                r = table_add_many(table,
+                                   TABLE_STRING, "From now:",
+                                   TABLE_TIMESTAMP_RELATIVE, &next);
                 if (r < 0)
-                        return r;
-
-                r = table_add_cell(table, NULL, TABLE_TIMESTAMP_RELATIVE, &next);
-                if (r < 0)
-                        return r;
+                        return table_log_add_error(r);
 
                 n = next;
         }