return -EINVAL;
return cl->flags & SCOLS_FL_NOEXTREMES;
}
+/**
+ * scols_column_is_wrap:
+ * @cl: a pointer to a struct libscols_column instance
+ *
+ * Gets the value of @cl's flag wrap.
+ *
+ * Returns: wrap flag value, negative value in case of an error.
+ */
+int scols_column_is_wrap(struct libscols_column *cl)
+{
+ if (!cl)
+ return -EINVAL;
+ return cl->flags & SCOLS_FL_WRAP;
+}
SCOLS_FL_STRICTWIDTH = (1 << 3), /* don't reduce width if column is empty */
SCOLS_FL_NOEXTREMES = (1 << 4), /* ignore extreme fields when count column width*/
SCOLS_FL_HIDDEN = (1 << 5), /* maintain data, but don't print */
+ SCOLS_FL_WRAP = (1 << 6), /* wrap long cells across lines */
};
extern struct libscols_iter *scols_new_iter(int direction);
extern int scols_column_is_strict_width(struct libscols_column *cl);
extern int scols_column_is_hidden(struct libscols_column *cl);
extern int scols_column_is_noextremes(struct libscols_column *cl);
+extern int scols_column_is_wrap(struct libscols_column *cl);
extern int scols_column_set_flags(struct libscols_column *cl, int flags);
extern int scols_column_get_flags(struct libscols_column *cl);
SMARTCOLS_2.28 {
global:
+ scols_column_is_wrap;
scols_line_refer_column_data;
scols_line_set_column_data;
scols_table_enable_nowrap;
if (is_last_column(tb, cl)
&& len < width
&& !scols_table_is_maxout(tb)
- && !scols_column_is_right(cl))
+ && !scols_column_is_right(cl)
+ && !scols_column_is_wrap(cl))
width = len;
/* truncate data */
if (color)
fputs(UL_COLOR_RESET, tb->out);
len = width;
+ } else if (scols_column_is_wrap(cl)) {
+ char *p = data;
+
+ while (*p) {
+ fprintf(tb->out, "%.*s", (int) width, p);
+ p += width;
+ if (*p)
+ for (i = 0; i < cl->seqnum; i++)
+ print_empty_cell (tb, scols_table_get_column(tb, i),
+ NULL, buf->bufsz);
+ }
} else if (color) {
char *p = data;
size_t art = buffer_get_safe_art_size(buf);