本物の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をつくるべぇ〜。