paxでShift-JISのまま格納される件

Cygwinのtarで

tar --format=pax -cf out.tar こんにちは.txt

とすると、ファイル名がpaxヘッダにShift-JISのまま格納されてしまいます。
ところが、

tar --format=pax -cf out.tar あ.txt

だと、ちゃんとUTF-8に変換されます。


コード(utf8.c)を見ると、UTF-8に変換する処理が入っているんですが、

  inlen = strlen (input) + 1;
  outlen = inlen * MB_LEN_MAX + 1;
  ob = *output = xmalloc (outlen);
  ib = (char ICONV_CONST *) input;
  rc = iconv (cd, &ib, &inlen, &ob, &outlen);
  *ob = 0;

CygwinのMB_LEN_MAXが1なので、ほとんどの場合バッファが足りないのが原因です。
「あ.txt」だと、inlen=7、outlen=8になって辛うじてバッファが足りるので変換できていたようです。
ただし、「*ob = 0」で9バイト目にアクセスしてますが、、、。