HyperEstraierのdoc_linkをURLデコードして表示


Warning: Undefined array key "file" in /usr/local/www/apache24/data/wordpress/wp-includes/media.php on line 1723
この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m


(超弩級Wikipedia検索の画面をお借りしてます)

緑色で、http://ja.wikipedia.org/wiki/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX になっている部分は、URLエンコードされている。

日本語フォルダ・ファイル名が大量にあるドキュメントに対して、estcmd gatherしているような場合は、
URLデコードされた状態で表示して欲しい場合もあります。ので、そのパッチを作ってみました。

・estseek.c (estseek.c.patch)

user@qos % diff diff -crN estseek.c estseek.c.new
*** estseek.c   2011-04-17 20:27:25.000000000 +0900
--- estseek.c.new       2011-04-17 20:26:38.000000000 +0900
***************
*** 91,96 ****
--- 91,97 ----
  const char *g_qxpndcmd = NULL;           /* command for query expansion */
  const char *g_logfile = NULL;            /* path of the log file */
  const char *g_logformat = NULL;          /* format of the log */
+ int g_doclinkdecode = FALSE;             /* whether to decode doc_link  */


  /* global variables for parameters */
***************
*** 304,309 ****
--- 305,312 ----
        g_logfile = skiplabel(rp);
      } else if(cbstrfwimatch(rp, "logformat:")){
        g_logformat = skiplabel(rp);
+     } else if(cbstrfwimatch(rp, "doclinkdecode:")){
+       if(!cbstricmp(skiplabel(rp), "true")) g_doclinkdecode = TRUE;
      }
    }
    if(!g_indexname) showerror("indexname is undefined.");
***************
*** 1760,1766 ****
    xmlprintf("<dd class="doc_navi">\n");
    xmlprintf("<span class="doc_link">");
    sprintf(numbuf, "%%%d@", detail ? 9999 : g_attrwidth);
!   xmlprintf(numbuf, turi);
    xmlprintf("</span>\n");
    if(*g_dispproxy != '\0'){
      if(!strcmp(g_dispproxy, "[URI]")){
--- 1763,1775 ----
    xmlprintf("<dd class="doc_navi">\n");
    xmlprintf("<span class="doc_link">");
    sprintf(numbuf, "%%%d@", detail ? 9999 : g_attrwidth);
!   if(g_doclinkdecode){
!     char *dturi = cburldecode(turi, NULL);
!     xmlprintf(numbuf, dturi);
!     free(dturi);
!   } else{
!     xmlprintf(numbuf, turi);
!   }
    xmlprintf("</span>\n");
    if(*g_dispproxy != '\0'){
      if(!strcmp(g_dispproxy, "[URI]")){

・パッチ適用

user@qos % cd  /usr/ports/textproc/hyperestraier/
user@qos % sudo make
user@qos % cd  work/hyperestraier-1.4.13
user@qos % wget 'https://qos.dev7.net/files/estseek.c.patch'
user@qos % sudo patch -p < estseek.c.patch
user@qos % cd ../..
user@qos % sudo make
user@qos % sudo make install

・estseek.conf

doclinkdecode: true
カテゴリー: ソフトウェア タグ: , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です