--- db/prgsrc/updateRS1.pl 2001/12/05 00:17:53 1.4 +++ db/prgsrc/updateRS1.pl 2003/02/13 16:27:32 1.10 @@ -40,9 +40,11 @@ use POSIX qw (locale_h); use lib "../lib"; use chgkfiles; use dbchgk; -open (STDERR,">errors"); +my $DUMPDIR = $ENV{DUMPDIR} || "../dump"; + +open (STDERR,">$DUMPDIR/errors"); my $initime=time; -open TIME, ">time"; +open TIME, ">$DUMPDIR/time"; do "common.pl"; do "chgk.cnf"; @@ -64,7 +66,7 @@ my $nf; #open WARN, ">$warnings"; -%forbidden=checktable('equalto')? getequalto : (); +#%forbidden=checktable('equalto')? getequalto : (); if ((uc 'а') ne 'А') {die "!Koi8-r locale not installed!\n"}; @@ -99,10 +101,11 @@ die "No dictionaries found! Check your c print "Getting words...\n"; print TIME "\t\t".(time-$initime)."\n"; +my $broken=0; for my $commonI(1..$times) { - +last if $broken; print "loading nests\n"; @@ -119,8 +122,8 @@ while ((++$sch<=$qlimit) && (($id, @ss) # и вешаем в массив, индексы которого -- словоформы, # а значения -- списки вопросов. { - - print "$sch $id\n" ;#unless (++$sch % 1); + if (-e "RS_stop") {unlink("RS_stop"); $broken=1;last} + print "$sch $id\n" unless ($sch % 10);#unless (++$sch % 1); searchmark($id); if ($forbidden{$id}) {next}; foreach $fieldnumber (0..$#ss) #перебираем поля @@ -142,8 +145,8 @@ foreach $wordnumber(0..$#list) { @n= split ' ',$n; $nfkvo{$_}++ foreach @n; - $neww2k{$_}.=packword($fieldnumber, $id,$wordnumber%256) - foreach (@n); + my $r=packword($fieldnumber, $id,$wordnumber%256); + $neww2k{$_}.=$r foreach (@n); } else { if ($word=~/^${RLrl}+$/o){ # Русское слово @@ -171,14 +174,16 @@ foreach $wordnumber(0..$#list) $newnf{$word}.=" $nfnumber"; $nfkvo{$nfnumber}++; $a=\$neww2k{$nfnumber}; - $$a.=packword($fieldnumber, $id,$wordnumber); + my $r=packword($fieldnumber, $id,$wordnumber); + $$a.=$r; if (length $$a>100) {flushw2k($nfnumber)} } else { $nfnumber=addnf(0, $f, $flag,1); $newnf{uc $word}.=" $nfnumber"; - $neww2k{$nfnumber}.=packword($fieldnumber, $id,$wordnumber); + my $r=packword($fieldnumber, $id,$wordnumber); + $neww2k{$nfnumber}.=$r; } } }