]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libsmartcols: use symbols for title wrap
authorIgor Gnatenko <i.gnatenko.brain@gmail.com>
Thu, 21 Jan 2016 16:09:16 +0000 (17:09 +0100)
committerIgor Gnatenko <i.gnatenko.brain@gmail.com>
Thu, 21 Jan 2016 16:09:16 +0000 (17:09 +0100)
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
libsmartcols/src/libsmartcols.h.in
libsmartcols/src/libsmartcols.sym
libsmartcols/src/smartcolsP.h
libsmartcols/src/symbols.c
libsmartcols/src/table.c
libsmartcols/src/table_print.c

index 236475a394382ddafd32384b3a51d8b65d00e9da..70f5df9eaa15840c0d93ad5b282eb93f5cef705a 100644 (file)
@@ -115,6 +115,7 @@ extern struct libscols_symbols *scols_copy_symbols(const struct libscols_symbols
 extern int scols_symbols_set_branch(struct libscols_symbols *sb, const char *str);
 extern int scols_symbols_set_vertical(struct libscols_symbols *sb, const char *str);
 extern int scols_symbols_set_right(struct libscols_symbols *sb, const char *str);
+extern int scols_symbols_set_title_wrap(struct libscols_symbols *sb, const char *str);
 
 /* cell.c */
 extern int scols_reset_cell(struct libscols_cell *ce);
index 18eb5fc2695d29a960c7a50b404882fbfe4d9103..3923c9db1d82725ea94641b9c469d49ca3324519 100644 (file)
@@ -126,6 +126,7 @@ SMARTCOLS_2.28 {
 global:
        scols_line_refer_column_data;
        scols_line_set_column_data;
+       scols_symbols_set_title_wrap;
        scols_table_enable_nowrap;
        scols_table_set_title;
 } SMARTCOLS_2.27;
index 2e6673aa035d10aa0b21719c03a876aa159f2cf0..68a2a2eae557f8a0f3acdfcc10505d4fb8dfb296 100644 (file)
@@ -52,6 +52,7 @@ struct libscols_symbols {
        char    *branch;
        char    *vert;
        char    *right;
+       char    *title_wrap;
 };
 
 /*
index c19df0255bafcd65c7f2f0cb1c66631a676006a6..dfe2ba7b6c1d8b6c37584c1107958e550e90425f 100644 (file)
@@ -2,6 +2,7 @@
  * symbols.c - routines for symbol handling
  *
  * Copyright (C) 2014 Ondrej Oprala <ooprala@redhat.com>
+ * Copyright (C) 2016 Igor Gnatenko <i.gnatenko.brain@gmail.com>
  *
  * This file may be redistributed under the terms of the
  * GNU Lesser General Public License.
@@ -61,6 +62,7 @@ void scols_unref_symbols(struct libscols_symbols *sy)
                free(sy->branch);
                free(sy->vert);
                free(sy->right);
+               free(sy->title_wrap);
                free(sy);
        }
 }
@@ -140,6 +142,31 @@ int scols_symbols_set_right(struct libscols_symbols *sb, const char *str)
        return 0;
 }
 
+/**
+ * scols_symbols_set_title_wrap:
+ * @sb: a pointer to a struct libscols_symbols instance
+ * @str: a string which will represent the symbols which wraps title output
+ *
+ * Returns: 0, a negative value in case of an error.
+ */
+int scols_symbols_set_title_wrap(struct libscols_symbols *sb, const char *str)
+{
+       char *p = NULL;
+
+       assert(sb);
+
+       if (!sb)
+               return -EINVAL;
+       if (str) {
+               p = strdup(str);
+               if (!p)
+                       return -ENOMEM;
+       }
+       free(sb->title_wrap);
+       sb->title_wrap = p;
+       return 0;
+}
+
 /**
  * scols_copy_symbols:
  * @sb: a pointer to a struct libscols_symbols instance
@@ -164,6 +191,8 @@ struct libscols_symbols *scols_copy_symbols(const struct libscols_symbols *sb)
                rc = scols_symbols_set_vertical(ret, sb->vert);
        if (!rc)
                rc = scols_symbols_set_right(ret, sb->right);
+       if (!rc)
+               rc = scols_symbols_set_title_wrap(ret, sb->title_wrap);
        if (!rc)
                return ret;
 
@@ -171,5 +200,3 @@ struct libscols_symbols *scols_copy_symbols(const struct libscols_symbols *sb)
        return NULL;
 
 }
-
-
index b8221f954bcc54ae897b60d3bceee97f14c3b61a..57f6ed5153097e6bdff9661fa24dd5e7a0265684 100644 (file)
@@ -737,6 +737,7 @@ int scols_table_set_symbols(struct libscols_table *tb,
                        scols_symbols_set_vertical(tb->symbols, "| ");
                        scols_symbols_set_right(tb->symbols, "`-");
                }
+               scols_symbols_set_title_wrap(tb->symbols, " ");
        }
 
        return 0;
index 2a42c23b0f474583d8db478dc60f4f8dab8e740f..a0fc68a99f48f644f25d16f88389131bd8b51ff6 100644 (file)
@@ -567,23 +567,23 @@ static void print_title(struct libscols_table *tb)
                fputs(tb->title, tb->out);
 
                for (i = len; i < tb->termwidth; i++)
-                       fputs(" ", tb->out);
+                       fputs(tb->symbols->title_wrap, tb->out);
 
                break;
        case SCOLS_TITLE_CENTER:
                for (i = 0; i <= (tb->termwidth - len) / 2; i++)
-                       fputs(" ", tb->out);
+                       fputs(tb->symbols->title_wrap, tb->out);
 
                fputs(tb->title, tb->out);
                i += len;
 
                for (; i < tb->termwidth; i++)
-                       fputs(" ", tb->out);
+                       fputs(tb->symbols->title_wrap, tb->out);
 
                break;
        case SCOLS_TITLE_RIGHT:
                for (i = 0; i < tb->termwidth - len; i++)
-                       fputs(" ", tb->out);
+                       fputs(tb->symbols->title_wrap, tb->out);
 
                fputs(tb->title, tb->out);