]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/ntp/ntpdc/nl.pl
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / ntp / ntpdc / nl.pl
1 #! /usr/local/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 }