Annotation of embedaddon/rsync/mkproto.pl, revision 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>