📄 muck
字号:
#!../perl$M = '-M';$M = '-m' if -d '/usr/uts' && -f '/etc/master';do 'getopt.pl';do Getopt('f');if ($opt_f) { $makefile = $opt_f;}elsif (-f 'makefile') { $makefile = 'makefile';}elsif (-f 'Makefile') { $makefile = 'Makefile';}else { die "No makefile\n";}$MF = 'mf00';while(($key,$val) = each(ENV)) { $mac{$key} = $val;}do scan($makefile);$co = $action{'.c.o'};$co = ' ' unless $co;$missing = "Missing dependencies:\n";foreach $key (sort keys(o)) { if ($oc{$key}) { $src = $oc{$key}; $action = $action{$key}; } else { $action = ''; } if (!$action) { if ($co && ($c = $key) =~ s/\.o$/.c/ && -f $c) { $src = $c; $action = $co; } else { print "No source found for $key $c\n"; next; } } $I = ''; $D = ''; $I .= $1 while $action =~ s/(-I\S+\s*)//; $D .= $1 . ' ' while $action =~ s/(-D\w+)//; if ($opt_v) { $cmd = "Checking $key: cc $M $D $I $src"; $cmd =~ s/\s\s+/ /g; print stderr $cmd,"\n"; } open(CPP,"cc $M $D $I $src|") || die "Can't run C preprocessor: $!"; while (<CPP>) { ($name,$dep) = split; $dep =~ s|^\./||; (print $missing,"$key: $dep\n"),($missing='') unless ($dep{"$key: $dep"} += 2) > 2; }}$extra = "\nExtraneous dependencies:\n";foreach $key (sort keys(dep)) { if ($key =~ /\.o: .*\.h$/ && $dep{$key} == 1) { print $extra,$key,"\n"; $extra = ''; }}sub scan { local($makefile) = @_; local($MF) = $MF; print stderr "Analyzing $makefile.\n" if $opt_v; $MF++; open($MF,$makefile) || die "Can't open $makefile: $!"; while (<$MF>) { chop; chop($_ = $_ . <$MF>) while s/\\$//; next if /^#/; next if /^$/; s/\$\((\w+):([^=)]*)=([^)]*)\)/do subst("$1","$2","$3")/eg; s/\$\((\w+)\)/$mac{$1}/eg; $mac{$1} = $2, next if /^(\w+)\s*=\s*(.*)/; if (/^include\s+(.*)/) { do scan($1); print stderr "Continuing $makefile.\n" if $opt_v; next; } if (/^([^:]+):\s*(.*)/) { $left = $1; $right = $2; if ($right =~ /^([^;]*);(.*)/) { $right = $1; $action = $2; } else { $action = ''; } while (<$MF>) { last unless /^\t/; chop; chop($_ = $_ . <$MF>) while s/\\$//; next if /^#/; last if /^$/; s/\$\((\w+):([^=)]*)=([^)]*)\)/do subst("$1","$2","$3")/eg; s/\$\((\w+)\)/$mac{$1}/eg; $action .= $_; } foreach $targ (split(' ',$left)) { $targ =~ s|^\./||; foreach $src (split(' ',$right)) { $src =~ s|^\./||; $deplist{$targ} .= ' ' . $src; $dep{"$targ: $src"} = 1; $o{$src} = 1 if $src =~ /\.o$/; $oc{$targ} = $src if $targ =~ /\.o$/ && $src =~ /\.[yc]$/; } $action{$targ} .= $action; } redo if $_; } } close($MF);}sub subst { local($foo,$from,$to) = @_; $foo = $mac{$foo}; $from =~ s/\./[.]/; y/a/a/; $foo =~ s/\b$from\b/$to/g; $foo;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -