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

📄 runoff1

📁 类unix x86平台的简单操作系统
💻
字号:
#!/usr/bin/perl$n = 0;$v = 0;if($ARGV[0] eq "-v") {	$v = 1;	shift @ARGV;}if($ARGV[0] eq "-n") {	$n = $ARGV[1];	shift @ARGV;	shift @ARGV;}$n = int(($n+49)/50)*50 - 1;@lines = <>;foreach (@lines) {	chomp;	s/\s+$//;	if(length() >= 75){		print "$ARGV[0]:$.: line too long";	}}@outlines = ();$nextout = 0;for($i=0; $i<@lines; ){	# Skip leading blank lines.	$i++ while $i<@lines && $lines[$i] =~ /^$/;	last if $i>=@lines;	# If the rest of the file fits, use the whole thing.	if(@lines <= $i+50){		$breakbefore = @lines;	}else{		# Find a good next page break;		# Hope for end of function.		# but settle for a blank line (but not first blank line		# in function, which comes after variable declarations).		$breakbefore = $i;		$lastblank = $i;		$sawbrace = 0;		$breaksize = 15;  # 15 lines to get to function		for($j=$i; $j<$i+50 && $j < @lines; $j++){			if($lines[$j] =~ /PAGEBREAK:\s*([0-9]+)/){				$breaksize = $1;				$breakbefore = $j;				$lines[$j] = "";			}			if($lines[$j] =~ /^};?$/){				$breakbefore = $j+1;				$breaksize = 15;			}			if($lines[$j] =~ /^{$/){				$sawbrace = 1;			}			if($lines[$j] =~ /^$/){				if($sawbrace){					$sawbrace = 0;				}else{					$lastblank = $j;				}			}		}		if($j<@lines && $lines[$j] =~ /^$/){			$lastblank = $j;		}		# If we are not putting enough on a page, try a blank line.		if($breakbefore - $i < 50 - $breaksize && $lastblank > $breakbefore && $lastblank >= $i+50 - 5){			if($v){				print STDERR "breakbefore $breakbefore i $i breaksize $breaksize\n";			}			$breakbefore = $lastblank;			$breaksize = 5;  # only 5 lines to get to blank line		}		# If we are not putting enough on a page, force a full page.		if($breakbefore - $i < 50 - $breaksize && $breakbefore != @lines){			$breakbefore = $i + 50;			$breakbefore = @lines if @lines < $breakbefore;		}		if($breakbefore < $i+2){			$breakbefore = $i+2;		}	}	# Emit the page.	$i50 = $i + 50;	for(; $i<$breakbefore; $i++){		printf "%04d %s\n", ++$n, $lines[$i];	}	# Finish page	for($j=$i; $j<$i50; $j++){		printf "%04d \n", ++$n;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -