Change Details
b2/boom.c |
18 | 18 | #include "lang.h" |
19 | 19 | #include "param.h" |
20 | 20 | #include "subex.h" |
| 21 | #include "db.h" |
21 | 22 | |
22 | 23 | |
23 | 24 | static struct param *vars = NULL, **last_var = &vars; |
| 25 | static int select_parts = 0; |
24 | 26 | |
25 | 27 | |
26 | 28 | static void add_var(const char *arg) |
... | ... | |
44 | 46 | { |
45 | 47 | struct param *out; |
46 | 48 | const struct param *var; |
| 49 | const struct part **parts, **p; |
47 | 50 | |
48 | 51 | 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); |
53 | 68 | } |
54 | | free_vars(out); |
55 | 69 | } |
56 | 70 | |
57 | 71 | |
... | ... | |
66 | 80 | " -p providers\n" |
67 | 81 | " -s substitutions\n" |
68 | 82 | " -q var=value ...\n" |
| 83 | " -Q var=value ...\n" |
69 | 84 | , name); |
70 | 85 | exit(1); |
71 | 86 | } |
... | ... | |
90 | 105 | process = parse_substitutions; |
91 | 106 | else if (!strcmp(argv[i], "-q")) |
92 | 107 | process = add_var; |
93 | | else |
| 108 | else if (!strcmp(argv[i], "-Q")) { |
| 109 | process = add_var; |
| 110 | select_parts = 1; |
| 111 | } else |
94 | 112 | usage(*argv); |
95 | 113 | } else { |
96 | 114 | process(argv[i]); |
Download the corresponding diff file