#!/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);
}