⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 muck

📁 早期freebsd实现
💻
字号:
#!../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 + -