Namazu-users-ja(旧)


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

namazu コマンドを cgi から使用するには?



岩村です。

  始めまして。
  Namazuを使って、CGIを立ち上げようとしているのですが、
  うまくいかないので、ご教授ください。

  CGIなので、namazu.cgi使用すれば、問題ないのですが、
  Postgresとの連携、また、特殊フォーマットでのHtml出力
  が必要なため、namamuコマンドをCGIから呼び出そうとし
  ています。

  用いている言語は、C言語です。呼び出しには、popenを
  使用しています。

  しかし、namazuコマンドを呼び出すと、
    「namazu.cgi」コマンドを使用しなさい
  というエラーメッセージが帰ってきてしまいます。

  CGI内部でnamazuコマンドを使用することはできないので
  しょうか?

  憶測では、環境変数を少しいじってやるとよいよい気がしま
  すが...

  ちなみに、呼び出し部分のプログラムです。

    sprintf(Buf,"/usr/local/bin/namazu -c %s %s",KEY,PATH_TO_INDEX);
    if((pi = popen(Buf,"r")) == NULL) {
        strcpy(ErrString,"Can not Open namazu");
        goto ERR_EXIT;
    }
    fgets(Buf,1024,pi);
    if(Buf[strlen(Buf) - 1] == '\n') Buf[strlen(Buf) - 1] = '\0';
    AllPt = atoi(Buf);

    sprintf(Buf,"/usr/local/bin/namazu -l -n40 -w%d %s
%s",CurPt,KEY,PATH_TO_INDEX);
    if((pi = popen(Buf,"r")) == NULL) {
        strcpy(ErrString,"Can not Open namazu");
        goto ERR_EXIT;                  /* エラー文字列取得&終了
*/
    }
    RNum = 0;
    while(fgets(Buf,1024,pi)) {
        i = strlen(Buf) - 9;j = 0;
        while(Buf[i++] == '0');
        while((Buf1[j++] = Buf[i++]) != '.');
        Buf1[--j] = '\0';
        Result[RNum++] = atol(Buf1);
    }