Annotation of embedaddon/rsync/mkproto.pl, revision 1.1.1.1
1.1 misho 1: # generate prototypes for rsync
2:
3: $old_protos = '';
4: if (open(IN, 'proto.h')) {
5: $old_protos = join('', <IN>);
6: close IN;
7: }
8:
9: %FN_MAP = (
10: BOOL => 'BOOL ',
11: CHAR => 'char ',
12: INTEGER => 'int ',
13: STRING => 'char *',
14: );
15:
16: $inheader = 0;
17: $protos = qq|/* This file is automatically generated with "make proto". DO NOT EDIT */\n\n|;
18:
19: while (<>) {
20: if ($inheader) {
21: if (/[)][ \t]*$/) {
22: $inheader = 0;
23: s/$/;/;
24: }
25: $protos .= $_;
26: } elsif (/^FN_(LOCAL|GLOBAL)_([^(]+)\(([^,()]+)/) {
27: $ret = $FN_MAP{$2};
28: $func = $3;
29: $arg = $1 eq 'LOCAL' ? 'int module_id' : 'void';
30: $protos .= "$ret$func($arg);\n";
31: } elsif (/^static|^extern/ || /[;]/ || !/^[A-Za-z][A-Za-z0-9_]* /) {
32: ;
33: } elsif (/[(].*[)][ \t]*$/) {
34: s/$/;/;
35: $protos .= $_;
36: } elsif (/[(]/) {
37: $inheader = 1;
38: $protos .= $_;
39: }
40: }
41:
42: if ($old_protos ne $protos) {
43: open(OUT, '>proto.h') or die $!;
44: print OUT $protos;
45: close OUT;
46: }
47:
48: open(OUT, '>proto.h-tstamp') and close OUT;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>