coreutils5.0 fold.c源码分析
先说点闲话,感觉打开电脑,能静下心来读源码,是一种幸福的生活。昨天把办公桌上的卫生整理了一下,然后在win10的笔记本上安装coreutils5.0,忽然发现编译不了。编译到seq.c时就报错误了。
我心想,还是把那些能编译出来的代码读一下,我不想把时间花在调试环境上。于是就打开,发现win10下的ubuntu很不好读代码,那个注释的字体太暗了。还是直接安装ubuntu系统,在下面读的代码字体颜色就正常多了。或许,要搞一台linux笔记本。
今天读fold.c,我修改了,因为编译不了,于是就使用系统已经安装好的程序,先测试下效果。
echo "1234567" | fold -w 3
123
456
7
昨天不会使用fold命令,还在网上找了文章,但没有读,有时,就是读不进去。今天,直接打开源码,先从头翻到尾,发现有一个-w选项的处理有意思
。
在main程序中,当遇到选项-3时,变成
-w 3
再调用getopt解析-w参数,给全局变量width赋值。
再调用fold_file(fd,width)
接着分析fold_file函数。
我大体觉得,作者是这样处理
while((c=getc(istream))!=EOF){
判断当前长度是否起过width
如果没有超过,继续读,
如果超过,就折行。
}
不过,有些细节,还是搞不明白。
我想,还是留着以后,再慢慢看。
我留点尾巴,让大脑慢慢发酵。
另外,在linux中,切换程序是用alt+esc键,学了一招。