
CTCPの取り出しと内部のクォートについて
	CTCP/1ではクライアントの間の拡張データはPRIVMSGとNOTICEコマンドでのみ有効になると
	指定されています。CTCP/2でも「これは PRIVMSG NOTICE および DCC CHAT トラフィックの内に
	埋め込まれたCTCPメッセージの解析に関係するでしょう。」と指定されています。
	よって、これらのメッセージのtrailからのみCTCPの取り出しを行います。

	CTCP/1ではCTCPの内部での%01を \a とクォートするように指定されていますが、
	CTCP/2では「こんなん実装してるのは少しのクライアントだけや」という理由で
	廃止が提案されていて、かわりにCTRL-Pクォート中で%01とスペースを扱うようになっています。

	
CTCPの送信について
	PRIVMSG NOTICE および DCC CHAT トラフィック


メッセージの引数のクォートが提案されています。

	試してみたところ
	

	
	CTCPの内部を\ でクォート






TrailのクォートのIRCクライアントごとの対応状況

CTRL-P(%10)によるメッセージ中の改行とnulの扱い
	/privmsg !87KRJくいっくIRC :ふが∴%10n ふが
	/privmsg !87KRJくいっくIRC :ふが∴%10r ふが
	/privmsg !87KRJくいっくIRC :ふが∴%100 ふが
	/privmsg !87KRJくいっくIRC :ふが∴%10%10 ふが
	/privmsg !87KRJくいっくIRC :ふが∴%10r%10n ふが
	/privmsg !87KRJくいっくIRC :ふが∴%10n%10r ふが
	/topic !87KRJくいっくIRC :ふが∴%10r%10n ふが

	WoolChatは %10n,%10r,%10r%10n を改行とみなす。
	Unknown は制御コードをそのまま表示する。グリフには・が使われるようだ。

CTRL-P(%10)によるメッセージ中の%01 と %20の扱い
	CTCP/2で提案されているクォートでは
	・%10 と '1' で %01 (CTCPの開始区切り)を表すようにする
	・%10 と '@' で %20 (空白)を表すようにする
	というものが追加されている。
	これはメッセージのパラメータのパースとCTCPの分離を同時に行うことを要求するものだ。

	/PRIVMSG !87KRJくいっくIRC :ふが∴%10nAAA%101%10@BBB
	/PRIVMSG !87KRJくいっくIRC :∴%01ACTION ふが∴%10nAAA%101%10@BBB%01
	WoolChat,Unknownともに %10 と 1 というシーケンスを そのまま表示する。
	%10と@ というシーケンスには対応していない。

	BluntIRCではCTRL-PのアンエスケープとCTCPの分離を同時に行うことで
	これに対応している。そのかわり、CTCP内部での \a エスケープには対応していない。
	ただ、これはCTCPが書かれる可能性のある場所

The original CTCP protocol defined a two-level method of quoting, which
was rarely (if ever) implemented.  Because few clients currently support
this quoting method, and it is generally considered too complex, we have
scrapped the original CTCP quoting.
オリジナルのCTCPプロトコルは2つのレベルのクォーティング手順を定義していたが、
それは(あるとしても)めったにインプリメントされなかった。
このクォーティング手順を現在採用していているのは少数のクライアントだし、
それは複雑すぎると一般に考えられるので、
私たちはオリジナルのCTCPクォーティングを廃棄しました。

The CTCP2 protocol introduces quoting at the argument level -- that is,
the characters in an argument to a CTCP message are translated according
to quoting rules before they are combined into a full CTCP message.  Below
is the order used in parsing incoming messages.  This will be involved in
the parsing of CTCP messages embedded within PRIVMSG, NOTICE, and DCC CHAT
traffic.
CTCP2プロトコルは引数レベルのクォーティングを導入する。
すなわち、CTCPメッセージへの議論での文字は、
それらが十分なCTCPメッセージへ組み合わせられる前に、
規則を引用することによって翻訳されます。
以下に、入って来るメッセージを解析するのに使用されるオーダーです。
これは、PRIVMSG、NOTICEおよびDCC CHAT交通の内に埋め込まれたCTCPメッセージの解析に関係するでしょう。

1. Break the message into tokens using SP.
	空白でメッセージを区切る。
2. Interpret the first token as the CTCP keyword.
	CTCPキーワードとして第1の印を解釈してください。
	(キーワードと…PRIVMSGやNOTICEかどうか確認するということでしょうか？)
3. Unquote each following token using the quoting table above.  (For
   efficiency reasons, the keyword token does not need to be dequoted,
   since none of the current valid keyword tokens contain characters
   that will need dequoting.)
	引用する上記のテーブルを使用して、各々印に続いて引用を終わってください。(効率理由のために、現在の有効なキーワード・トークンのどれもdequotingを必要とする文字を含んでいないので、キーワード・トークンをdequotedする必要がありません。)

4. Process the CTCP message according to its keyword.
	Likewise, quoting should be applied to all arguments before being
	concatenated into a CTCP request.  However, none of the current CTCP
	keywords contain characters that need quoting, so an implementation may
	skip the quoting step for the keyword token.
	そのキーワードによってCTCPメッセージを処理してください。
	同様に、引用はCTCPリクエストへ連結される前にすべての議論に適用されるべきです。
	しかしながら、現在のCTCPキーワードのどれも、引用を必要とする文字を含んでいません。
	したがって、インプリメンテーションは、キーワード・トークン用の引用するステップを
	スキップするかもしれません。



ACTIONの受信と表示
	/PRIVMSG !87KRJくいっくIRC :∴%01ACTION ふが∴%01
		これはWoolChatもunknwonも正しく表示できる。
	/PRIVMSG !87KRJくいっくIRC :∴%01ACTION ふが ∴%01
		末尾に空白がついただけだが、なぜかUnknownはこのメッセージを無視する。

ACTION中の%10 クォート
	/PRIVMSG !87KRJくいっくIRC :∴%01ACTION ふが∴%10nAAA%01
	WoolChat,UnknowともにPrivmsgの時と状況はかわらない。

CTCP中の\クォート
	/PRIVMSG !87KRJくいっくIRC :∴%01ACTION ふが∴%10nAAA\a\\%01
	Woolchat,UnknownともにCTCP中の\クォートには対応していないようだ。



DCC
	DCC SEND hoge 1031786626 3312 5
	DCC SEND .bashrc 3402673703 63281 282

	サイズは省略されることがある
	

DCC受信ウィンドウ
		開始 中止 削除
	提示時刻 受信開始時刻 受信にかかった時間 from ファイル名 サイズ 
	アドレス ポート ステータス 保存先

	保存するファイル名は dcc-recv/時刻-接続名-nick-元のファイル名 
	保存中は隠し属性をつけたい

		
