kbanner を mac os x で動かす

unix 系OSによくインストールされているコマンドで、mac os x にもある banner という コマンドは知ってますか。

```shell-session

$echo test | banner -w 50
Message:                                #
                               #
              #######################
             ########################
            #########################
            ###                #
            ###
              #
                   ######
                ############
              ################
             #####   ##   #####
            ###      ##       ##
            #        ##        #
            #        ##        #
            #        ##       ##
             #       ##     ####
             ##      ##########
               ##    ########
                     ####
            #####        ###
            #####      #######
             ##      ##########
            ###      ######   ##
            ##      #####      #
            #       #####      #
            #      #####      ##
            ##     #####     ###
             ##   ######   #####
             ##########    #####
               ######
                               #
                               #
              #######################
             ########################
            #########################
            ###                #
            ###
              #
```

まぁ、こんなのです。これに漢字を流すと

```shell-session
$echo あ | banner -w 50
Message: banner: the character '�' is not in my character set
banner: the character '�' is not in my character set
banner: the character '�' is not in my character set
```

となります。残念です。

Solaris (SunOS) には、漢字に対応した kbanner というのがあるので、mac でコンパイルして使おうと思います。

bsd 系のリポジトリにみつかったり、リンクが切れてたりするんですが、現状だと、[安岡孝一さんのサイト](http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/program.html)からDLできます。

download して make すると、ちょっとした error がでるので、

```shell-session
kbanner.c:267:7: error: non-void function 'kputchar' should return a value [-Wreturn-type]
      return;
      ^
```

通るようにします。

```sh
$diff kbanner.c.org kbanner.c
267c267
<       return;
---
>       return 0;
```

warning はいっぱい出ますが、気にしません。上記のように変えると make できるようになるので、下記のように試してみます。

```shell-session
$echo あ | ./kbanner












```

あれ？

```sh
$echo 天 | ./kbanner
              ##
              ##
################################
        ##            ##
          ####    ####
            ########
      ########    ########
########      ##        ########
          ####      ##
      ####      ####
          ##  ##            ##
################################
              ##              ##
        ##    ##      ##
    ######    ##      ######
######        ##          ######





              ##
              ##
      ####################
      ##                ##
      ##                ##
                      ####
                      ##
                    ####
                  ####
              ######
          ######

```

どうやら ShiftJIS を対象としているようですので、下記のようにします。

```shell-session
$echo 天 | iconv -f utf8 -t sjis | ./kbanner

################################
              ##
              ##
              ##
              ##
              ##
  ############################
            ##  ##
            ##  ####
          ####    ##
          ##      ####
        ####        ####
      ####            ####
    ####                ####
######                    ######
```

できました。

オプションもいろいろあるので、いろいろ試してみると楽しそうです。

go に移植するのも楽しそうですね。