namazu-ml(avocado)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: pnamazu.cgi-98.10.01
山本と申します。
From: mithara <mithara@xxxxxxxxxxxxxxxx>
Subject: [namazu:01262] Re: pnamazu.cgi-98.10.01
Date: Thu, 1 Oct 1998 22:26:05 +0900
:> ところで、以前に投稿[namazu:01187]しましたように、htmlファイルは一太郎等
:> のファイルを変換したものであり、その原文書にもリンクを張ることを考えて
:> おります。
:> ファイル名は、原文書ファイル名(jtd).html (一太郎の場合)となっており、
:> パターンマッチング処理により簡単に 原文書ファイル名.jtd が復元でき、
:> このアンカーをタイトルの横に配置しようと考えております。
:> ところが、正直、どこにこの検索結果のタイトルをprintするスクリプトがあるの
:> かよくわかりません。(^ ^;;)
:> 教えていただけないでしょうか?
自分が管理している機械(SS20,sunos4.1.4,apache1.2.6,perl5.004 など)には、
wwwmgr@e1hs01<183> ls -l atm98-0050*
-rw-r--r-- 1 wwwmgr 8228 Aug 11 19:27 atm98-0050.doc.gz
-rw-r--r-- 1 wwwmgr 13032 Aug 11 19:27 atm98-0050.pdf.gz
-rw-r--r-- 1 wwwmgr 13715 Aug 11 19:27 atm98-0050.ps.gz
-rw-r--r-- 1 wwwmgr 9865 Aug 11 19:27 atm98-0050.txt
の様に.txt, .pdf, .ps, .doc, .rtf が大量にあって、一般的に
サイズの大きい pdf/ps/doc/rtf の各ファイルは、gzip で圧縮してあります。
それで、namazu-1.2.0 に、はずかしくて人には、とても見せられない強引な
パッチを当てて使っています。
1. ファイル名が、 hoge.txt ならば、
hoge.doc.gz,hoge.pdf.gz,hoge.ps.gz,hoge.rtf.gz ファイルを探し、
ファイルが有ればリンクを張る。
2. 圧縮されたファイルを取り扱えない人のために zcat に喰わせ転送
するためのリンクを張る。
で検索結果の表示は、
1. ltd-cs-ra-pnni-02.03.txt (Text File) (score: 631)
** SOURCE: Ted Tedijanto FORE Systems Inc. 1000 FORE Drive Warrendale,
PA 15086 +1 724 742 6930 e-mail: tet@xxxxxxxx Fax: +1 724 742 6900 ** TITLE:
Private Network-Network Interface (PNNI) v2.0 Living
| Text file | pdf file(gz) | expand pdf.gz | microsoft word file(gz) | expand doc.gz | ps file(gz) | expand ps.gz |
みたいに成ります。| Text file |... の行が修正された出力で
<DD> | <A HREF="/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.txt">Text file</A> |
<A HREF="/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.pdf.gz">pdf file(gz)</A> |
<A HREF="/cgi-bin/expand?file=/usr/local/etc/httpd/htdocs/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.pdf">expand pdf.gz</A> |
<A HREF="/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.doc.gz">microsoft word file(gz)</A> |
<A HREF="/cgi-bin/expand?file=/usr/local/etc/httpd/htdocs/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.doc">expand doc.gz</A> |
<A HREF="/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.ps.gz">ps file(gz)</A> |
<A HREF="/cgi-bin/expand?file=/usr/local/etc/httpd/htdocs/docs/atmforum/ltd/ltd-cs-ra-pnni-02.03.ps">expand ps.gz</A> |
<BR><BR>
次のパートは、汎用性の全くない namazu-1.2.0 に対するパッチです。適当に修正
して下さい。namazu-1.2.0/src で diff -u old new した物です。
--- Makefile.in~ Tue Jun 23 00:49:15 1998
+++ Makefile.in Thu Aug 6 14:01:15 1998
@@ -277,6 +277,9 @@
cp ../contrib/* $(CONTRIBDIR)
cp namazu mknmz $(BINDIR_SYS)
+strip:
+ strip namazu namazu.cgi
+
clean:
$(RM) $(TARGET) *.o config.cache config.log config.status
--- hlist.c.org Tue Jun 23 00:49:15 1998
+++ hlist.c Mon Aug 10 13:40:20 1998
@@ -348,6 +348,113 @@
}
}
+/* file が .txt だったら、.pdf.gz とかが有るかどうかチェックする */
+/* jamamoto hack */
+void gz_check(uchar * s)
+{
+ uchar filepath[256] = "/usr/local/etc/httpd/htdocs" ;
+ uchar expand_f[256] = "/cgi-bin/expand?file=/usr/local/etc/httpd/htdocs" ;
+ uchar tmp[256];
+ uchar url_base[256];
+ uchar url_str[BUFSIZ];
+ FILE *fp;
+ int i, j, k;
+ int cr = 0;
+
+ /* strcpy (filepath, "/usr/local/etc/httpd/htdocs"); */
+ j = strlen(filepath);
+
+/* filepath は、/usr/local/etc/httpd/htdocs/docs/abc.txt
+ url_base は、/docs/abc.txt
+ みたいになっている筈なので 3 文字分戻って null を入れる。 */
+ for (i = 13, k = 0 ;; i++, j++, k++) {
+ if (s[i] == '"') {
+ filepath[j - 3] = NULL;
+ url_base[k - 3] = NULL;
+ break;
+ } else {
+ filepath[j] = s[i];
+ url_base[k] = s[i];
+ }
+ }
+ strcpy (url_str, "<DD> | <A HREF=\"");
+ strcat (url_str, url_base);
+ strcat (url_str, "txt\">Text file</A> | ");
+ gz_output(url_str,cr);
+
+ strcpy(tmp, filepath);
+ strcat(tmp, "pdf.gz");
+ if ((fp = fopen(tmp, "r"))) {
+ strcpy (url_str, "<A HREF=\"");
+ strcat (url_str, url_base);
+ strcat (url_str, "pdf.gz\">pdf file(gz)</A> | <A HREF=\"");
+ strcat (url_str, expand_f);
+ strcat (url_str, url_base);
+ strcat (url_str, "pdf\">expand pdf.gz</A> | ");
+ gz_output(url_str,cr);
+ }
+ fclose(fp);
+
+ strcpy(tmp, filepath);
+ strcat(tmp, "doc.gz");
+ if ((fp = fopen(tmp, "r"))) {
+ strcpy (url_str, "<A HREF=\"");
+ strcat (url_str, url_base);
+ strcat (url_str, "doc.gz\">microsoft word file(gz)</A> | <A HREF=\"");
+ strcat (url_str, expand_f);
+ strcat (url_str, url_base);
+ strcat (url_str, "doc\">expand doc.gz</A> | ");
+ gz_output(url_str,cr);
+ }
+ fclose(fp);
+
+ strcpy(tmp, filepath);
+ strcat(tmp, "ps.gz");
+ if ((fp = fopen(tmp, "r"))) {
+ strcpy (url_str, "<A HREF=\"");
+ strcat (url_str, url_base);
+ strcat (url_str, "ps.gz\">ps file(gz)</A> | <A HREF=\"");
+ strcat (url_str, expand_f);
+ strcat (url_str, url_base);
+ strcat (url_str, "ps\">expand ps.gz</A> | ");
+ gz_output(url_str,cr);
+ }
+ fclose(fp);
+
+ strcpy(tmp, filepath);
+ strcat(tmp, "rtf.gz");
+ if ((fp = fopen(tmp, "r"))) {
+ strcpy (url_str, "<A HREF=\"");
+ strcat (url_str, url_base);
+ strcat (url_str, "rtf.gz\">rtf file(gz)</A> | <A HREF=\"");
+ strcat (url_str, expand_f);
+ strcat (url_str, url_base);
+ strcat (url_str, "rtf\">expand rtf.gz</A> | ");
+ gz_output(url_str,cr);
+ }
+ fclose(fp);
+ cr = 1;
+ gz_output("",cr);
+}
+
+void gz_output(uchar * s, int cr)
+{
+ if (HtmlOutput) {
+ if(cr == 0) {
+ fputs(s, stdout);
+ fputs("\n", stdout);
+ } else {
+ fputs("<BR><BR>", stdout);
+ }
+ }else {
+ if(cr == 0) {
+ fputs_without_html_tag(s);
+ } else {
+ fputs("\n", stdout);
+ }
+ }
+}
+/* end of jamamoto hack */
/* 文字列の URL をデコードする */
void decode_url_string(uchar * s)
@@ -450,12 +557,19 @@
!strncmp("<DD><A HREF=\"", buf, 13)) {
decode_url_string(&buf[13]);
}
- if (HtmlOutput)
- fputs(buf, stdout);
- else {
- jistoeuc(buf);
- fputs_without_html_tag(buf);
+ /* jamamoto hack */
+ if ((NULL != strstr(buf, "<DD><A HREF=\"")) &&
+ ( NULL != strstr(buf, ".txt"))) {
+ gz_check(buf);
+ } else {
+ if (HtmlOutput)
+ fputs(buf, stdout);
+ else {
+ jistoeuc(buf);
+ fputs_without_html_tag(buf);
+ }
}
+ /* end of jamamoto hack */
if (j <= 0) {
if (!MoreShortFormat) {
printf("%d. ", i + 1);
--- namazu.h~ Tue Jun 23 00:49:15 1998
+++ namazu.h Mon Aug 10 13:47:16 1998
@@ -139,6 +139,10 @@
void nmz_mergesort();
void sort_hlist();
void replace_url();
+/* jamamoto hack */
+void gz_check();
+void gz_output();
+/* end of jamamoto hack */
uchar URLdecode(uchar, uchar);
void decode_url_string();
void put_hlist();