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>