狐の王国


2004年06月16日(水) [過去の今日]

#1 irchat-pj の DCC

なんかしらん、kernelを2.6系列にあげてからチャット専用に突っ込んであるmuleでDCC SENDできなくなった。ポートとアドレスを固定するためにかなり怪しいhackを仕込んだのでそのせいかしら。

というわけで現実逃避がてらirchat-pjのDCC周りを再点検。特にCで書かれたdccプログラムのソースや挙動を調べて行くと、前回意味のわからなかった、四つ目と五つ目の引数がようやく理解できた。

Usage: dcc file send <filename> <port> <ircserver>

usageにはこうある。四つ目の引数である<port>はDCCにおいて自分がlistenするポート、ircserverは恐らく自分のIPアドレスを調べるために、繋いでるIRCサーバを指定するのだろう。つまり、IPアドレスに関してはこのdccプログラムに任せて、NAT BOXというか、ルータのの内側からDCCをするためにはポートさえ固定してやればいい、ということになる。 *1

しかし、オプショナルな四つ目五つ目の引数はirchat-pjでは利用されてないようだ。せっかくだからきっちり利用させていただき、 DCCポート固定パッチ を作ってみた。

(setq irchat-dcc-port "6667")

とかいう感じでポートを指定してそこに穴を開けておいてやれば、DCC SENDが通る。普通に繋ぐ分にはこれで充分なはずだ。

うちの場合、変な位置にplumを挟んで繋いでいるのでこれだけではダメで、plum.confに、

+ ctcp/dcc/nat.plm
ctcp.dcc.nat.mapping: 192.168.xxx.xxx xxx.xxx.xxx.xxx

という感じでローカルアドレスをグローバルアドレスにマッピングしてやる必要があった。他のマシンからplumに繋いでいる場合でも、それぞれにポートを転送してやり、マッピングしてやればちゃんとDCCが通る。便利便利。

というわけで見事解決、と思いきや、これでもmuleでは動かない。dccプロセスは上がってるのだが、どうにもDCC SENDをサーバに送ってくれないようだ。思い切ってノーマルなirchat-pjを突っ込んでも見たのだが、やはりダメ。要するに2.6カーネル系列上でのmuleの挙動の問題なのかもしれない。コンパイルしなおせば動くのかなあ。まあ、メイン環境がemcws21になっているので、チャット専用Emacsをemacs20-dlにしちゃってもいいのだけども。マルチバイト文字が入ったファイルをDCCできない問題も解決するだろうし。

(@404)


*1: ま、こんなことしなくてもルータがLinux BoxならIRCモジュールで簡単にDCC SENDが通るんだけどね……。
この記事のURI

#2 Emacs20とEmacs21のフォント設定

さて、Emacs20をチャット用、Emacs21(emcws)をメイン環境として共存させることにしたはいいのだが、チャット用のEmacsはmplusフォントで小さく、メイン環境は東雲で大きくしている関係で、同一のフォント設定を読み込んでしまうこの二つのemacsのフォント設定を振り分けるのは難しい。

Emacs20も21も.Xresourcesに

Emacs.Fontset-0:-misc-fixed-medium-r-normal--14-*-*-*-*-*-fontset-14
Emacs.Font: fontset-14

と書いて、aliasを使って-misc-fixed-のboldやらなにやらを揃えてやるのが一番確実なフォント設定だった。

Emacs20の時だけ別の設定を読み込ませる方法を探してみたのだが、一応.Xresources内でも分岐させることは可能らしい。かといってEmacsのバージョンを見る方法がわかるわけでもなく、やはり.emacs内部で分岐させる必要がある。

Emacsのフォントは、単にフォントセットを揃えてどのフォントセットを使うか指定してやればいい。ただ、ちゃんと動かないのが常なので、いくつかの方法があちこちで模索されてるようだ。今回、うちの環境でちゃんと動いたのは、.Xresourcesでフォントセットを作り、.emacsで割り当てる、というもの。

.Xresourcesにはこう書く。

Emacs.Fontset-0:-misc-fixed-medium-r-normal--14-*-*-*-*-*-fontset-14
Emacs.Fontset-1:-mplus-gothic-medium-r-normal--13-120-75-75-c-60-fontset-mplus12,\
 	    ascii:-mplus-gothic-medium-r-normal--13-120-75-75-c-60-iso8859-1,\
 katakana-jisx0201:-mplus-gothic-medium-r-normal--13-120-75-75-c-60-jisx0201.1976-0,\
 japanese-jisx0208:-mplus-gothic-medium-r-normal--13-120-75-75-c-120-jisx0208.1983-0
Emacs.Fontset-2:-mplus-gothic-bold-r-normal--13-120-75-75-c-60-fontset-mplus12

Emacs.Font: fontset-14

これで「fontset-14」と「fontoset-mplus12」というフォントセットが出来上がる。Fontset-2がポイントで、こうすることでboldが正しく表示されるようだ。デフォルトではfontoset-14を利用する。

次に、.emacsにこう書く。

(cond (window-system
       (if (= emacs-major-version 20)
           (setq default-frame-alist (append '((font . "fontset-mplus12")))))))

これでうまいことemacs20の時はmplusを利用できるようになったのである。

しかし、emacs -f irchat などとするとちゃんとboldが出ないな……。普通に立ち上げてから M-x irchat する分には大丈夫なのに……謎。

(@420)

この記事のURI

最近の記事

以上、1 日分

タイトル一覧


カテゴリ分類
Powered by hns-2.19.8, HyperNikkiSystem Project

過去にこの日記が置いてあったcgi.misao.gr.jpは廃止されました。それによって記事へのURIが変わってしまっています。cgi.misao.gr.jpをwww.misao.gr.jpと置き換えるだけで同じ記事にアクセスできるはずです。

Sugano "狐志庵" Yoshihisa(E) @ 美紗緒ネットワーク <koshian@misao.gr.jp>
日記管理ページ