%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home/rappan/www/cgi_link/
Upload File :
Create Path :
Current File : /home/rappan/www/cgi_link/sub.pl

#=======================================================================================
# サブルーチン
#=======================================================================================
$systeminfo = '<a href="http://www.gnbnet.com/" target="_blank">BannerLink (Version 1.9)</a>';

#======================================ロック処理ルーチン===============================
sub lock1 { # flock関数
 	eval { flock( LOCKCHK, 8 ) ; } ;
	if ( ! $@ ){
		open(LOCK,">$lock_file") or die "Can't open lockfile: $!";
	  flock(LOCK, 2) or die "Can't flock        : $!";
	}else{
		&error('このサーバーではflock関数は使えないようです。');
	}
}

sub lock2 { # mkdir関数
	$retry = 5; # リトライ回数セット
	$lockdir = $lock_file;
	$lockdir =~ s/\./_/g;
	$lockdir2 =  'c_' .$lockdir;
	while (!mkdir($lockdir, 0755)) {
		if (--$retry <= 0) {
			if (mkdir($lockdir2, 0755)) {          # ロックを消すための排他
				if ((-M $lockdir) * 86400 > 600) { # 作成時間が10分以上前なら
					rename($lockdir2, $lockdir) or die 'LOCK ERROR'; # ロック入れ替え
					last;                          # 一連の処理へ
				}else { rmdir($lockdir2); }         # 部分ロック削除
			}
			&error("BUSY");
		}
		sleep(1);
	}
}

sub unlock { # ロック解除
	if ($lockkey == 1) { close(LOCK); }
	elsif ($lockkey == 2) {
		$lockdir = $lock_file;
		$lockdir =~ s/\./_/g;
		rmdir($lockdir);
	}
}

#======================================エラー処理ルーチン===============================
sub error {
	$error = $_[0];
	if ($error eq "") { $error = '原因不明のエラーで処理を継続できません。'; }
	&unlock; # ロック解除
	if($QUERY{'up'} ne ""){
		$w = $bn_dir .$QUERY{'up'};
		unlink $w;
	}
	open(HTML,"$error_file") || die "ファイルオープンに失敗しました - error";
	@html = <HTML>;
	close(HTML);
	print "Content-Type: text/html\n\n";
	foreach $line (@html) {
		$line =~ s/<!--error-->/$error/g;
		$line =~ s/<!--system-->/$systeminfo/g;
		print $line;
	}
	exit;
}








#=======================================================================================
return 1;

Zerion Mini Shell 1.0