GNU nano2.6.3をAndroid Terminal Emulatorで日本語を打てるように
8/10にGNU nano2.6.3が公開された。今回のポイントはAlt+3でコメント化ができるようになったことだろう。Ctrl+矢印もそれなりに使い勝手が上がりそうである。
早速Build。一部関数名が違っていたりするのでパッチの修正はそのぐらい。相変わらずglobには対応させていない。
現状、自分がAndroid用にコンパイルしているncursesはja_JP.UTF-8を決め打ちで返すようにしてしまっている。自分が使う分にはまったく困らないのだけど、公開するとなると気が引けているのが実情。
とりあえず、パッチを当てるときに嵌まった点を列挙。
MB_MAX_LENとMB_CUR_LEN
日本語パッチを作ろうとして大嵌まりしたのはこれにつきる。NDKだと1なのよね。マルチバイトまわりをmusl実装で置き換えたときに期待通りに動かなくてかなり悩んだ。
再定義して事なきを得たけど、UTF-8環境では4か6か、どちらで定義するのかという問題がある。
本来5オクテット以上の表現は不正なのだから、4だというのはわかるのだけど、6オクテットまでは例えそれが不正な形式とはいえ、形式上は取りうることができるのだからと言う理由で6で定義。もちろん、それが不正な形式を許容してよいという意味ではない。
もっとも、UTF-8の第1オクテットを見れば、その時点で5オクテット以上になるかどうかはわかるのだから、4で問題ないはずなんだけど。
ttynameとgetpwentとglob
NDKで実装されていない関数。
ttynameはひとまず使わなくてもすむように強制コメント化。
getpwentはなにもしない実装して空ぶらせることに。~userみたいなのはどうせ使わないから、なにもしない実装で困ることはないだろうということで。
globの実装は2.5.3と同様に見送り。2.2相当のファイル指定ができれば、自分は困らないので優先度を落とした。
2016-07あたりの近況
生存報告がてら。
nano 2.5.3日本語対応版パッチ
暫定パッチは出来た。が、肝心のタブレットが故障。環境が回復するまでスマホで確認することに。その後Android 5.1のタブレットを購入できたので、動作確認したらOK。最初PIEにするのを忘れて怒られたが。公開するためにはちょっと手直しが必要かな。
phina.js
phina.jsを使って、タッチ時の移動ルーチンとかを作成してみた。意外とすんなり書けるものだなぁと。ドキュメントも見るけど、どちらかと言うとソース本体を見ながら書いている。JavaScriptの勉強にもなるし。
Windows10のアップデート関連
XPS17をWindows10にアップデート。期限前にギリギリ滑りこませた形。aspire switch 10EはAnniversary updateに。