1: #! /usr/local/perl-5.8.8/bin/perl -w
2:
3: $found = 0;
4: $last = 0;
5: $debug = 0;
6:
7: while (<>) {
8: next if /^#/;
9: next if /^\s*$/;
10: if (/^struct req_pkt/) {
11: $found = 1;
12: }
13: if (/^struct info_dns_assoc/) {
14: $last = 1;
15: }
16: if ($found) {
17: if (/^(struct\s*\w*)\s*{\s*$/) {
18: $type = $1;
19: print STDERR "type = '$type'\n" if $debug;
20: printf " printf(\"sizeof($type) = %%d\\n\", \n\t (int) sizeof($type));\n";
21: next;
22: }
23: if (/\s*\w+\s+(\w*)\s*(\[.*\])?\s*;\s*$/) {
24: $field = $1;
25: print STDERR "\tfield = '$field'\n" if $debug;
26: printf " printf(\"offsetof($field) = %%d\\n\", \n\t (int) offsetof($type, $field));\n";
27: next;
28: }
29: if (/^}\s*;\s*$/) {
30: printf " printf(\"\\n\");\n\n";
31: $found = 0 if $last;
32: next;
33: }
34: print STDERR "Unmatched line: $_";
35: exit 1;
36: }
37: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>