| Line | |
|---|
| 1 | #!/usr/local/bin/perl
|
|---|
| 2 |
|
|---|
| 3 | ($iam = $0) =~ s%.*/%%;
|
|---|
| 4 | $tmp = "$iam.$$";
|
|---|
| 5 | open (CODE,">$tmp.c") || die "$iam: cannot create $tmp.c: $!\n";
|
|---|
| 6 |
|
|---|
| 7 | $mask = q/printf ("$sizeof{'%s'} = %d;\n"/;
|
|---|
| 8 |
|
|---|
| 9 | # write C program
|
|---|
| 10 | select(CODE);
|
|---|
| 11 |
|
|---|
| 12 | print <<EO_C_PROGRAM;
|
|---|
| 13 | #include <sys/param.h>
|
|---|
| 14 | #include <sys/types.h>
|
|---|
| 15 | #include <sys/socket.h>
|
|---|
| 16 | #include <net/if_arp.h>
|
|---|
| 17 | #include <net/if.h>
|
|---|
| 18 | #include <net/route.h>
|
|---|
| 19 | #include <sys/ioctl.h>
|
|---|
| 20 |
|
|---|
| 21 | main() {
|
|---|
| 22 | EO_C_PROGRAM
|
|---|
| 23 |
|
|---|
| 24 | while ( <> ) {
|
|---|
| 25 | chop;
|
|---|
| 26 | printf "\t%s, \n\t\t\"%s\", sizeof(%s));\n", $mask, $_,$_;
|
|---|
| 27 | }
|
|---|
| 28 |
|
|---|
| 29 | print "\n}\n";
|
|---|
| 30 |
|
|---|
| 31 | close CODE;
|
|---|
| 32 |
|
|---|
| 33 | # compile C program
|
|---|
| 34 |
|
|---|
| 35 | select(STDOUT);
|
|---|
| 36 |
|
|---|
| 37 | system "cc $tmp.c -o $tmp";
|
|---|
| 38 | die "couldn't compile $tmp.c" if $?;
|
|---|
| 39 | system "./$tmp";
|
|---|
| 40 | die "couldn't run $tmp" if $?;
|
|---|
| 41 |
|
|---|
| 42 | unlink "$tmp.c", $tmp;
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.