本物のcatを眺めてみる。
せっかくcoreutilsのソースを手に入れたので、GNU catのソースを眺めてます。ソース量は、800行。案外短いような長いような。vimのTlistで、ざざ〜っと眺める。
プログラムの概要は、
macro
PROGRAM_NAME
AUTHORS
max
max
LINE_COUNTER_BUF_LEN
variable
program_name
infile
input_desc
line_buf
line_num_print
line_num_start
line_num_end
newlines2
function
usage
next_line_num
simple_cat
write_pending
cat
mainこんな感じ。関数mainとcatだけで、600行もある。
まず、気になったのは、終了方法。
int main(int argc, char **argv) { (略) exit (EXIT_SUCCESS); }
intを返さなくてもいいのかなぁ・・・return EXIT_SUCCESS or void main()じゃないかなぁと思うんだけど。イマイチ納得出来てない。う〜ん。
あんまり深追いするとヤバそうなので、stdio.h版の簡易catをつくるべぇ〜。