標準愚痴出力

個人的なIT作業ログです。もしかしたら一般的に参考になることが書いているかもしれません(弱気

(リリース予告)NYAGOS 4.4.6_1

(2020.05.31 追記) リリースしました → Release 4.4.6_1 · zetamatta/nyagos


ちょっと看過しづらい不具合がたまってきたので、近々、修正版(4.4.6_1)を公開する予定です。 今回の修正には新機能(WindowsTerminal 対応や、CDPATH )は含みません (masterブランチに、develop ブランチにある不具合修正分だけを cherry-pick しています)

(#385) 最後にいたフォルダーが削除されたドライブの任意のフォルダーへ移動できなかった不具合を修正

#385 の例にあるとおり

$ mkdir D:\HOGE
$ cd D:\HOGE
$ C:
$ rmdir D:\HOGE
$ cd d:\.
chdir D:\hoge: The system cannot find the file specified.

別のドライブのカレントディレクトリが削除されていると、そのドライブの任意のフォルダーに移動できなくなるという不具合がありました。これは、別ドライブのカレントディレクトリに一旦移動してから、指定のディレクトリに移動するという二段階を踏んでいたせいでした。

そういうまわりくどいことはやめて、別ドライブに移動を行う時、別ドライブのカレントディレクトリ基準の相対パスD:. とか D:foo)の表記の時だけ、D:\(前回のフォルダー)\(今回のフォルダー) みたいに読み替えるようにしました。

cd のディレクトリヒストリがパスの大文字小文字を区別していなかった問題を修正

nyagosにはcdのディレクトリヒストリがあり

  • cd -h→ヒストリを表示
  • cd -3→リスト3番目へ移動

ができ、かつヒストリは同じディレクトリを集約し過去10ディレクトリを選べるようになっています。この集約機能に英大文字・小文字を区別してしまう不具合がありました。

そんな害はありませんが、記憶させるヒストリは -1 ~ -9 と9個に限っているので、無駄にスタックを消費させていてもったいないことになってました。

ドライブ移動(x:) でディレクトリヒストリにディレクトリをスタックしていなかった問題を修正

cd -h で出てくるディレクトリヒストリは cd , pushd の時などに記憶させていましたが、C: などドライブ名切り替えの時が漏れていました。

nyagos.rawexec{...}の最後の要素が無視されていた不具合を修正
  • [NG] lua_e "nyagos.rawexec{'cmd','/c','echo ahaha'}"
  • [OK] lua_e "nyagos.rawexec('cmd','/c','echo ahaha')
  • [OK] lua_e "nyagos.rawexec{'cmd','/c','echo ahaha',''}"

テーブルコンストラクタで引き渡したパラメータの最後のものが欠けるという不具合がありました。これは Lua では要素数Nの配列状テーブルの添字が 1...N と表現されるのに、0...(N-1) を展開していたためでした。

0...N の要素をチェックするよう修正しました(添字が存在しなかったら無視するようにはなっているので、Out of range なクラッシュはありません)

以上です。