Namazu-users-ja(旧)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

namazu.cgi と namazu の version up



  こんばんは、小宮@神奈川工科大学です。


  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.