List of osl/osldl.cgi

Sun May 19 12:55:24 2024

戻る

TEXTAREA で表示(カット&ペーストむき)

#!/usr/local/bin/perl5
#
# osldl.cgi
#
# 1999/01/12 Ver.0.01
# 1999/02/17 Ver.0.02
# 1999/02/21 Ver.0.03
# 1999/02/25 Ver.0.04
# 1999/02/26 Ver.0.05
# 1999/03/08 Ver.0.06
#
$copyright      ='osldl.cgi Ver.0.06 Copyright (C) 1999 gama';
#
# (C) 1999 がま <gama@mvg.biglobe.ne.jp>
#
# gunzip の所在 (BIGLOBE)   /usr/local/bin/gunzip
#
# gunzip による展開         gunzip -cd foo.gz &
#
#   オプション              -d 展開
#                           -c 出力先は stdout
#
# ---------------------------------------------------------------------
require 'osl.env';
# ---------------------------------------------------------------------
$LOCK_EX    = 2;                # 排他的にロック
# ---------------------------------------------------------------------
{
    $|=1;
    # -----------------------------------------------------------------
    ($opt, $fileno, $filename) = split('&',$ENV{'QUERY_STRING'});
    if      (-e "$datadir$filename" ) {     # .gz のないファイルの場合
        print "Location: $datadir$filename\n\n";
    } elsif (-e "$datadir$filename$gz" ) {  # .gz の場合
        if (        $filename =~ /\.(htm|html)$/i ) {
            print "Content-type: text/html\n";
        } elsif (   $filename =~ /\.gif$/i        ) {
            print "Content-type: image/gif\n";
        } elsif (   $filename =~ /\.(jpg|jpeg)$/i ) {
            print "Content-type: image/jpeg\n";
        } elsif (   $filename =~ /\.txt$/i ) {
            print "Content-type: text/plain\n";
        } elsif (   $filename =~ /\.lzh$/i ) {
            print "Content-type: application/lzh\n";
        } else {
            print "Content-type: application/octet-stream\n";
        }
        print "Content-Disposition: inline; filename=$filename\n";
        print "\n";
        system("$gunzip $datadir$filename$gz &");
    } else {
        print "Content-type: text/plain\n\n";
        print "Error!\n$datadir$filename\n$datadir$filename$gz";
    }
    if ($opt eq 'n') {          # n : カウントしない。
        exit;
    }
    # DL カウント -----------------------------------------------------
    my($dlctr)=$infodir.'dl'.$fileno.'.dat';
    open(DLCTR, "+<$dlctr");
    flock(DLCTR, $LOCK_EX)        if $useflock;        # 排他ロック
    $dlctr=<DLCTR>+1;
    seek(DLCTR, 0, 0);
    printf(DLCTR "%d", $dlctr);
    close(DLCTR);
}

戻る