長南です。
御指南ありがとうございます。C の勉強をしたのはずいぶん前、
それもカレンダーを作っておしまいのくちですので、おそるおそる
取り組んでみました。
羽根さんのメールより [vine-users:053324]
>
> 場当たり的に直すなら、Canna35b2/canuum/jhlp.c の
> chmod/chown をコメントアウトして rebuild それば良
> いと思います(これが最善とも思えませんが)。
jhlp.c は patch が作っているようなので、Canna35b2-2.patch の
該当部分をこんなふうにコメントアウトしました。
+/* ptyname(nmbuf, ptynm, ptyno);
+ if (chown(nmbuf, 0, 0) == ERROR) {
+ perror(prog);
+ }
+ if (chmod(nmbuf, 0666) == ERROR) {
+ perror(prog);
+ }
+
+ ptyname(nmbuf, ttypnm, ptyno);
+ if (chown(nmbuf, 0, 0) == ERROR) {
+ perror(prog);
+ }
+ if (chmod(nmbuf, 0666) == ERROR) {
+ perror(prog);
+ } */
こうして Canna を作り直すと、確かに canuum を終了しても、
エラーが出なくなりました。また、
> …… また、root で canuum
> を実行後、/dev/ttyp0 と /dev/ptyp0 のオーナー/グルー
> プが、root/root になってしまうので、これもちょっと
> 気になります。
この問題も、起こらなくなりました。
上のコードは、オーナー/グループとパーミッションを、使う前の
状態に戻そうとしているわけでしょう(どこかで変えているんだろうか)。
それは正しい終了処理なのでしょうが、canuum を root で実行しない
限り、エラーが出るわけだし、/dev/ttyp0 や /dev/ptyp0 などの
オーナー/グループやパーミッションも root/root と 666 であるのを
前提にしている。canuum に setuid ビットが付き、/dev/ttyp0 などの
属性も root/root、666 に決まっていた時代のコードなんでしょうか。
それから、canuum を作り直した後で、フレームバッファ・コンソールを
使うときは、菊池さんが [vine-users:053244] でおっしゃったように
ユーザーを tty グループに登録し、/dev/ttyp0 をこんなふうに直す
必要がありました(最初は crw------- に root/tty でしたので)。
crw-rw---- 1 root tty 3, 0 Sep 4 16:27 /dev/ttyp0
--
長南洋一
cyoichi@xxxxxxxxxxxxxxx