Annotation of db/prgsrc/counter7.pl, revision 1.1

1.1     ! roma7       1: #!/usr/bin/perl
        !             2: $wait=3;
        !             3: $cfile = 'counts/count7.txt';
        !             4: open STDERR, ">errors";
        !             5: $lockdir="c:/html/countdir/";
        !             6: $l = lc $ENV{'DOCUMENT_NAME'};
        !             7: $header="Content-Type: text/html\n\n";
        !             8: &lockfile && (print $header.'?? раз', exit);
        !             9: 
        !            10: open(F, $cfile);
        !            11: @DATA = <F>;
        !            12: close(F);
        !            13: foreach (@DATA) {
        !            14:   ($c, $bl) = split / - /;
        !            15:   chomp $bl;
        !            16:   if ($bl eq $l)
        !            17:   {
        !            18:     $c++;
        !            19:     $_ = "$c - $bl\n";
        !            20:     $tmp = "cfile$$.tmp";
        !            21:     open(F, ">$tmp");
        !            22:     print F @DATA;
        !            23:     close(F);
        !            24:     rename("$tmp", $cfile);
        !            25:     print $header.$c. " раз".&Suffix($c);
        !            26:     &unlockfile ;
        !            27:     exit
        !            28:   }
        !            29: }
        !            30: 
        !            31: open(F, ">>$cfile");
        !            32: print F "1 - $l\n"; 
        !            33: close(F);
        !            34: 
        !            35: print $header."первый раз";
        !            36: &unlockfile;
        !            37: 
        !            38: sub lockfile
        !            39: {  
        !            40:    $tmp="$lockdir$cfile$$.tmp";
        !            41:    $lock="$lockdir$cfile.loc";
        !            42:    open F,">$tmp" or return 1;
        !            43:    print F $$;
        !            44:    close F;
        !            45:    if (-e $lock) {
        !            46:     for (1..$wait){
        !            47:        sleep(1)        !            48:        last unless -e $lock
        !            49:     }
        !            50:    }
        !            51:    if ((-e $lock) && (-M $lock<0)){unlink $tmp;
        !            52: return 2}
        !            53:    elsif (!rename($tmp,$lock)) {return 3}
        !            54:    open(LOCK,"<$lock") or return 3;
        !            55:    $lock_pid=<LOCK>;
        !            56:    close(LOCK);
        !            57:    return 2 unless $lock_pid == $$;
        !            58:    return 0; 
        !            59: }
        !            60: 
        !            61: sub unlockfile
        !            62: {
        !            63:   open (LOCK, "<$lock") or return 1;
        !            64:   $lock_pid=<LOCK>;
        !            65:   close(LOCK);
        !            66:   return 2 unless $lock_pid==$$;
        !            67:   unlink($lock) or return 3;
        !            68:   return 0;
        !            69: }
        !            70: 
        !            71: 
        !            72: sub Suffix {
        !            73:        my ($qnum) = @_;
        !            74:    my ($suffix) = 'а' if $qnum =~ /[234]$/;
        !            75:    $suffix = '' if $qnum =~ /156789$/ || $qnum =~ /1.$/;
        !            76:    return $suffix;
        !            77: }

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>