namazu-dev(ring)


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

mknmz -C (INDEX) (Re: progress as of 2000-01-06)



>                                   Mon Jan 10 23:33:27 2000
>                                            千葉市中央区長洲
>                                                    藤原  誠
>                                                makoto@xxxxx
namazu-dev: 1173 にて
> +藤原のつけ足し (2000/01/10)
> + ** mknmz
> +  * show index directory when -C requested
> +    -C で index: を表示する

  これ、やって見たのですが、そのようなことをしても意味がないという
気がしてしまいます。
-O で指定するか、それがなければ current directory 
というだけですよね。

  しかし使い始めたころどこに出力されるのか分らなくて、分かるまで時
間がかかりました。それを教えてくれればというつもりだったのです。で
も -C で表示してくれるというのに気が付くにも同じだけかかるのかなと
も思います。

patch と それに至るまでの自分の覚えを付けておきます。
まだ commit はしていません。
 
parse_options() の中でもう一度 parse_options() を呼んで
いる部分がありますが、その辺は理解していません。
---
(藤原)
Index: namazu/scripts/mknmz.pl.in
===================================================================
RCS file: /circus/cvsroot/namazu/scripts/mknmz.pl.in,v
retrieving revision 1.8
diff -u -r1.8 mknmz.pl.in
--- namazu/scripts/mknmz.pl.in	2000/01/06 10:02:00	1.8
+++ namazu/scripts/mknmz.pl.in	2000/01/10 14:20:19
@@ -871,12 +871,6 @@
 	exit 1;
     }
 
-    if ($opt_show_config) {
-	load_olemodules() if ($var::Opt{'ole'});
-	read_config();
-	show_config();
-	exit 1;
-    }
 
     if (defined $update_index) {
 	my $orig_status = $var::NMZ{'status'};
@@ -949,10 +943,6 @@
 	util::dprint(_("Replace: ")."$orig -> $_\n");
     }
 
-    if (@ARGV == 0 && $targets_loaded == 0) {
-	show_mini_usage();
-	exit 1;
-    }
 
     $output_dir = $cwd unless defined $output_dir;
     util::cdie("$output_dir: "._("invalid output directory\n"))
@@ -965,6 +955,16 @@
 	    $1 eq "\\" ? "/" : $1!gex;
     }
 
+    if ($opt_show_config) {
+	load_olemodules() if ($var::Opt{'ole'});
+	read_config();
+	show_config($output_dir);
+	exit 1;
+    }
+    if (@ARGV == 0 && $targets_loaded == 0) {
+	show_mini_usage();
+	exit 1;
+    }
     # take remaining @ARGV as targets
     if (@ARGV > 0 && $targets_loaded == 0) {
 	@targets = @ARGV ;
@@ -978,6 +978,7 @@
 }
 
 sub show_config () {
+    my $output_dir = $_[0];
     $ConfigFile = "(none)" unless defined $ConfigFile;
     print "Config: $ConfigFile\n";
     print "System: $SYSTEM\n" if $SYSTEM;
@@ -989,9 +990,9 @@
     print "Wakati: $conf::WAKATI\n" if $conf::WAKATI;
     print "Lang:   $LANG\n";
     print "CCS:    $CCS\n";
-# XXX uncomment givs -> Use of uninitialized value at mknmz line 972.
+# XXX uncomment gives -> Use of uninitialized value at mknmz line 972.
 # finding output_dir just for -C does not seem easy.
-##  print "INDEX:       $var::OUTPUT_DIR\n"; 
+    print "INDEX:       $output_dir\n";
     print "CONFDIR:     $CONFDIR\n";
     print "LIBDIR:      $LIBDIR\n";
     print "FILTERDIR:   $FILTERDIR\n";
  -*- Perl -*- と書いておくと色がきれいなので:
「mknmz で -C の時に INDEX を表示するには」問題

| 以下ごちゃごちゃ書いてあるのは、
| egrep -in '^sub|output_dir' mknmz.pl.in
| とした時の表示に説明を加えたものです。(数字) は時間軸を表わします。

【結論】
parse_options の最後で表示する。

makoto@milano  22:09:02/000110(~...namazu/scripts)> egrep -in '^sub|output_dir' mknmz.pl.in

(1)
  67:sub main () {
  73:    my ($output_dir, @targets) = parse_options();
  74:    read_config();
  75:    my $file_base = prep($output_dir, @targets);
 
(5)
main: 75  で呼ばれて
  644:sub prep () {
  646:    my $output_dir = shift @_ ;
  次で代入しているが、これは parse_option() の後になる
+ 650:    $var::OUTPUT_DIR = $output_dir;

(2) main: 73 で呼ばれて
(3) 自分:893 で呼ばれて
  785:sub parse_options ()
  810:    my $output_dir = undef;
  835:           'O|output-dir=s'      => \$output_dir,

  874:    if ($opt_show_config) {
  875:        load_olemodules() if ($var::Opt{'ole'});
  876:        read_config();
  次で表示しようとするからうまく行かない。parse_option の最後にすればいい
  877:        show_config();  
  878:        exit 1;
  879:    }

  881:    if (defined $update_index) {     

  893:    ($output_dir, @targets) = parse_options();
  894:    $output_dir = $update_index;
  896:    return ($output_dir, @targets);

  957:    $output_dir = $cwd unless defined $output_dir;
  958:    util::cdie("$output_dir: "._("invalid output directory\n"))
  959:    unless (-d $output_dir && -w $output_dir);
  963:    $output_dir =~ 
  977:    return ($output_dir, @targets);

(4) -C の時。ここで表示したい。一回呼ばれるだけ
parse_options:877 で呼ばれる, -C の時
  980:sub show_config () {
  993:# finding output_dir just for -C does not seem easy.
  994:##  print "INDEX:       $var::OUTPUT_DIR\n"; 
  
  1152:sub write_result_file () {
+ 1159:   my $target = "$var::OUTPUT_DIR/$1";
  
  1207:sub change_dbnames ($) {
+ 1208:    my $dir = $var::OUTPUT_DIR;