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


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

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



1 名前:デフォルトの名無しさん mailto:sage [2005/05/24(火) 13:14:50 ]
UNIXおよびUNIX clone環境一般のプログラミングに関する質問スレッド

前スレ
Part5 pc8.2ch.net/test/read.cgi/tech/1105723117/
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使っている人いますか? その14 (UNIX板)
pc8.2ch.net/test/read.cgi/unix/1107587275/
Cygwin使っている人いますか? 3 (Windows板)
pc8.2ch.net/test/read.cgi/win/1090131123/


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

175 名前:133 [2005/06/16(木) 13:39:21 ]
ここに貼っては駄目でしょうか?アップローダー使った事がないのです。

176 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:42:52 ]
>>175
ダメ。絶対。

177 名前:133 [2005/06/16(木) 13:44:54 ]
大量なコードではなくおおよそ30ステップくらいですが
だめでしょうか?

178 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 13:46:52 ]
ダメ男が都合のいい女にしつこくしている構図だな

179 名前:デフォルトの名無しさん [2005/06/16(木) 13:56:15 ]
また馬鹿がひつこいな

180 名前:133 [2005/06/16(木) 14:26:16 ]
貼るなといわれたのであれば諦めます。すみません

181 名前:デフォルトの名無しさん [2005/06/16(木) 15:07:37 ]
>>180
せめてコンパイルくらい通してくれ

182 名前:デフォルトの名無しさん [2005/06/16(木) 15:08:49 ]
ソースうpまだ〜 (・∀・ )っ/凵 ⌒☆チンチン

183 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:14:03 ]
>>176 覚醒剤撲滅キャンペーン?
>>178 「先っちょだけでいいからさぁ」ってやつ?
>>181 同意



184 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:17:12 ]
>177 133  2005/06/16(木) 13:44:54
>180 133  2005/06/16(木) 14:26:16
この間にアップローダの使い方くらいいくらでも調べられそうな気がするが。

185 名前:133 [2005/06/16(木) 15:18:47 ]
コンパイルは通りました。いかがでしょうか?嘘ではありません

186 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:22:10 ]
自治厨うざい、>>133は気にせずソース貼れ

187 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:24:40 ]
つーか、他人のいうこと聞かないんだったら最初から貼ればいいのにね。

188 名前:デフォルトの名無しさん [2005/06/16(木) 15:27:17 ]
>>185
馬鹿かおまえは
もう自分で解決できるだろ
うせろよ

189 名前:133 [2005/06/16(木) 15:28:01 ]
優しいお言葉ありがとうございます。それでは貼らせていただきます。
お願いします。見た感じ一覧が取得できそうだったのですが、サブフォルダ配下
のファイル列挙が行われていなさそうなのです。
2レスにわけます。


#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <ftw.h>
#include <time.h>
#include <dirent.h>
int fn (const char *, const struct stat *, int);
void main (int argc, char *argv[] ){
if (ftw (argv[1], fn, 10) != 0)
perror ("ftw"); exit (2);
exit (0);
}

190 名前:133 [2005/06/16(木) 15:29:10 ]
int fn (const char *name, const struct stat *statptr, int flag){
int i;
char *basename;
DIR *dp;/*DIRの定義*/
struct dirent *dir;/*DIRの構造体*/
struct stat buf;/*ファイル情報の構造体*/
int result;/*処理の結果戻り値*/
if (flag == FTW_D){/*ディレクトリの場合は配下の情報取得を行う*/
if ( (dp=opendir(name)) == NULL ) /*DIRを開く*/
perror( "指定されたディレクトリが存在しません。" );
while ((dir = readdir(dp)) != NULL ){/* カレントディレクトリのファイル一覧を取得 */
result = stat(dir->d_name, &buf );
if( result != 0 )/* ファイル状態情報が取得できたかのチェック */
perror( "ファイルの情報の取得に失敗しました。" );
else{
printf( "file : %s\n", dir->d_name );
printf( "size : %ld\n", buf.st_size );
printf( "Date : %s", ctime( &buf.st_mtime ) );
}
}
return 0;
}
return 0;
}

つっこみどころ満載だと予見しておりますが、必死に頑張りましたので
御教授お願いいたします。

191 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:31:47 ]
俺は新手のパフォーマンスだと思う(w

192 名前:デフォルトの名無しさん [2005/06/16(木) 15:32:06 ]
>>189
馬鹿かおまえは
アビバに行けよ

193 名前:デフォルトの名無しさん [2005/06/16(木) 15:35:45 ]
>>191
つーか新手の荒らしだろ
イヤガラセ



194 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:40:52 ]
>void main
ここまで読んでやめた

195 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:41:41 ]
>>192
いや、アビバに行くとか以前に日本語の勉強が必要だろ。

196 名前:133 [2005/06/16(木) 15:52:31 ]
>>194
すみません。通常intですね。理解しています。
あと不要な変数が残っていました。すみません


197 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 15:56:37 ]
>>196
他人の意見は聞かない、ftw()のマニュアルページを読んでその程度しか理解できてない、
そんな調子ならいっそ人間止めたほうがいいよ。

198 名前:133 [2005/06/16(木) 15:58:20 ]
>>197
厳しい御指導ありがとうございます。

199 名前:デフォルトの名無しさん [2005/06/16(木) 16:01:54 ]
>>198
気色わるい謙虚さだな
ほめ殺しの類似のイヤガラセか?
慇懃不礼みたいな

200 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 16:39:32 ]
スルーした方がいいって。

201 名前:デフォルトの名無しさん [2005/06/16(木) 16:57:52 ]
アビバに行ってもプログラミングは教えてくれないと思う。
とマジレス

202 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:00:11 ]
さっそく [アビバ プログラミング] でググってみますた。

203 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:31:04 ]
アミバ最強



204 名前:133 [2005/06/16(木) 17:35:07 ]
私の理解力では上記のコーディングしかイメージが浮かばなかったので
おそらく間違いとして認識している具体的なコードの指摘を受けれれば
ftwの使い方も理解できるようになれるかと思っております。
教えていただいたページや、その他も参照してみましたが
この関数について、実際の使用例があまりにも少なく、皆様のスキルを
お借りし、理解を深めようとおもいました。迷惑だったなら申し訳ありません。

205 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:35:39 ]
一行に数字が書いてあるファイルが或とします
1
2
3
等、それは複数あります

これを、hoge[]に変数1つにつき一行の値を入れて行きたいのですが
このコードをかいていただけないでしょうか?

206 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:41:56 ]
いただけません。

207 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 17:42:40 ]
@hoge = <>;

208 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:02:00 ]
>>207
そっか、言語指定無かったもんな

209 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:02:29 ]
hoge[]
と書いてあるわけだが

210 名前:205 mailto:sage [2005/06/16(木) 18:03:28 ]
すいません
C言語です

211 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:06:10 ]
#include <stdlib.h>

int main(void)
{
  system("perl -e '@hoge = <>;'");
  return 0;
}

212 名前:205 mailto:sage [2005/06/16(木) 18:08:21 ]
perlは入っていません

また、systemとかは使わずに
C言語しか、使わずにそのひとつのファイルで完結するように
システムコール以外の呼出はしないようにお願いします

213 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:08:50 ]
断る。



214 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:08:52 ]
unixらしい宿題ですね

215 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:10:22 ]
hoge[NR] = $1;
って書きにきたら時既に遅しw


216 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:11:42 ]
>>212
>C言語しか、使わずにそのひとつのファイルで完結するように
>システムコール以外の呼出はしないようにお願いします
ストリーム系ライブラリは使っちゃいけないの?

217 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:11:48 ]
答えない奴は2chをみないで下さい

218 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:13:05 ]
スレ違いだから宿題スレに行けよ

219 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:13:17 ]
標準ライブラリの読み込みは可能です

220 名前:デフォルトの名無しさん [2005/06/16(木) 18:18:45 ]
>>219
またおまえか
アビバに行けっつのがわからんのか

221 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:21:30 ]
>>218, >>220
>>217

222 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:43:25 ]
void hage(int hoge[], char const *fn){
int fd = open(fn, O_RDONLY); struct stat s; fstat(fd, &s);
{const char *fbuf = mmap(0,s->st_size, PROT_READ,MAP_PRIVATE,fd,0);const char *p;
int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s->st_size]; p++)
{ if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}}
munmap(fbuf,s->st_size);close(fd);}}

エラーチェックは省略。コンパイルは掛けてない。システムコールのみ使用。数字はASCIIに従うこと。

223 名前:205 mailto:sage [2005/06/16(木) 18:43:39 ]
誰かお願いします



224 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:44:54 ]
あ、sはポインタや無かった。脳内コンパイルはあかんなぁ。やっぱし。

225 名前:205 mailto:sage [2005/06/16(木) 18:48:41 ]
fopenを使ってお願いします

226 名前:デフォルトの名無しさん [2005/06/16(木) 18:52:47 ]
まじめに答えてるやつは
宿題やらされてるのがわからんのか

227 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:57:21 ]
>>226
誰ひとり真面目に答えてないのがわからんのか?(w

228 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 18:58:27 ]
void hage(int hoge[], const char *fn){
FILE* fp = fopen(fn, "r"); struct stat s; fstat(fileno(fp), &s);
{const char *fbuf = mmap(0,s.st_size, PROT_READ,MAP_PRIVATE,fileno(fp),0);
const char *p;int i=0; hoge[i]=0; for(p=fbuf; p!=&fbuf[s.st_size]; p++)
{ if( '0'<=*p&&*p<='9' ){hoge[i]=hoge[i]*10+*p-'0'; } else if( hoge[i] ){ i++; hoge[i]=0;}}
munmap(fbuf,s.st_size);fclose(fp);}}

ほい。fopen版。これ以上条件を小出しにするようなら、おいらは対応しないから。

229 名前:デフォルトの名無しさん mailto:sage [2005/06/16(木) 19:00:13 ]
うっせぇーばーか

230 名前:デフォルトの名無しさん [2005/06/16(木) 20:12:14 ]
>>205
スレ違い
pc8.2ch.net/test/read.cgi/unix/1062659209/l50

231 名前:133 [2005/06/16(木) 23:56:29 ]
私のところも何とかお願いできませんか?

232 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:05:53 ]
>>138 の文字列部分のコマンド入力で済むことを、わざわざCで書かなければいけないってのが、
「ちょっと見てやろうか」という気持ちを全く起こさせない原因なのだよ

233 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:31:41 ]
/* それでもCでやる馬鹿 */
#define CMD_STR "find %s>%s"
void func(const char * targetDir, const char * outputFile)
{
if (targetDir == NULL || outputFile == NULL) {
return;
}
char * buf = malloc(strlen(targetDir) + strlen(outputFile) + sizeof(CMD_STR));
if (buf == NULL) {
return;
}
sprintf(buf, CMD_STR, targetDir, outputFile);
system(buf);
free(buf);
}



234 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:48:08 ]
system()で呼び出すだけでは、それこそまったく意味が無いな。
より実用的でありがちなのはpopen()を使う例だろう。

235 名前:133 [2005/06/17(金) 00:55:03 ]
すみません。すべてネタをばらします。実はですね
VBで作った画面があるんですが、機能詳細はWindows端末から
ボタンを押してあるリモート側DIRの下にあるファイル一覧を取得して
リダイレクトした結果をダウンロードする仕組みがあるのです
要はLIB管ツールのプログラム納品資材確認機能だったのですが、以前
私が担当していた環境はVMSマシンでした。ところが今年から
UNIX管理資材とかLINUX管理資材とかが出現してきて以前のVMSの
総合的な動作を丸々流用して使いまわししないといけなくなったのです
VB画面のボタンからUNIXへリモート処理する仕組みは丸々流用できるので
そこで明示的にコールしているVMS上においているDIR情報取得ツールを
UNIXとかLINUXで同じように動くように作成したいのです。可能でしょうか?



236 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 00:57:40 ]
find

237 名前:133 [2005/06/17(金) 00:59:16 ]
findでは半年前のファイルに対しての情報で時刻部が欠落してしまうのです
もちろんソラリス10だとLSの--full-timeで問題なく落とせるわけですが

238 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:02:08 ]
>>235
そんならpopen(3)でfind(1)を呼ぶのが一番ラクだな

FILE *fp;
char buff[8192];

snprintf(buff, "find ......);
FILE *fp = popen(buff, "r");
while (fgets(buff, sizeof buff, fp)) { ..... }
pclose(fp);

こんな感じだ

239 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:03:32 ]
>>237
なら取得できたファイル名に対してstat()すればよかろ

240 名前:133 [2005/06/17(金) 01:08:47 ]
>>238
その手法は一度調べてみます。ありがとうございます。

>>237
上部の私が貼ったソースで既にstatが見受けられると思いますが
statのメイン部分では問題なくfullTimeを取得できる結果を得ていますので
その個別にstatを行うための拠点DIRにおいてそれぞれ処理する方法を
お伺いしている次第なのです。
指定したDIR配下の詳細データを列挙したくおもいます

241 名前:デフォルトの名無しさん [2005/06/17(金) 01:17:22 ]
自分で出来ないなら仕事辞めれ
他のまともな人に雇用を譲れ

242 名前:133 [2005/06/17(金) 01:24:23 ]
それはごもっともかもしれません
自分で解決して生きていかねばならない世の中ですから
いつまでも他人に甘えて生きていけるわけではありません
重々承知です。

243 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 01:36:28 ]
つか今の時代ネットが随分便利になってるし
キーワードもらえればそれで十分でしょ?
宿題○投げ学生サンじゃないんだしさ、給料貰ってんでしょ、それで?

といいつつ。

>>240
stat()の引数に指定するパス名はフルパスか、カレントディレクトリからの
相対パスでなければならない。
popen()でfind(1)を実行する場合に、カレント以外のディレクトリを
指定したんなら、そのディレクトリのフルパスにfind(1)から出力
されたパスを足せばいいでしょ。
そんぐらいは、できるよね?




244 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 06:54:17 ]
ダメ男にあれこれやってやると、ますますダメな奴を作る事になるぞ
ああ、それが狙いか?

245 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 07:37:54 ]
なんかSolarisでfulltimeで取得できる云々をみて思い出したが、>>133は前スレの>>970か同じ職場のやつかな。
>>980のソースを弄るだけでいいと思うが。

246 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 07:58:21 ]
>>153

247 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:01:21 ]
235と153が激しく矛盾している点について。

248 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:04:00 ]
>>245
漏れもそれを思い出していますた。

249 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 08:56:39 ]
狼少年あらわる

250 名前:デフォルトの名無しさん [2005/06/17(金) 10:23:16 ]
みんな気をつけろ!
コイツはとんだクワセ者だぞ!

251 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 10:35:13 ]
だからスルーしとけと言ったのに。

252 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 12:36:36 ]
もう来ないだろ。俺は面白かったから文句無い

253 名前:デフォルトの名無しさん mailto:sage [2005/06/17(金) 13:02:08 ]
>>244
イイんじゃね?
仕事ができないクズは、一度どうしようもないくらい追い込まれないと治らないから(笑)。



254 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 10:15:48 ]
ftw(3)なんて関数あるんだ、知らなかった。
ほんのちょっと楽が出来るという微妙な関数だな、これ

#include <stdio.h>
#include <ftw.h>

int func(const char *path, const struct stat *st, int type)
{
  printf("%s is ", path);
  switch(type){
  case FTW_F:  printf("File\n"); break;
  case FTW_D:   printf("Directory\n"); break;
  }
  return 0;
}

int main(int ac, char **av)
{
  ftw(av[1], func, 10);
}


255 名前:デフォルトの名無しさん mailto:sage [2005/06/19(日) 15:32:49 ]
微妙というか発想はLisperっぽいね。

256 名前:133 [2005/06/20(月) 00:42:41 ]
ありがとうごさいました。うまく動きそうです。
感謝します。皆さまの数々の親身な対応に頭があがりません。ありがとうございました。

257 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 01:38:27 ]
オオカミがきたぞ

258 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 17:58:25 ]
良く分かってないので変な質問かもしれませんが…

mkdir -p /xxx/xxxx 2> /dev/null

この 2> ってどういう意味なのでしょう?

259 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:05:41 ]
man pipe

260 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:10:26 ]
www.google.co.jp/search?hl=ja&lr=lang_ja&q=2

261 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:11:04 ]
>>258
ファイル記述子の2番への出力をりだいれくと。

262 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:11:50 ]
>>258

n> file
は、ファイルディスクリプタ n を file にリダイレクトする。
ファイルディスクリプタ 2 は標準エラーに割り当てられているから、
その例では、mkdir の標準エラーへの出力を /dev/null にリダイレクトして
捨てている。

263 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:14:46 ]
>>261-262
ありがとうございます



264 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:21:14 ]
>>258
>>259が1番正確な答えをいってるのになぜ感謝をせん

>>261->>262
お前等も甘やかすな
スレ違い以上に板違いだろが
痔になって死ね

265 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:24:28 ]
黙れホモ野郎

266 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:26:50 ]
> >>259が1番正確な答えをいってるのになぜ感謝をせん

それを言うなら man sh あたりだろwwww


267 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 18:34:57 ]
うは
ほんとに
man pipeに載ってるね

268 名前:デフォルトの名無しさん [2005/06/20(月) 19:05:43 ]
APUE 読めってことだね

269 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:19:49 ]
>>268
高い。厚い。
あの手の本は電車の中で読めるように5冊ぐらいに分けて欲しいよ。

270 名前:デフォルトの名無しさん [2005/06/20(月) 22:38:25 ]
www.amazon.co.jp/exec/obidos/ASIN/4894712059/
非常にハイレベルです, 2003/06/01
レビュアー: 本音のレビューアー (プロフィールを見る)   東京都 Japan
中途半端なレベルのエンジニアが買うと痛い目を見ます。

プログラミングのセンスがあり、ネットワーキングについてもそれ相応の知識と経験がある方が読むと、骨の隋まできっちりと把握できるでしょう。

非常に高価な本なので、一度本屋で目を通してから買うことをお勧めします。


271 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 22:47:41 ]
AdvancedWindowsの方がためになるし、高い。

272 名前:質問です [2005/06/20(月) 23:54:26 ]
質問です、
共有ライブラリの検索パスが通っているディレクトリを調べるには
どうすればよいのでしょうか?

273 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 23:57:49 ]
ld.so.conf



274 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:10:40 ]
$ echo $LD_LIBRARY_PATH | awk -F: '{ for (i = 1; i <= NF; i++) { print $i } }'; ldconfig -p | tail +2 | awk '{ print $NF }' | xargs -n 1 dirname | sort | uniq

こんなかんじ?

275 名前:デフォルトの名無しさん mailto:sage [2005/06/21(火) 00:26:42 ]
まー、OSによって違うしね






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

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

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