libsmartcols: custom wrap fixes

Reported-by: Igor Gnatenko <i.gnatenko.brain@gmail.com
Signed-off-by: Karel Zak <kzak@redhat.com>
This commit is contained in:
Karel Zak 2016-09-27 14:16:18 +02:00
parent 81b176c4da
commit 68a7f92b94
3 changed files with 6 additions and 8 deletions

View File

@ -72,6 +72,7 @@ void scols_unref_column(struct libscols_column *cl)
list_del(&cl->cl_columns); list_del(&cl->cl_columns);
scols_reset_cell(&cl->header); scols_reset_cell(&cl->header);
free(cl->color); free(cl->color);
free(cl->safechars);
free(cl->pending_data_buf); free(cl->pending_data_buf);
free(cl); free(cl);
} }
@ -176,7 +177,7 @@ int scols_column_set_flags(struct libscols_column *cl, int flags)
* *
* Returns: pointer to the table where columns is used * Returns: pointer to the table where columns is used
*/ */
struct libscols_table *scols_column_get_table(struct libscols_column *cl) struct libscols_table *scols_column_get_table(const struct libscols_column *cl)
{ {
return cl->table; return cl->table;
} }
@ -246,7 +247,7 @@ const char *scols_column_get_color(const struct libscols_column *cl)
* @data: string * @data: string
* @userdata: callback private data * @userdata: callback private data
* *
* This is build-in function for scols_column_set_wrapfunc(). This function * This is built-in function for scols_column_set_wrapfunc(). This function
* terminates the current chunk by \0 and returns pointer to the begin of * terminates the current chunk by \0 and returns pointer to the begin of
* the next chunk. The chunks are based on \n. * the next chunk. The chunks are based on \n.
* *
@ -379,10 +380,7 @@ int scols_column_set_wrapfunc(struct libscols_column *cl,
*/ */
int scols_column_set_safechars(struct libscols_column *cl, const char *safe) int scols_column_set_safechars(struct libscols_column *cl, const char *safe)
{ {
if (!cl) return strdup_to_struct_member(cl, safechars, safe);
return -EINVAL;
cl->safechars = safe;
return 0;
} }
/** /**

View File

@ -161,7 +161,7 @@ extern double scols_column_get_whint(const struct libscols_column *cl);
extern struct libscols_cell *scols_column_get_header(struct libscols_column *cl); extern struct libscols_cell *scols_column_get_header(struct libscols_column *cl);
extern int scols_column_set_color(struct libscols_column *cl, const char *color); extern int scols_column_set_color(struct libscols_column *cl, const char *color);
extern const char *scols_column_get_color(const struct libscols_column *cl); extern const char *scols_column_get_color(const struct libscols_column *cl);
extern struct libscols_table *scols_column_get_table(struct libscols_column *cl); extern struct libscols_table *scols_column_get_table(const struct libscols_column *cl);
extern int scols_column_set_cmpfunc(struct libscols_column *cl, extern int scols_column_set_cmpfunc(struct libscols_column *cl,
int (*cmp)(struct libscols_cell *a, int (*cmp)(struct libscols_cell *a,

View File

@ -85,6 +85,7 @@ struct libscols_column {
int flags; int flags;
int is_extreme; int is_extreme;
char *color; /* default column color */ char *color; /* default column color */
char *safechars; /* do not encode this bytes */
char *pending_data; char *pending_data;
size_t pending_data_sz; size_t pending_data_sz;
@ -101,7 +102,6 @@ struct libscols_column {
char *, void *); char *, void *);
void *wrapfunc_data; void *wrapfunc_data;
const char *safechars; /* do not encode this bytes */
struct libscols_cell header; struct libscols_cell header;
struct list_head cl_columns; struct list_head cl_columns;