namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
FORM tag in NMZ.head
- From: Hajime BABA <baba@xxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 6 Feb 1998 20:24:08 +0900
- X-ml-name: namazu
- X-mail-count: 00129
馬場@京大宇宙物理 です。
現在の mknmz を使うと、NMZ.head の中に FORM タグが含まれています
(僕が最初にお願いしたんです)が、non CGI から
% namazu -h keyword > results.html
のようにしてHTMLを出力した時には、そこからさらに検索できるわけでも
ない(検索するとエラーになる)のにくっついていて、これをブラウズして
いると逆にじゃまに感じます。なので、これを NMZ.form として分離して、
NMZ.form は CGI 経由の時だけ出力するようにしてみました。どうでしょ
うか。
# lynxcgi 経由の時にも NMZ.form を出力しないようにした方が良いと
# おもう(srnmz.c: 2050行目付近)んだけど、どのときに lynxcgi 経由
# なのかを判定する術を知らないのでそのままにしてあります。
このパッチを当てるときの注意点は、これを当てるとインデックスを作り
直す必要があるということです。旧来のNMZ.*を利用すると、NMZ.form が
無い、といって怒られます。まあ、NMZ.head を編集して NMZ.form を作
ればそれで済む話ではありますが。
ついでに、
% namazu -h keyword > results.html
の出力に Content-type: が含まれるのは不格好だなとおもっていたので、
MIME_HEADER も CGI 経由の時だけ出力するようにしました。
# これらに伴って、srnmz.c の中の is_cgi はグローバル変数に変更。
--
馬場 肇 ( Hajime BABA ) E-mail: baba@xxxxxxxxxxxxxxxxxxxxxx
京都大学理学部宇宙物理学教室 博士課程一回生
--
--- mknmz.pl.orig Fri Feb 6 18:18:16 1998
+++ mknmz.pl Fri Feb 6 19:15:32 1998
@@ -80,6 +80,7 @@
$HASH = "$DBNAME.h";
$REGLIST = "$DBNAME.r";
$HEADERFILE = "$DBNAME.head";
+$FORMFILE = "$DBNAME.form";
$FOOTERFILE = "$DBNAME.foot";
$LOGFILE = "$DBNAME.log";
$SLOGFILE = "$DBNAME.slog";
@@ -215,6 +216,10 @@
<STRONG>インデックスの最終更新日時: <!-- DATE --> date <!-- DATE --></STRONG>
</P>
<HR>
+EOFheader
+
+## 検索プログラムが用いるFORMファイル ($FORMFILE) のサンプル
+$FORM_MSG = <<EOFform;
<FORM METHOD="GET" ACTION="$CGI_ACTION">
<P>
<STRONG>検索式:</STRONG>
@@ -238,7 +243,7 @@
</P>
<INPUT TYPE="HIDDEN" NAME="whence" VALUE="0">
</FORM>
-EOFheader
+EOFform
## 検索プログラムが用いるフッタファイル ($FOOTERFILE) のサンプル
$FOOTER_MSG = <<EOFfooter;
@@ -924,6 +929,7 @@
&flist_index;
®istration_file_put;
&headfoot($HEADERFILE_, $file_count, $key_count);
+ &headfoot($FORMFILE_, $file_count, $key_count);
&headfoot($FOOTERFILE_, $file_count, $key_count);
&lock_msg_put;
&content_msg_put;
@@ -1037,6 +1043,7 @@
rename($INDEXINDEX_, $INDEXINDEX);
rename($HASH_, $HASH);
rename($HEADERFILE_, $HEADERFILE);
+ rename($FORMFILE_, $FORMFILE);
rename($FOOTERFILE_, $FOOTERFILE);
# lock ファイルを削除する
@@ -1093,6 +1100,7 @@
$HASH = "$current_dir$PSC$HASH";
$REGLIST = "$current_dir$PSC$REGLIST";
$HEADERFILE = "$current_dir$PSC$HEADERFILE";
+ $FORMFILE = "$current_dir$PSC$FORMFILE";
$FOOTERFILE = "$current_dir$PSC$FOOTERFILE";
$LOGFILE = "$current_dir$PSC$LOGFILE";
$SLOGFILE = "$current_dir$PSC$SLOGFILE";
@@ -1110,6 +1118,7 @@
$INDEXINDEX_ = "$INDEXINDEX.$$";
$HASH_ = "$HASH.$$";
$HEADERFILE_ = "$HEADERFILE.$$";
+ $FORMFILE_ = "$FORMFILE.$$";
$FOOTERFILE_ = "$FOOTERFILE.$$";
}
@@ -1254,6 +1263,7 @@
cp($FLIST, "$FLIST.base");
cp($INDEX, $INDEX_);
cp($HEADERFILE, $HEADERFILE_);
+ cp($FORMFILE, $FORMFILE_);
cp($FOOTERFILE, $FOOTERFILE_);
@@ -1328,6 +1338,7 @@
else {
# ヘッダファイルとフッタファイルとそれぞれのメッセージを読み込み
$_ = $HEADER_MSG if $file eq $HEADERFILE_;
+ $_ = $FORM_MSG if $file eq $FORMFILE_;
$_ = $FOOTER_MSG if $file eq $FOOTERFILE_;
}
--- srnmz.c.orig Fri Feb 6 18:18:16 1998
+++ srnmz.c Fri Feb 6 19:24:49 1998
@@ -140,6 +140,7 @@
static char *INDEXINDEX = "NMZ.ii";
static char *HASH = "NMZ.h";
static char *HEADERFILE = "NMZ.head";
+static char *FORMFILE = "NMZ.form";
static char *FOOTERFILE = "NMZ.foot";
static char *LOCKFILE = "NMZ.lock";
static char *LOCKMSGFILE = "NMZ.msg";
@@ -189,6 +190,7 @@
/* グローバルな変数 */
+int is_cgi = 0; /* CGI 経由での起動なら 1 */
int RListMax = 20; /* 一度につきの結果出力の最大数 */
int RListWhence = 0; /* 結果出力の先頭の値 */
int Debug = 0; /* デバッグ用フラグ -d オプション */
@@ -214,7 +216,7 @@
uchar *KeyItem[KEY_ITEM_MAX + 1]; /* 検索式の各項目を示すポインタ */
/* わかち書きプログラムとオプション */
-FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Header, *Footer, *Hash;
+FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Header, *Form, *Footer, *Hash;
/* CGI 変数取得用マクロ */
@@ -487,7 +489,7 @@
/* デバッグ用のセコイ関数 */
void error(const char *msg)
{
- if (HtmlOutput) fputs(MIME_HEADER, stderr);
+ if (HtmlOutput && is_cgi) fputs(MIME_HEADER, stderr);
fprintf(stderr, "%s: something error occurred.\n", msg);
exit(1);
}
@@ -1437,6 +1439,8 @@
error(HASH);
if (NULL == (Header = fopen(HEADERFILE, "rb")))
error(HEADERFILE);
+ if (NULL == (Form = fopen(FORMFILE, "rb")))
+ error(FORMFILE);
if (NULL == (Footer = fopen(FOOTERFILE, "rb")))
error(FOOTERFILE);
@@ -1451,6 +1455,7 @@
fclose(IndexIndex);
fclose(Hash);
fclose(Header);
+ fclose(Form);
fclose(Footer);
}
@@ -1812,7 +1817,7 @@
if ((lock = fopen(LOCKFILE, "rb"))) {
fclose(lock);
- fputs(MIME_HEADER, stdout);
+ if (is_cgi) fputs(MIME_HEADER, stdout);
if (NULL == (lockmsg = fopen(LOCKMSGFILE, "rb")))
error(LOCKMSGFILE);
while (fgets(buf, BUFSIZ, lockmsg))
@@ -1827,7 +1832,7 @@
{
for (; *dbname; dbname++) {
if (*dbname == '/') {
- fputs(MIME_HEADER, stdout);
+ if (is_cgi) fputs(MIME_HEADER, stdout);
euctojisput(INVALID_DB_NAME, 0);
exit(0);
}
@@ -2047,8 +2052,9 @@
}
- if (HtmlOutput) fputs(MIME_HEADER, stdout);
+ if (HtmlOutput && is_cgi) fputs(MIME_HEADER, stdout);
if (HtmlOutput) headfootcat(Header, keystring);
+ if (HtmlOutput && is_cgi) headfootcat(Form, keystring);
if (!keysplit(keystring))
searchmain();
if(HtmlOutput) headfootcat(Footer, keystring);
@@ -2066,13 +2072,13 @@
if (!cgiparamget(keystring))
usage(argv0); /* CGI じゃないと判明すれば usage 表示 */
if (-1 == chdir(DEFAULT_DIR)) {
- fputs(MIME_HEADER, stderr);
+ if (is_cgi) fputs(MIME_HEADER, stderr);
fprintf(stderr, "Cannot chdir to %s\n", DEFAULT_DIR);
euctojisput(ERROR_MSG, 0);
exit(1);
}
if (DbName[0] && validdbname(DbName) && (-1 == chdir(DbName))) {
- fputs(MIME_HEADER, stderr);
+ if (is_cgi) fputs(MIME_HEADER, stderr);
fprintf(stderr, "Cannot open %s/%s.\n",
DEFAULT_DIR, DbName);
exit(1);
@@ -2082,7 +2088,7 @@
/* main 関数 */
int main(int ac, uchar *av[])
{
- int i = 0, is_cgi = 0;
+ int i = 0;
uchar keystring[BUFSIZ] = "";
#ifdef FAST_CGI
@@ -2138,7 +2144,7 @@
filesopen();
f = 1;
#ifdef FAST_CGI_DEBUG
- puts(MIME_HEADER);
+ if (is_cgi) puts(MIME_HEADER);
printf("DB Changed! DbName:[%s] before[%s]\n", DbName, before_dbname);
#endif
strcpy(before_dbname, DbName);