1 # awk script to extract a config-specific .symlist file from a merged file.
2 # This must be passed run with awk -v config=TUPLE to specify the configuration
3 # tuple we will match. The merged file contains stanzas in the form:
5 # | GLIBC_x.y.z regexp...
6 # | GLIBC_m.n regexp...
9 # Each regexp is matched against TUPLE, and only matching stanzas go
10 # into the output, with the regexp list removed. Multiple version lines
11 # can match with the same regexp, meaning the stanza is duplicated in
12 # multiple version sets. The result matches the original .symlist file
13 # from abilist.awk that was fed into merge-abilist.awk.
22 for (version in current
) {
23 if (version in versions
)
24 versions
[version
] = versions
[version
] "\n" $
0;
26 versions
[version
] = $
0;
34 if (second
&& inside
) {
35 printf "%s:%d: bad input line inside stanza: %s\n", FILENAME, FNR, $
0;
40 for (i = second ?
3 : 2; i
<=
NF; ++i
) {
42 if (match(config
, regex
) != 0) {
43 if (!second
|| ignore
)
46 current
[second ? $
2 : $
1] =
1;
59 for (version in versions
) {
65 split(verslist
, s
, "\n");
68 for (i =
1; i
<= nverslist
; ++i
) {
69 verslist = verslist
"\n" s
[i
];
74 for (i =
2; i
<= nverslist
; ++i
) {
75 if (version
< s
[i
]) break;
76 verslist = verslist
"\n" s
[i
];
78 verslist = verslist
"\n" version
;
79 for (; i
<= nverslist
; ++i
) {
80 verslist = verslist
"\n" s
[i
];
86 split(verslist
, order
, "\n");
87 for (i =
1; i
<= nverslist
; ++i
) {
92 print versions
[version
] | outpipe
;
95 if (version == lastversion
)