Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
X
xv6-public
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
问题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
银宸时代
OS Lab Group
奖励实验
xv6-public
提交
7678a19e
提交
7678a19e
9月 07, 2006
创建
作者:
rsc
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
better page breaks
上级
44e6909a
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
89 行增加
和
8 行删除
+89
-8
runoff
runoff
+89
-8
没有找到文件。
runoff
浏览文件 @
7678a19e
...
...
@@ -16,13 +16,94 @@ files=`grep -v '^#' runoff.list | awk '{print $1}'`
n
=
99
for
i
in
$files
do
awk
-v
'n='
$n
'
BEGIN{n=int((n+49)/50)*50-1; nb=0; nr=0}
NF==0 { nb++; next }
{for(i=0; i<nb; i++) printf("%04d\n", n+ ++nr); nb=0; printf("%04d %s\n", n+ ++nr, $0)}
END{for(nr++; nr%50 != 1; nr++) printf("%04d\n", n+nr);}
'
$i
>
fmt
/
$i
n
=
`
tail
-1
fmt
/
$i
|
awk
'{print $1}'
`
perl
-e
'$n='
$n
';'
-e
'
$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 = int($2);
$breakbefore = $j;
$lines[$j] = "";
}
if($lines[$j] =~ /^}$/){
$breakbefore = $j+1;
}
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){
$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;
}
}
'
$i
>
fmt
/
$i
nn
=
`
tail
-1
fmt
/
$i
|
sed
's/ .*//; s/^0*//'
`
if
[
"x
$nn
"
!=
x
]
;
then
n
=
$nn
fi
done
# create table of contents
...
...
@@ -117,7 +198,7 @@ awk '
# format the whole thing
(
pr
-l60
-e8
README
pr
-l60
-e8
-2
toc
pr
-l60
-
h
"table of contents"
-
e8
-2
toc
pr
-l60
-h
"definitions"
-2
t.defs | pad
pr
-l60
-h
"cross-references"
-2
refs | pad
for
i
in
$files
...
...
编写
预览
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论