当時は、誰が作ったものなのか?をググったりはできませんでしたし、ソースは入手できないものだと思っていました。
時は流れ、2003年ごろから Linux どっぷりな仕事 (使うマシンも Express5800 に変わった) になり、kbanner のソースも持っていませんでしたので、EWS4800 の衰退と共に記憶の彼方になっていきました。
そして今、ふと懐かしく思い出し、どこかにソースないのかなと、ググってみたら、ありました!
なんと kbanner の作者さんは、「キーボード配列 QWERTYの謎 NTT出版 (2008年3月), ISBN978-4-7571-4176-6.」の著者さんだったのかー、キーボード好き (特に ThinkPad と RealForce) が高じて手もとにあります。
さっそくダウンロードして、現在の自宅メインマシン (ThinkPad 25 + CentOS8) で make してみました。
コンパイルエラーでも起きるかなと思ったのですが、警告は出るものの、修正なしでビルドできました!
[root@hoge kbanner2]# make cc -c -O kbanner.c kbanner.c:5:14: 警告: 組み込み関数 ‘malloc’ と型が競合しています [-Wbuiltin-declaration-mismatch] extern char *malloc(); ^~~~~~ kbanner.c:85:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int] main(argc,argv) ^~~~ kbanner.c: 関数 ‘main’ 内: kbanner.c:115:14: 警告: 関数 ‘atoi’ の暗黙的な宣言です [-Wimplicit-function-declaration] column=atoi(&((*argv)[1])); ^~~~ kbanner.c:82:3: 警告: 関数 ‘exit’ の暗黙的な宣言です [-Wimplicit-function-declaration] exit(1);\ ^~~~ kbanner.c:120:7: 備考: in expansion of macro ‘USAGE’ USAGE ^~~~~ kbanner.c:82:3: 警告: 組み込み関数 ‘exit’ の互換性がない暗黙的な宣言です exit(1);\ ^~~~ kbanner.c:120:7: 備考: in expansion of macro ‘USAGE’ USAGE ^~~~~ kbanner.c:82:3: 備考: include ‘<stdlib.h>’ or provide a declaration of ‘exit’ kbanner.c:4:1: +#include早速動かしてみると文字化け、、、当時は EUC-JP でしたので、環境変数 LANG=ja_JP.eucJP を設定し、端末文字コードも EUC-JP にして、再実行。kbanner.c:82:3: exit(1);\ ^~~~ kbanner.c:120:7: 備考: in expansion of macro ‘USAGE’ USAGE ^~~~~ kbanner.c:126:5: 警告: 組み込み関数 ‘exit’ の互換性がない暗黙的な宣言です exit(1); ^~~~ kbanner.c:126:5: 備考: include ‘<stdlib.h>’ or provide a declaration of ‘exit’ kbanner.c:129:5: 警告: 関数 ‘kbanner’ の暗黙的な宣言です [-Wimplicit-function-declaration] kbanner(stdin); ^~~~~~~ kbanner.c:130:5: 警告: 組み込み関数 ‘exit’ の互換性がない暗黙的な宣言です exit(0); ^~~~ kbanner.c:130:5: 備考: include ‘<stdlib.h>’ or provide a declaration of ‘exit’ kbanner.c:142:3: 警告: 組み込み関数 ‘exit’ の互換性がない暗黙的な宣言です exit(0); ^~~~ kbanner.c:142:3: 備考: include ‘<stdlib.h>’ or provide a declaration of ‘exit’ kbanner.c: トップレベル: kbanner.c:145:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int] kbanner(fp) ^~~~~~~ kbanner.c: 関数 ‘kbanner’ 内: kbanner.c:152:12: 警告: implicit declaration of function ‘kgetchar’; did you mean ‘getchar’? [-Wimplicit-function-declaration] while((i=kgetchar(fp))!=EOF){ ^~~~~~~~ getchar kbanner.c:159:4: 警告: implicit declaration of function ‘kputchar’; did you mean ‘putchar’? [-Wimplicit-function-declaration] kputchar(i*256+(j&127)); ^~~~~~~~ putchar kbanner.c: トップレベル: kbanner.c:202:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int] kputchar(c) ^~~~~~~~ kbanner.c: 関数 ‘kputchar’ 内: kbanner.c:267:7: 警告: 非 void を戻す関数内に値が無い ‘return’ があります return; ^~~~~~ kbanner.c:202:1: 備考: ここで宣言されています kputchar(c) ^~~~~~~~ kbanner.c: トップレベル: kbanner.c:278:1: 警告: 戻り値の型をデフォルトの ‘int’ にします [-Wimplicit-int] kgetchar(fp) ^~~~~~~~ cc -c -O font1.c cc -c -O font2.c cc -c -O font3.c cc kbanner.o font1.o font2.o font3.o -o kbanner strip kbanner [root@hoge kbanner2]# ls -l 合計 1356 -rw-r--r-- 1 1001 wheel 321 7月 13 2004 Makefile -rw-r--r-- 1 1001 wheel 203 7月 13 2004 README -rw-r--r-- 1 1001 wheel 289120 10月 15 1993 font1.c -rw-r--r-- 1 root root 79952 10月 18 04:47 font1.o -rw-r--r-- 1 1001 wheel 289120 10月 15 1993 font2.c -rw-r--r-- 1 root root 79952 10月 18 04:47 font2.o -rw-r--r-- 1 1001 wheel 278000 10月 15 1993 font3.c -rw-r--r-- 1 root root 76912 10月 18 04:47 font3.o -rwxr-xr-x 1 root root 245376 10月 18 04:47 kbanner -rw-r--r-- 1 1001 wheel 692 10月 15 1993 kbanner.1 -rw-r--r-- 1 1001 wheel 8594 10月 15 1993 kbanner.c -rw-r--r-- 1 root root 16208 10月 18 04:47 kbanner.o [root@hoge kbanner2]# ./kbanner --help Usage: ./kbanner [-l|-numofcol] [-s] [-m] [file]
[root@hoge kbanner2]# echo -n キーボード配列 QWERTYの謎 | ./kbanner -s -8 ; , ; ; , , , ,,,,,,,,, ,,,,, ,,,,,,,,, , ; '; ,,, ; ; ' ' ; ; ; ; ; ; ,,;;''' '''''';''''''' ; ;';';'; ; ;,,,, ; ; '''' ; ,,,, ',,,,,,,,,,,,, , ; , ',,,,,,,,,,,,, ;'';,, ; ; ; ; ;'''' ;' ; ; ; ,,;;''' ,; ; ';, ; ''' ;' ''; ; ,;';, ;' ; ; '''' ;, ,; ; ;, ; ;,,,,,; ; ';' ' ; ; '' ; ' ; ; ; ;, ,; ,;' ; '; ''' ' ''''''' '''' ,,;'' ,,; ,,,, ,,,,, ,, ,,,,, ,,,,,,,,,,, ,,,,,,,,, ,,,,,,,,,,,,, ,,,,, ,,,,, ,,,, , , ; , ,;' ';, ; ;; ; ; ', ; ', ; ; ; ;, ,; ,,;';';,, ,,,,,,'; '; ; ;' ,; ;, ;, ;''; ,; ; , ; ; ; ;, ,; ,;' ; '; ,,,, ,,,;,,, ; ; ; ,; ;, ; ;,,,,; ;,,,,,,' ; ;, ,; ,; ;' '; ,,, ,;, ;, ,; ; ; ; ; ; ; ; ;, ; ';' ; ;' ; '''' ; ,';', ;, ,'', ,; ';; ;;' ; , ; ;, ; ; ; ,;' ;' ,,,, ;,' ; ', '',,,,'; , ; ; ,,;,,,,,,,; ,,;,, ,,;,, ,,;,, ,,;,, ''' ,,;'' ; ; ,; ; '' ;,,; ;' ',,,,,, [root@hoge kbanner2]#これだ、これだよ〜、懐かしいなあ。また利用させてもらおうと思います。作者さん、ありがとうございます m(_ _)m
0 件のコメント:
コメントを投稿