
コメントのバイリンガル化

is_all_asciiのeuc, sjisの定義

saphire_commands.cを見直し。パイプの出力は無限大であることがある。出力結果を使った処理をする場合はgKitutukiSigintを全てチェック。
string_put, string_push_back, strncpy, strncat, strcpy, strcat, memcpyのチェック
cancelableにするかどうか
runの後のパイプの出力をstring_push_back, string_put, string_new, str*している部分を見る
RFD_NEW2もブロックしうる。 memcpy, strcpy, strcat, string_new
saphrie_main.c終了
saphrie_parser.c終了
saphire_vm.c終了。
saphire_commandsをチェック

string_toupper kitutuki_sigintに対応
string_chompも
addのstr_kanjipos2pointerも
saphire_commands.cをread_nextin(で検索 kAddから
読み込んだバッファの大きさは無限大だから

パイプに大量のデータが流れたときにCTRL-Cが効くかどうかsaphire_mainのsRfd,sRWFdのループをチェック
パイプから受けたデータをstring_obj*などにためてはいけない
大量のデータの場合string_push_back, string_putがブロックする
ためずに、そのまま加工してwrite_nextoutしないといけない
saphire_commands.cの全コマンドでnextinから読み込んでいるものをチェック
saphire_main.cのstring_putをチェック
パイプを受け取るstring_new, string_push_backをCTRL-cできるようにする

saphire_main canclellable

リファクタリング
コマンドを一つ一つ確認
マニュアルを同期させる
saphire_commands.cの上のコマンドからずっと試していく。
object確認終了。
ref確認終了。
var確認終了。
global確認終了。
export確認終了。
ary確認終了。
ary_add確認終了。
hash確認終了。
hash_add確認終了。
hash_erase確認終了。
def確認終了。
class確認終了。
inherit確認終了。
self確認終了。
sweep確認終了。

substrまで確認終了。

call_completionのマニュアル
マニュアルの整備
ユーザーカスタマイズ補完

文字列処理に一文字単位じゃなくてバイト単位のオプション。処理速度がぜんぜん違う。というか、それがデフォルトで、-wとかでUTF8の一文字単位対応？

正規表現ライブラリにpcre対応。

変数に追記

glob内部コマンド

コマンド名無しの{ } でsaphire -c

セグフォのときメッセージを書く
メッセージの日本語化


大規模スクリプトは実用的な速度が出るか

変数の定義時、$で始まる名前はエラーにする。

変数名で同名の定義があるのはまずい。

変数の参照は、ローカル変数、属性、グローバルの順にするかどうか？
（リファレンス、オブジェクトはそうなので）

0xの名前でデリファレンスしないとリファレンスのリファレンスが使えない

インクリメンタルGCで循環参照した場合に対応

tr
snkf
brace
onigsed
onigrep

エラー分岐時のメモリリーク、２重FREEのチェック

promt { } でプロンプト設定 ブロックを保存

ディレクトリのパスの正規化コマンド。
ファイル選択コマンドの出力を正規化
ディレクトリ移動のディレクトリヒストリメニュー

cd -
cd +

-------------------------------------------------------------------------------
stackframe

カスタマイズ補完。ロングオプション。
カスタマイズ補完は補完関数ブロックのリストの出力が補完候補
コンテキストパイプが現在の入力中のテキスト
カスタマイズ補完の登録の引数はコマンド名とブロック

readline強化
exportの補完
(ローカル変数の補完)
(属性の補完)
./でPATHの通ったコマンドまで補完してしまう
gsubもつくる
$の補完

migemoで
ls -al ../saphire-3.5.4/[TAB]の補完でせぐ

coLinuxのコンソールでselectorが落ちる

ary a > [TAB]でファイル名の補完ができない
(カスタマイズ補完が有効なため)

readline.cで構文解析
TERMが設定されていないと起動されない
inheritを外部コマンドに対応。
umaskプロセス置換がある文のみ0077にする
apacheからの実行時umask 0077固定はどうか？
プロセス置換で作られるファイルのセキュリティがやばい(/tmpに作られるから)

.saphire/tmp ---> /tmp md5チェック
gTmpDirのチェック
all_sweepはsaphire_が頭に付く名前のみ消す
md5する
数字だけじゃなくrandomに名前を作る
apacheから実行されたときにほかのCGIプログラムから/tmpに攻撃される可能性あり?

HOME,SAPHIRE_TMPDIRが設定されていない場合はどうする？
ヘアドキュメントが~/.saphire/tmpで使われている
プロセス置換で~/.saphire/tmpで使われている

umask 内部コマンド追加

unset内部コマンド
tildatenkai bug
umask の引数に0777とかが渡せない
sudo gdb whichのユーザーカスタマイズ補完が無理
unsetとumaskのマニュアル
メソッド名の補完

selfにinputだけじゃなくてoutputもつける
つまり fun | less　の場合はoutputをつける
エラーメッセージを出力するコマンド

try下での実行ファイルのエラー出力はerrmsgに入れる?try下じゃなくても？
実行ファイルのエラー出力の一時ファイルが消えない
一時ファイルが消えない
cdのカスタマイズ補完 splitの空白の数を得ることができないといけない
a aはいけてもa     aが駄目(splitのグループ化)

object a | ->class { def yes { puts yes } }
でメッセージパッシング

実行中のオブジェクトのメモリを返す内部コマンド
self?

> object a { def yes  { puts yes } }
> object a { def no { puts no } }
ができないようにする。二回目のはsweep aを実行してからじゃないとエラーにする。

export A | [ = "" ]
で環境変数Aが作られてしまうのはまずい。
ary, hashとかも同じく
初期化が必要にする
ary, ref, var, global, export, 
hash, def,class

~/の中にグロブがあったらだめ
read_one_argumentにnoquote_expandをつけて、クォートをそのまま受け取るオプションをつけてglob, tildaなどは受け取る

read -nが全て読み込んでもrcode != 0を返さない
read -c
static linkバージョン
read -cのマニュアル
num2str

=の後は全ての補完でファイル名の補完とするか、ユーザーカスタマイズ補完で制御するかどうか
リターンコードの戻り値が複雑な関数呼び出しでも正しいかどうか
$(大量のデータの書き込み)でCTRL-Cが効くかどうか

substrの廃止、rowsに-bオプション

substrもstr_kanjipos2pointerがsigintむり
saphire_main p++で代入しているところにmemcpy_cancellableにする

scan_onlineは駄目、先頭の部分でread_nexinしてからまたsRFd_newに代入している
erase_onlineもだめ
sub_onlineも駄目
