#!/usr/bin/perl

# アクセス数の合計の入ったデータファイル
$datafile = "count.cgi";
# グラフィカルカウンターの桁数
$max = 6;	#この桁数にHTMLファイルのIMGタグの桁数を合わせて下さい

if ($ENV{'REQUEST_METHOD'} eq "POST") {
	read(STDIN, $formdata, $ENV{'CONTENT_LENGTH'});
} else { $formdata = $ENV{'QUERY_STRING'}; }

@pairs = split(/&/,$formdata);
foreach $pair (@pairs) {
	($name, $value) = split(/=/, $pair);
	$value =~ tr/+/ /;
	$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
	$FORM{$name} = $value;
}

$a = $FORM{'a'};

if($a == 1){
	&first;
	&only;
}else{
	&only;
}

sub first{
	# アクセス数の合計を調べて、数を1増やす
	open(DATA,"$datafile");
	flock(DATA,2);
	$c_number = <DATA>;
	flock(DATA,8);
	close(DATA);
	$c_number++;
	open(DATA,">$datafile");
	flock(DATA,2);
	print DATA $c_number;
	flock(DATA,8);
	close(DATA);
}

sub only{
	open(DATA,"$datafile");
	flock(DATA,2);
	$c_number = <DATA>;
	flock(DATA,8);
	close(DATA);
	# グラフィカルカウンタのために数を配列に代入する
	@totalCounter = &split_c_number($c_number);

	$a--;
	$img = "images/count/$totalCounter[$a].gif";
	open(IMG,"$img");
	@data_gif = stat($img);
	$byte = $data_gif[7];

	print "Content-type: image/gif\n";
	print "Content-length: $byte\n\n";
	print <IMG>;
	close(IMG);

}

# アクセス数を、一桁の数字に分割するサブルーチン
sub split_c_number {
	local($n) = @_;
	local(@n) = split(//,$n);
	while ($#n + 1 < $max) {
		@n = (0,@n);
	}
	@n;
}
