[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 12:29 / Filesize : 215 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

UNIXプログラミング質問すれ Part5



1 名前:名無し募集中。。。 [05/01/15 02:18:37]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part4 pc5.2ch.net/test/read.cgi/tech/1095843584/
Part3 pc5.2ch.net/test/read.cgi/tech/1085930894/
Part2 pc5.2ch.net/test/read.cgi/tech/1055110889/
Part1 pc2.2ch.net/tech/kako/992/992057422.html

Part3のミラー
makimo.to/2ch/pc5_tech/1085/1085930894.html
Part2のミラー
makimo.to/2ch/pc5_tech/1055/1055110889.html

関連スレ
Cygwin使っている人いますか? その13 (UNIX板)
pc5.2ch.net/test/read.cgi/unix/1099157755/
Cygwin使っている人いますか? 3 (Windows板)
pc5.2ch.net/test/read.cgi/win/1090131123/

関連板
pc5.2ch.net/unix/
pc5.2ch.net/linux/


237 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:33:29 ]
パスからvnodeを引っ張った後は、もうパスは使わないんじゃないの?

238 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:36:27 ]
>>236
>システムコールとして渡った文字列
これってなんのこと?

239 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:38:55 ]
その通り。だから Linux 以外の UNIX 系 OS では
コマンドのパス名はメモリの無駄だから保存されてない。
>>205にある ucomm は、コマンド名のbasenameの部分
だけでディレクトリは含んでないの。


240 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:42:11 ]
というか、システムコールとして渡った文字列がカーネルに
保存されているとなぜ思ったのかしら。保存しておいても、
あてにならない (コマンド実行中に削除されたりすれば意味が
ない) んだから、保存しておく意味もないんだけど。

Windows の場合、実行中のプログラムの削除ができないから、
保存しておく意味も一応あるだろうけど。

241 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:49:08 ]
>>237,>>239,>>240
ああなるほど。納得した。UNIXのVFSがフレキシブル、
というのをしきりに強調してたのはそういうことですか。

242 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:49:32 ]
Unixだとファイルオープン中に他プロセスからファイルを削除されても問題ないって聞いたけど、
ディレクトリエントリが消えるだけってことかな?
だとすれば、実行モジュールの件もファイル名と実行モジュールが対応しないわけだよね。

243 名前:デフォルトの名無しさん mailto:sage [05/02/18 19:55:18 ]
ファイルは、自分を指しているディレクトリエントリが全部 unlink されて、
自分を開いているプロセスも1個もなくなったら消えます。

一時的に使うファイルを、オープン直後にunlinkしたりするのは昔からけっこうある。
誰にもいじられないし、プロセスが終わると勝手に消える。

244 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:06:01 ]
>>242
その通り。
実行中に改名だってできるし。

245 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:08:07 ]
UNIXのVFSが高度な柔軟性を持っていることはいいとして、
それに対するパスの表現力があまりにも貧弱だっていうことは
ありませんか?。ユーザー空間からは、パスを通してしか
VFSにアクセスできないわけでしょう。かといってパスに変わる
何があるんだって言われると、答えられないけど。



246 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:10:42 ]
>>236
意味のないものを使えるかのように振る舞って、
初級プログラマを悩ませない。
そのような可能性のあるAPIは排除して、
問題のあるプログラムを作成させない。

これは一つの見識。Windowsとは違う点。

247 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:13:48 ]
>>245
パス以外のアクセス手段を用意しようものなら、ディレクトリ階層と
そのパーミッションないしACLに基づいたアクセス制御モデルがご破算に
なりかねませんが。


248 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:16:33 ]
まあ *BSD 系だと、vnode を意味する不透明データ
(handle。ただし Windows でいう HANDLE とは別物)
を指定して直接アクセスする fhopen って機能もある
けどね。>>247の言うようなセキュリティ上の問題が
あるから root だけからしか利用できないけど。


249 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:32:57 ]
結論はWin厨から見たらUNIXは元々うんこな仕様だった、と。
これでいいかな。

250 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:34:49 ]
勝利宣言? 朝鮮人みたい。


251 名前:デフォルトの名無しさん mailto:sage [05/02/18 20:39:33 ]
ウィルスが感染したらひとたまりもありませんね

252 名前:デフォルトの名無しさん mailto:sage [05/02/18 21:38:06 ]
・UNIX は実行中のプログラムの削除や改名ができるが、
 その代わり、プログラムのパス名を求めることができない。
・Windows はプログラムが自身のパス名を求めることができ
 るが、その代わり、実行中のプログラムおよびそれを含む
 ディレクトリの削除や改名ができない。

どっちをウンコだと思うかは人それぞれだと思うが。俺自身はUNIX厨だからセキュリティアップデートで多くの
場合リブートを必要とする Windows の仕様の方がヤだなー。

253 名前:デフォルトの名無しさん mailto:sage [05/02/18 21:39:24 ]
しかし、ってことは Windows の場合、リバースポイントの
ジャンクションを含むパス名を指定したプログラムを実行中
の場合、そのジャンクションの削除もできないのかぁ。

254 名前:デフォルトの名無しさん mailto:sage [05/02/18 21:56:56 ]
>>252
ものの良し悪しはともかく、Windowsの方が
厨房にも直感的に理解できる仕様とはいえませんかね。

255 名前:デフォルトの名無しさん mailto:sage [05/02/18 22:05:09 ]
>224
スレ違いではあるんだが一応。
ベ ー シ ッ ク デ ィ ス ク で も で き ま す よ ?
NTFS にしとけば OK なはず。つか実際使ってますが。
FAT32 と間違ってるんじゃない?

普及してない理由としては、標準状態で簡単に使えるインタフェースが用意されていない、
アプリによって挙動が異なる、があると思う。
例えば、適当なファイル、サブディレクトリがあるディレクトリに対するリパースポイント
(ジャンクション)をエクスプローラで削除してみれば納得できるかと。
あ、あくまでテスト用のごみファイルでやりましょう。



256 名前:デフォルトの名無しさん mailto:sage [05/02/18 22:11:06 ]
>>255

>>224はジャンクションの話をしてるんじゃなくて、
>>206の言うディスクが足りなくなって増設した
場合に便利な機能==ダイナミックディスクの話を
してるみたいだね。

UNIX で言うところの LVM + Software RAID +
resizable filesystem に相当する機能のようだが
まとめて一つの名前になってるのがなんか変な感じ。

> エクスプローラで削除してみれば納得できるかと。

どうなるん?

257 名前:デフォルトの名無しさん mailto:sage [05/02/18 22:11:10 ]
>>254
そうね。
UNIXでは乱立のファイルロッキングも
Windowsはバカチョンだしね。

ただし、分散ファイルシステムでは、かなりきつい制約になるけども。

って、これ板違いの話題じゃねえ?

258 名前:デフォルトの名無しさん mailto:sage [05/02/18 22:12:51 ]
>って、これ板違いの話題じゃねえ?
海栗糞がいらんことで抗弁するから話題がそれていくんだよ

259 名前:デフォルトの名無しさん mailto:sage [05/02/18 22:13:37 ]
> UNIXでは乱立のファイルロッキングも

昔は確かに乱立してたけど、1990年代の
終わり以降は fcntl の F_GET/SETLK で
ほぼ統一ですよ。
NFS 経由のロックも、今はそれなりに
動くようになったようだ。

260 名前:デフォルトの名無しさん mailto:sage [05/02/19 00:46:59 ]
いまだに advisory lock が基本なのは勘弁してほしい。

261 名前:デフォルトの名無しさん mailto:sage [05/02/19 00:59:05 ]
え?商用UNIXだとたいていmandatoryの方もサポートしてるけど?

262 名前:デフォルトの名無しさん mailto:sage [05/02/19 09:11:03 ]
RedHat Linuxは商用Linuxですが対応していますか?

263 名前:デフォルトの名無しさん mailto:sage [05/02/19 09:47:48 ]
スレが伸びてる!と思って覗いたらこれかよ・・・お前らLv低すぎです。
首 洗 っ て 出 直 し て き な!!

264 名前:デフォルトの名無しさん mailto:sage [05/02/19 09:54:56 ]
おまえが一番レベル低い。慣用句の使い方間違ってるし。


265 名前:デフォルトの名無しさん mailto:sage [05/02/19 10:32:24 ]
おもろい。



266 名前:デフォルトの名無しさん mailto:sage [05/02/19 10:58:51 ]
顔 洗 っ て 待 っ て ろ よ な!!


267 名前:デフォルトの名無しさん mailto:sage [05/02/19 11:05:40 ]
>>266
今さら言い直しですかw
お 前 L v 低 す ぎ で す

268 名前:デフォルトの名無しさん mailto:sage [05/02/19 12:01:37 ]
>>262
うん、対応してるよ。
もっとも俺は RedHat のことを指して商用UNIX とは
呼ばないけどなあ。商用UNIXクローンと呼ぶならまあ
分かるけど。

269 名前:デフォルトの名無しさん mailto:sage [05/02/19 12:04:14 ]
「商用UNIX」の定義議論はスルーの方向で。

270 名前:デフォルトの名無しさん [05/02/19 12:27:53 ]
BSDのstruct procはLinuxだと何に相当するんですか?

271 名前:デフォルトの名無しさん mailto:sage [05/02/19 12:37:13 ]
商用UNIXってどういう定義なの?
MacOSXは商用UNIXに含まれますか?

272 名前:デフォルトの名無しさん mailto:sage [05/02/19 12:46:04 ]
板から言って、ユーザ空間から/proc関係をいじる時だよね?
libproc(procps)の<proc/readproc.h>にあるproc_t辺りでどう?

273 名前:デフォルトの名無しさん mailto:sage [05/02/19 12:57:15 ]
>>268
RedHatLinuxを商用と呼べない、というのには納得がいかないな。
事実上商用として使われているメジャーOSのひとつだろ。
単なるオープンソース寄せ集めじゃなくて、コードのメンテナが付いてて
しかも24時間サポートもやってるわけじゃん。その分カネもかかるけど。

これを商用UNIXと呼ばないで何を商用UNIXと呼ぶの?
まさかコードの由来がどうのとかツマンナイこと言わないよね?

274 名前:デフォルトの名無しさん mailto:sage [05/02/19 14:54:14 ]
プログラミングに関係ないことは他所でおねがいします。

275 名前:デフォルトの名無しさん [05/02/19 14:54:58 ]
>>271
売り物



276 名前:デフォルトの名無しさん [05/02/19 14:56:18 ]
>>273
268はUNIXと呼びたくないだけじゃないの?

277 名前:デフォルトの名無しさん mailto:sage [05/02/19 15:27:19 ]
lockingについては結局のところOS依存?

278 名前:デフォルトの名無しさん mailto:sage [05/02/19 15:59:55 ]
なわけねー

279 名前:デフォルトの名無しさん mailto:sage [05/02/19 16:14:08 ]
>>272
カーネル内のデータ構造体だとどれになりますか?

280 名前:デフォルトの名無しさん mailto:sage [05/02/19 16:21:38 ]
>>279
カーネル依存

281 名前:デフォルトの名無しさん mailto:sage [05/02/19 17:02:58 ]
struct task_structとstruct thread_infoってありますよね。

struct task_struct {
....
unsigned long flags; /* per process flags, defined below */

#define PF_ALIGNWARN0x00000001/* Print alignment warning msgs */
#define PF_STARTING0x00000002/* being created */
#define PF_EXITING0x00000004/* getting shut down */
#define PF_DEAD0x00000008/* Dead */

これってどういう意味ですか?
task_structってのはBSDのproc構造体とは違うんですか?

282 名前:デフォルトの名無しさん mailto:sage [05/02/19 18:16:00 ]
どのOSの話だよ。
まあ知ってはいるが、ちゃんと書け。バージョンもな。

あとここよりLinux板のカーネルなんちゃらスレの方が適切。


283 名前:デフォルトの名無しさん mailto:sage [05/02/20 06:17:43 ]
パーミッションをいじらないとmandatory lockをかけられないよな?

284 名前:デフォルトの名無しさん mailto:sage [05/02/20 15:49:27 ]
>>283
別に何の問題もないでしょ。
ファイルをロックする権限があるのに、パーミッションを変更
する権限がない状況なんてありえないんだから。

逆に、advisory と mandatory を切替えるのにプログラム側の
対処が全く必要ないっていうのは、大きなメリット。
開発サイドとはまったく関係なく、運用サイドだけで対応でき
るからね。


285 名前:デフォルトの名無しさん [05/02/20 20:32:46 ]
質問です。

fcntl (sock, F_SETOWN, getpid () );
fcntl (sock, F_SETFL, O_ASYNC);

でSIGIOを受けるようにした後で、
SIGIOが発生しないように、fcntlで設定をするにはどうしたらいいでしょうか?




286 名前:デフォルトの名無しさん mailto:sage [05/02/21 00:51:18 ]
O_ASYNC←→O_SYNC

287 名前:デフォルトの名無しさん [05/02/21 01:22:29 ]
>>286
ありがとうございました。

288 名前:デフォルトの名無しさん mailto:sage [05/02/21 10:41:42 ]
>>273
> これを商用UNIXと呼ばないで何を商用UNIXと呼ぶの?
RedHat が Open Group の conformance test 通ったら
商用 UNIX と呼んであげよう。


289 名前:デフォルトの名無しさん mailto:sage [05/02/21 10:57:14 ]
Linux is not Unix.

290 名前:デフォルトの名無しさん mailto:sage [05/02/21 11:08:50 ]
くだらね

291 名前:デフォルトの名無しさん mailto:sage [05/02/21 11:15:51 ]
>>290
チョー有名な再帰型定義だろ。今さら反応すんな。

292 名前:デフォルトの名無しさん mailto:sage [05/02/21 21:39:52 ]
>>288
それはcompatibleかどうかの定義であって
商用かどうかの定義とは異なるのでは?

293 名前:デフォルトの名無しさん mailto:sage [05/02/21 21:43:39 ]
商用Linuxという事でええやんか

294 名前:デフォルトの名無しさん mailto:sage [05/02/22 01:06:42 ]
だから商用UNIXというのはマシンとの抱き合わせ商法だってば
HP-UXとかSolarisとか
OSだけなんて商売にならねーって
M$でさえPCとのバンドルで儲けてるのに

295 名前:デフォルトの名無しさん mailto:sage [05/02/22 01:13:12 ]
だからさー、なんで抱き合わせだとかconoformance testに通ったかどうか
なんてのが「商用」になるのさ。
抱き合わせは、特定ハードウェア用の、という意味だろ?
全然商用と関係ないやん。



296 名前:デフォルトの名無しさん mailto:sage [05/02/22 01:13:34 ]
>>294
は?

297 名前:デフォルトの名無しさん mailto:sage [05/02/22 01:35:08 ]
>>295
だ〜か〜ら〜、「商用」の部分に文句をつけてる奴は
誰もいないんだってば。

「商用UNIX」ではなく「商用Linux」
OK?

298 名前:デフォルトの名無しさん mailto:sage [05/02/22 01:57:30 ]
は?商用UNIXという言葉の定義が不明瞭だという話では?

299 名前:デフォルトの名無しさん mailto:sage [05/02/22 03:49:24 ]
このスレのレベルが下がりつつあります。

300 名前:デフォルトの名無しさん mailto:sage [05/02/22 09:29:25 ]
>>292
通んなきゃ、少なくとも商標としての UNIX は名乗れんぞ。


301 名前:デフォルトの名無しさん mailto:sage [05/02/22 09:41:07 ]
Linuxのどのあたりがテストにひっかかるの?

302 名前:デフォルトの名無しさん mailto:sage [05/02/22 09:42:13 ]
そもそもLinuxはUNIXを名乗るつもりは毛頭無い

303 名前:デフォルトの名無しさん mailto:sage [05/02/22 10:46:15 ]
>>301
ttp://www.opengroup.org/ を自分で調べれ。

>>302
そらそうだ。


304 名前:デフォルトの名無しさん mailto:sage [05/02/22 11:42:37 ]
1 名前:名無し募集中。。。 投稿日:05/01/15 02:18:37
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

305 名前:デフォルトの名無しさん mailto:sage [05/02/22 13:34:24 ]
UNIXと名乗るにはライセンシーが必要。
当然、金がかかる。



306 名前:デフォルトの名無しさん mailto:sage [05/02/22 13:46:31 ]
JEDIと名乗るにはライトセイバーが必要。
金がかかるかどうかは知らない。

307 名前:デフォルトの名無しさん mailto:sage [05/02/22 14:38:08 ]
Linuxってスレッドに別のアドレス空間を割り当てることもできるの?

308 名前:デフォルトの名無しさん mailto:sage [05/02/22 15:04:04 ]
それスレッドとは言わない。


309 名前:デフォルトの名無しさん mailto:sage [05/02/22 15:38:55 ]
それはスッドレだな。

310 名前:デフォルトの名無しさん mailto:sage [05/02/22 17:41:25 ]
別に不可能ではないだろう

311 名前:デフォルトの名無しさん mailto:sage [05/02/22 18:52:10 ]
UNIXにRead/WriteProcessMemoryみたいなのありませんか?
プロセスのメモリ覗きたい

312 名前:デフォルトの名無しさん mailto:sage [05/02/22 19:09:09 ]
よく分らんけどptraceとか?

313 名前:デフォルトの名無しさん mailto:sage [05/02/22 20:11:34 ]
それであってる。

314 名前:デフォルトの名無しさん [05/02/25 01:14:14 ]
314げっち

315 名前:デフォルトの名無しさん mailto:sage [05/02/25 01:41:10 ]
時間を指定して 指定時間後に
XCloseDisplay
exit
したいのですが、その指定時間までの間にもXNextEvent の処理を受けたいのですが
この場合は どのように書くのでしょうか?
XNextEvent をループでまわして そのループの中でtimeで計算して指定時間後に抜けようと思ったのですが
XNextEvent は、イベントが起きるまでそこで止まってしまうのでループでまわすことができません
すいませんが、教えていただけると幸です



316 名前:デフォルトの名無しさん mailto:sage [05/02/25 03:14:38 ]
>>315
イントリンシックスにタイマーなかったっけ?
それなら時間になれば勝手にコールバックが呼ばれると思うが。

317 名前:デフォルトの名無しさん mailto:sage [05/02/25 05:24:04 ]
XtAddInput() だな。Xt 使ってるならそれでOK。

Xlib しか使ってないなら ConnectionNumber() で
ファイルディスクリプタを求めて、poll(2) かな。


318 名前:317 mailto:sage [05/02/25 07:25:27 ]
なに寝惚けてるんだ俺は。
s/XtAddInput/XtAddTimeout/

319 名前:デフォルトの名無しさん mailto:sage [05/02/25 17:21:07 ]
>>282
2.6のkernel/fork.cのdo_fork関数とcopy_process関数を読んだら分りました。
しかしこのネーミングなんとかならないですかね。もう手遅れかな。

320 名前:デフォルトの名無しさん mailto:sage [05/02/25 19:47:09 ]
>>319
Hurdを待て

321 名前:315 mailto:sage [05/02/25 23:16:31 ]
>>317
ありがとうございます
Xtはつかっていず、 Xlibだけです
ConnectionNumberとpollを調べてみたのですが
プログラミングを始めたばかりでよくわかりません
poll の第3引数にタイムアウトまでの時間を指定すると
言うことしかわかりませんでした・・・
すいませんが、 簡単にサンプルを書いていただけませんでしょうか?
すいませんが、 よろしくおねがいします

322 名前:デフォルトの名無しさん mailto:sage [05/02/25 23:51:46 ]
>>321
っていうかググれ!

323 名前:デフォルトの名無しさん mailto:sage [05/02/26 00:17:03 ]
俺、納品作業中で逃避したい気分だから答えちゃう。
たぶん、こんな感じ。


324 名前:デフォルトの名無しさん mailto:sage [05/02/26 00:17:39 ]
*** piyo.c.org  Fri Feb 25 23:51:21 2005
--- piyo.c      Sat Feb 26 00:07:42 2005
***************
*** 1,6 ****
--- 1,10 ----
  #include <stdio.h>
  #include <X11/Xlib.h>
  #include <X11/Xutil.h>
+ #include <sys/types.h>
+ #include <poll.h>
+ #include <time.h>
+ #include <errno.h>
  
  #define STRING        "Hello, world"
  #define BORDER        1
***************
*** 49,54 ****
--- 53,59 ----
      XSizeHints xsh;
      char *geomSpec;
      XSetWindowAttributes xswa;
+     time_t deadline = 0;
  
      if ((dpy = XOpenDisplay(NULL)) == NULL) {
        fprintf(stderr, "%s: can't open %s\n", argv[0], XDisplayName(NULL));

325 名前:デフォルトの名無しさん mailto:sage [05/02/26 00:18:49 ]
***************
      XMapWindow(dpy, win);
  
      for (;;) {
+       time_t now;
+       struct pollfd fd;
+       int rv;
+
+       if (deadline != 0 && !XPending(dpy)) {
+           time(&now);
+           if (deadline <= now)
+               break;
+           fd.fd = ConnectionNumber(dpy);
+           fd.events = POLLIN;
+           rv = poll(&fd, 1, (deadline - now) * 1000);
+           if (rv == -1) {
+               if (rv == EINTR)
+                   continue;
+               perror("poll");
+               exit(1);
+           }
+           if (rv == 0) /* timer expired */
+               break;
+       }
        XNextEvent(dpy, &event);




326 名前:デフォルトの名無しさん mailto:sage [05/02/26 00:20:40 ]
deadline が 0 だったら終了しない。
deadline に、終了時刻 (UNIX Epoch からの秒数) を入れておくと、
そのタイミングで終わる。


327 名前:デフォルトの名無しさん mailto:sage [05/02/26 00:28:51 ]
あ、すまんちょっと間違えた。
if (rv == EINTR)
は、
if (errno == EINTR)
が正しい。


328 名前:デフォルトの名無しさん mailto:sage [05/02/26 00:34:01 ]
piyo.cってなんだよww

329 名前:デフォルトの名無しさん mailto:sage [05/02/27 10:26:19 ]
しかも何故にpatchなのかw

330 名前:デフォルトの名無しさん mailto:sage [05/02/28 04:59:34 ]
セキュリティ対策です

331 名前:デフォルトの名無しさん mailto:sage [05/02/28 05:06:12 ]
ワロス

332 名前:117 = 124 mailto:sage [05/02/28 13:57:11 ]
>>325
for 分の、
(;;) ← が、なんかモサモサしててカワイー

333 名前:デフォルトの名無しさん mailto:sage [05/02/28 13:57:44 ]
↑ for 文の、

334 名前:デフォルトの名無しさん [05/03/01 09:26:59 ]


335 名前:デフォルトの名無しさん mailto:sage [05/03/01 16:53:14 ]
C, C++(gcc)で任意の文字コードをEUCやUTF-8に変換したいのですが,
良いライブラリがあったらお教えください。

ちょっと探してみたんですがシンプルで使いやすそうなのが見つかりませんでした。



336 名前:デフォルトの名無しさん mailto:sage [05/03/01 17:00:59 ]
www.gnu.org/software/libiconv/

337 名前:デフォルトの名無しさん mailto:sage [05/03/01 17:33:15 ]
ふつー、iconv(3C) くらいあるでしょ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<215KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef