void smp_dump_fetch_kw(void)
{
struct sample_fetch_kw_list *kwl;
- struct sample_fetch *kw;
+ struct sample_fetch *kwp, *kw;
uint64_t mask;
int index;
int arg;
printf(" %s\n", (bit < SMP_CKP_ENTRIES) ? fetch_ckp_names[bit] : "");
}
- list_for_each_entry(kwl, &sample_fetches.list, list) {
- for (index = 0; kwl->kw[index].kw != NULL; index++) {
- kw = &kwl->kw[index];
-
- printf("[ ");
- for (bit = 0; bit < SMP_CKP_ENTRIES; bit++)
- printf("%s", (kw->val & (1 << bit)) ? "Y " : ". ");
-
- printf("] %s", kw->kw);
- if (kw->arg_mask) {
- mask = kw->arg_mask >> ARGM_BITS;
- printf("(");
- for (arg = 0;
- arg < ARGM_NBARGS && ((mask >> (arg * ARGT_BITS)) & ARGT_MASK);
- arg++) {
- if (arg == (kw->arg_mask & ARGM_MASK)) {
- /* now dumping extra args */
- printf("[");
- }
- if (arg)
- printf(",");
- printf("%s", arg_type_names[(mask >> (arg * ARGT_BITS)) & ARGT_MASK]);
- }
- if (arg > (kw->arg_mask & ARGM_MASK)) {
- /* extra args were dumped */
- printf("]");
+ for (kw = kwp = NULL;; kwp = kw) {
+ list_for_each_entry(kwl, &sample_fetches.list, list) {
+ for (index = 0; kwl->kw[index].kw != NULL; index++) {
+ if (strordered(kwp ? kwp->kw : NULL,
+ kwl->kw[index].kw,
+ kw != kwp ? kw->kw : NULL))
+ kw = &kwl->kw[index];
+ }
+ }
+
+ if (kw == kwp)
+ break;
+
+ printf("[ ");
+ for (bit = 0; bit < SMP_CKP_ENTRIES; bit++)
+ printf("%s", (kw->val & (1 << bit)) ? "Y " : ". ");
+
+ printf("] %s", kw->kw);
+ if (kw->arg_mask) {
+ mask = kw->arg_mask >> ARGM_BITS;
+ printf("(");
+ for (arg = 0;
+ arg < ARGM_NBARGS && ((mask >> (arg * ARGT_BITS)) & ARGT_MASK);
+ arg++) {
+ if (arg == (kw->arg_mask & ARGM_MASK)) {
+ /* now dumping extra args */
+ printf("[");
}
- printf(")");
+ if (arg)
+ printf(",");
+ printf("%s", arg_type_names[(mask >> (arg * ARGT_BITS)) & ARGT_MASK]);
+ }
+ if (arg > (kw->arg_mask & ARGM_MASK)) {
+ /* extra args were dumped */
+ printf("]");
}
- printf(": %s", smp_to_type[kw->out_type]);
- printf("\n");
+ printf(")");
}
+ printf(": %s", smp_to_type[kw->out_type]);
+ printf("\n");
}
}
void smp_dump_conv_kw(void)
{
struct sample_conv_kw_list *kwl;
- struct sample_conv *kw;
+ struct sample_conv *kwp, *kw;
uint64_t mask;
int index;
int arg;
- list_for_each_entry(kwl, &sample_convs.list, list) {
- for (index = 0; kwl->kw[index].kw != NULL; index++) {
- kw = &kwl->kw[index];
- printf("%s", kw->kw);
- if (kw->arg_mask) {
- mask = kw->arg_mask >> ARGM_BITS;
- printf("(");
- for (arg = 0;
- arg < ARGM_NBARGS && ((mask >> (arg * ARGT_BITS)) & ARGT_MASK);
- arg++) {
- if (arg == (kw->arg_mask & ARGM_MASK)) {
- /* now dumping extra args */
- printf("[");
- }
- if (arg)
- printf(",");
- printf("%s", arg_type_names[(mask >> (arg * ARGT_BITS)) & ARGT_MASK]);
- }
- if (arg > (kw->arg_mask & ARGM_MASK)) {
- /* extra args were dumped */
- printf("]");
+ for (kw = kwp = NULL;; kwp = kw) {
+ list_for_each_entry(kwl, &sample_convs.list, list) {
+ for (index = 0; kwl->kw[index].kw != NULL; index++) {
+ if (strordered(kwp ? kwp->kw : NULL,
+ kwl->kw[index].kw,
+ kw != kwp ? kw->kw : NULL))
+ kw = &kwl->kw[index];
+ }
+ }
+
+ if (kw == kwp)
+ break;
+
+ printf("%s", kw->kw);
+ if (kw->arg_mask) {
+ mask = kw->arg_mask >> ARGM_BITS;
+ printf("(");
+ for (arg = 0;
+ arg < ARGM_NBARGS && ((mask >> (arg * ARGT_BITS)) & ARGT_MASK);
+ arg++) {
+ if (arg == (kw->arg_mask & ARGM_MASK)) {
+ /* now dumping extra args */
+ printf("[");
}
- printf(")");
+ if (arg)
+ printf(",");
+ printf("%s", arg_type_names[(mask >> (arg * ARGT_BITS)) & ARGT_MASK]);
+ }
+ if (arg > (kw->arg_mask & ARGM_MASK)) {
+ /* extra args were dumped */
+ printf("]");
}
- printf(": %s => %s", smp_to_type[kw->out_type], smp_to_type[kw->in_type]);
- printf("\n");
+ printf(")");
}
+ printf(": %s => %s", smp_to_type[kw->out_type], smp_to_type[kw->in_type]);
+ printf("\n");
}
}