Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
namazu.cgi と namazu の version up
- From: Takeshi Komiya <katsuwo@xxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Sun, 13 Jan 2002 01:58:07 +0900
- X-ml-name: namazu-users-ja
- X-mail-count: 02363
こんばんは、小宮@神奈川工科大学です。
namazu.cgi を利用する際には namazu.cgiを設置場所にコピーすればよいと
マニュアルにありますが、コピーをしてしまうと namazu の
version up をした際にコピーをしたものは古いままになってしまいます。
当然、version up の際にコピーをし直せばよいのでしょうが、
管理者と namazu.cgi の設置者が違う場合などには問題になります。
なにかよい解決方法などはあるのでしょうか??
これは私が最近 namazu for hns を設定していて気づきました。
# 最近まで 2.0.4(!?) なんてのを使っていたので、びっくりしたのです。
# /usr/bin/namazu はちゃんと 2.0.10 だったのですけどねぇ。
私は最初 symlink をすればよいと考えたのですが、
web server の設定次第では symlink が利用できないのでよくないそうです。
私は namazu.cgi をちょっといじってみることを考えてみたのですが、
こんなもの(メールの最後参照)でもいいんでしょうかね。
namazu.cgi をコピーする代わりに
#!/bin/sh
/usr/lib/cgi-bin/namazu.cgi -c .namazurc
という wrapper script を設置すると動作します。
あまり素敵な手では無いんですが、namazu.cgi をコピーしなくて済みます。
# c 言語かなり忘れちゃったので、bug とかがあったらごめんなさい。
--- namazu-2.0.10/src/namazu-cgi.c Sun Sep 2 16:13:38 2001
+++ namazu-2.0.10.katsuwo/src/namazu-cgi.c Sat Jan 12 18:27:40 2002
@@ -78,6 +78,7 @@
#include "system.h"
#include "namazu.h"
#include "result.h"
+#include "getopt.h"
/*
*
@@ -87,6 +88,9 @@
static void suicide ( int signum );
static void combine_pathname( char *dest, const char *command, const
char *name
);
+static int parse_options ( int argc, char **argv );
+
+static int keep_namazurc = 0;
static void
suicide (int signum)
@@ -118,6 +122,39 @@
return;
}
+
+/*
+ * Command line options.
+ */
+static const char *short_options = "c:";
+static struct option long_options[] = {
+ { "config", required_argument, NULL, '0' }
+};
+
+/*
+ * Parse command line options
+ */
+static int
+parse_options(int argc, char **argv)
+{
+ for (;;) {
+ int ch = getopt_long(argc, argv, short_options, long_options,
NULL);
+ if (ch == EOF) {
+ break;
+ }
+ switch (ch) {
+ case 'c':
+ if (nmz_is_file_exists(optarg)) {
+ set_namazurc(optarg);
+ keep_namazurc = 1;
+ }
+ break;
+ }
+ }
+
+ return optind;
+}
+
/*
*
* Public functions
@@ -127,6 +164,7 @@
int
main(int argc, char **argv)
{
+ int i = 0;
char query[BUFSIZE] = "", subquery[BUFSIZE] = "";
char *localedir = getenv("NAMAZULOCALEDIR");
@@ -174,7 +212,15 @@
set_formprint(1); /* Print "<form> ... </form>" */
set_uridecode(0); /* Do not decode URI in results. */
- {
+ /*
+ * Parse options
+ */
+ parse_options(argc, argv);
+
+ /*
+ * Load .namazurc
+ */
+ if (!keep_namazurc) {
/*
* Load .namazurc located in the directory
* where namazu.cgi command is if it exists.