Date:2012-05-22 02:20:23 (11 years 10 months ago)
Author:Werner Almesberger
Commit:256a096220cf4eb4d5404c0e4c79fefc433dd089
Message:b2/boom.c: add parametric part selection (with option -Q)

Files: b2/boom.c (4 diffs)

Change Details

b2/boom.c
1818#include "lang.h"
1919#include "param.h"
2020#include "subex.h"
21#include "db.h"
2122
2223
2324static struct param *vars = NULL, **last_var = &vars;
25static int select_parts = 0;
2426
2527
2628static void add_var(const char *arg)
...... 
4446{
4547    struct param *out;
4648    const struct param *var;
49    const struct part **parts, **p;
4750
4851    out = substitute(substitutions, vars);
49    for (var = out; var; var = var->next) {
50        printf("%s", var->u.name);
51        dump_relop(stdout, var->op);
52        printf("%s\n", var->value.u.s);
52    if (select_parts) {
53        parts = select_parametric(out, &hierarchy);
54        if (!parts) {
55            fprintf(stderr, "no matches\n");
56        } else {
57            for (p = parts; *p; p++)
58                printf("%s %s\n", (*p)->domain, (*p)->name);
59            free(parts);
60        }
61    } else {
62        for (var = out; var; var = var->next) {
63            printf("%s", var->u.name);
64            dump_relop(stdout, var->op);
65            printf("%s\n", var->value.u.s);
66        }
67        free_vars(out);
5368    }
54    free_vars(out);
5569}
5670
5771
...... 
6680" -p providers\n"
6781" -s substitutions\n"
6882" -q var=value ...\n"
83" -Q var=value ...\n"
6984    , name);
7085    exit(1);
7186}
...... 
90105                process = parse_substitutions;
91106            else if (!strcmp(argv[i], "-q"))
92107                process = add_var;
93            else
108            else if (!strcmp(argv[i], "-Q")) {
109                process = add_var;
110                select_parts = 1;
111            } else
94112                usage(*argv);
95113        } else {
96114            process(argv[i]);

Archive Download the corresponding diff file

Branches:
master



interactive