mkproto.pl
来自「Rsync 3.0.5 source code」· PL 代码 · 共 49 行
PL
49 行
# generate prototypes for rsync$old_protos = '';if (open(IN, 'proto.h')) { $old_protos = join('', <IN>); close IN;}%FN_MAP = ( BOOL => 'BOOL ', CHAR => 'char ', INTEGER => 'int ', STRING => 'char *',);$inheader = 0;$protos = qq|/* This file is automatically generated with "make proto". DO NOT EDIT */\n\n|;while (<>) { if ($inheader) { if (/[)][ \t]*$/) { $inheader = 0; s/$/;/; } $protos .= $_; } elsif (/^FN_(LOCAL|GLOBAL)_([^(]+)\(([^,()]+)/) { $ret = $FN_MAP{$2}; $func = $3; $arg = $1 eq 'LOCAL' ? 'int module_id' : 'void'; $protos .= "$ret$func($arg);\n"; } elsif (/^static|^extern/ || /[;]/ || !/^[A-Za-z][A-Za-z0-9_]* /) { ; } elsif (/[(].*[)][ \t]*$/) { s/$/;/; $protos .= $_; } elsif (/[(]/) { $inheader = 1; $protos .= $_; }}if ($old_protos ne $protos) { open(OUT, '>proto.h') or die $!; print OUT $protos; close OUT;}open(OUT, '>proto.h-tstamp') and close OUT;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?