if (!itr)
err(EXIT_FAILURE, "failed to allocate iterator");
- while (scols_filter_next_name(fltr, itr, &name) == 0) {
+ while (scols_filter_next_holder(fltr, itr, &name, 0) == 0) {
struct libscols_column *col =
scols_table_get_column_by_name(tb, name);
if (!col) {
return fltr ? fltr->errmsg : NULL;
}
-int scols_filter_next_name(struct libscols_filter *fltr,
- struct libscols_iter *itr, const char **name)
+int scols_filter_next_holder(struct libscols_filter *fltr,
+ struct libscols_iter *itr,
+ const char **name,
+ int type)
{
struct filter_param *prm = NULL;
int rc = 0;
*name = NULL;
+ if (!type)
+ type = F_HOLDER_COLUMN; /* default */
do {
rc = filter_next_param(fltr, itr, &prm);
- if (rc == 0 && prm->holder == F_HOLDER_COLUMN)
+ if (rc == 0 && (int) prm->holder == type) {
*name = prm->val.str;
+ }
} while (rc == 0 && !*name);
return rc;
extern int scols_line_apply_filter(struct libscols_line *ln,
struct libscols_filter *fltr, int *status);
-extern int scols_filter_next_name(struct libscols_filter *fltr,
- struct libscols_iter *itr, const char **name);
+extern int scols_filter_next_holder(struct libscols_filter *fltr,
+ struct libscols_iter *itr, const char **name, int type);
extern int scols_filter_assign_column(struct libscols_filter *fltr,
const char *name, struct libscols_column *col);
scols_new_filter;
scols_unref_filter;
scols_filter_get_errmsg;
- scols_filter_next_name;
+ scols_filter_next_holder;
scols_filter_assign_column;
scols_line_apply_filter;
} SMARTCOLS_2.39;