[PATCH 02/16] Add display_columns() to display in column layout
Currently it does not do that, just provide the API.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
Makefile | 3 ++-
column.c | 31 +++++++++++++++++++++++++++++++
column.h | 4 ++++
3 files changed, 37 insertions(+), 1 deletions(-)
create mode 100644 column.c
diff --git a/Makefile b/Makefile
index ed9e94b..88e20de 100644
--- a/Makefile
+++ b/Makefile
@@ -575,6 +575,7 @@ LIB_OBJS += branch.o
LIB_OBJS += bundle.o
LIB_OBJS += cache-tree.o
LIB_OBJS += color.o
+LIB_OBJS += column.o
LIB_OBJS += combine-diff.o
LIB_OBJS += commit.o
LIB_OBJS += config.o
@@ -1956,7 +1957,7 @@ builtin/prune.o builtin/reflog.o reachable.o: reachable.h
builtin/commit.o builtin/revert.o wt-status.o: wt-status.h
builtin/tar-tree.o archive-tar.o: tar.h
connect.o transport.o http-backend.o: url.h
-pager.o help.o: column.h
+column.o pager.o help.o: column.h
http-fetch.o http-walker.o remote-curl.o transport.o walker.o: walker.h
http.o http-walker.o http-push.o http-fetch.o remote-curl.o: http.h url.h
diff --git a/column.c b/column.c
new file mode 100644
index 0000000..c7d9a84
--- /dev/null
+++ b/column.c
@@ -0,0 +1,31 @@
+#include "cache.h"
+#include "column.h"
+#include "string-list.h"
+
+#define MODE(mode) ((mode) & COL_MODE)
+
+/* Display without layout, COL_MODE_PLAIN */
+static void display_plain(const struct string_list *list, const char *indent)
+{
+ int i;
+
+ for (i = 0; i < list->nr; i++)
+ printf("%s%s\n", indent, list->items[i].string);
+}
+
+void display_columns(const struct string_list *list, int mode, int width, int padding, const char *indent)
+{
+ int real_mode = MODE(mode);
+ if (!indent)
+ indent = "";
+ if (width <= 1)
+ real_mode = COL_MODE_PLAIN;
+ switch (real_mode) {
+ case COL_MODE_PLAIN:
+ display_plain(list, indent);
+ break;
+
+ default:
+ die("BUG: invalid mode %d", MODE(mode));
+ }
+}
diff --git a/column.h b/column.h
index 55d8067..da0bf9a 100644
--- a/column.h
+++ b/column.h
@@ -1,6 +1,10 @@
#ifndef COLUMN_H
#define COLUMN_H
+#define COL_MODE 0x000F
+#define COL_MODE_PLAIN 0 /* Single column */
+
extern int term_columns(void);
+extern void display_columns(const struct string_list *list, int mode, int width, int padding, const char *indent);
#endif
--
1.7.2.2