sub read_master() { my ($master_filename,$no,$md)=@_; if ($master_filename eq '') { return; } my @newarray; open (FF,"$master_filename"); while () { s/\r//g; chomp(); $str=$_; next if ($str eq ''); @d=split("$SPLIT_STR",$str); if ($no ne '') { next if ($no ne $d[0]); } if ($md ne '') { next if ($md ne $d[2]); } &jcode'convert(*str,"$PROGRAM_CODE"); push @newarray,$str; } close(FF); return @newarray; } sub insert_master() { my ($master_filename,$setdata,$opt1)=@_; if ($master_filename eq '') { return; } my $no=0; my @newarray; &lock($master_filename.".lock"); $dupflag=""; open (FF,"$master_filename"); while () { s/\r//g; chomp(); $str=$_; next if ($str eq ''); @d=split("$SPLIT_STR",$str); if ($d[0]>$no) { $no=$d[0]; } if ($opt1 eq 'nodup') { if ($d[2] eq $setdata{mailaddress}) { $dupflag=1; } } push @newarray,$str; } close(FF); $no++; $setdata{'no'}=$no; $c=0; my @join_str; foreach (@master_array) { $join_str[$c]=$setdata{$_}; $join_str[$c]=~s/\t//g; $c++; } $newstr=join("$SPLIT_STR",@join_str); &jcode'convert(\$newstr,"$ENCODE_MODE"); if ($dupflag eq '') { open (FF,">$master_filename"); print FF $newstr."\n"; foreach (@newarray) { print FF $_."\n"; } close(FF); } &unlock($master_filename.".lock"); } sub delete_master() { my ($master_filename,$no,$md)=@_; if ($master_filename eq '') { return; } my $no=0; &lock($master_filename.".lock"); my @newarray; open (FF,"$master_filename"); while () { s/\r//g; chomp(); $str=$_; next if ($str eq ''); @d=split("$SPLIT_STR",$str); if ($no ne '') { next if ($no eq $d[0]); } if ($md ne '') { next if ($md eq $d[2]); } push @newarray,$str; } close(FF); open (FF,">$master_filename"); foreach (@newarray) { print FF $_."\n"; } close(FF); &unlock($master_filename.".lock"); } sub delete_master2() { my ($master_filename,%dels)=@_; if ($master_filename eq '') { return; } my $no=0; &lock($master_filename.".lock"); my @newarray; open (FF,"$master_filename"); while () { s/\r//g; chomp(); $str=$_; next if ($str eq ''); @d=split("$SPLIT_STR",$str); next if ($dels{$d[2]} ne ''); if ($no ne '') { next if ($no eq $d[0]); } if ($md ne '') { next if ($md eq $d[2]); } push @newarray,$str; } close(FF); open (FF,">$master_filename"); foreach (@newarray) { print FF $_."\n"; } close(FF); &unlock($master_filename.".lock"); } sub get_configdata() { my $file=$_DIR{'config_data'}; open (FF,$file); while () { s/\r//; chomp(); next if ($_ eq ''); ($key,$val)=split("=",$_,2); &jcode'convert(*val,"$PROGRAM_CODE"); $val=~s/&ret;/\n/g; $ret_hush{$key}=$val; } close(FF); return %ret_hush; } sub save_configdata() { my (%save_data)=@_; my $set_str=""; while (($key,$val) = each %save_data) { $val=~s/\r//g; # chomp($val); chomp($key); &jcode'convert(*val,"$ENCODE_MODE"); $val=~s/\n/&ret;/g; $set_str.=$key."=".$val."\n"; } my $file=$_DIR{'config_data'}; open (FF,">$file"); print FF $set_str; close(FF); } sub lock { local($retry,$mtime); my ($locks)=@_; if ($locks ne '') { $lockkey=1; $lockfile=$locks; } # 1分以上古いロックは削除する if (-e $lockfile) { ($mtime) = (stat($lockfile))[9]; if ($mtime < time - 60) { &unlock; } } # symlink関数式ロック if ($lockkey == 1) { $retry = 5; while (!symlink(".", $lockfile)) { if (--$retry <= 0) { &error('LOCK is BUSY'); } sleep(1); } # mkdir関数式ロック } elsif ($lockkey == 2) { $retry = 5; while (!mkdir($lockfile, 0755)) { if (--$retry <= 0) { &error('LOCK is BUSY'); } sleep(1); } } $lockflag=1; } #--------------# # ロック解除 #2007041102 #--------------# sub unlock { my ($locks)=@_; if ($locks ne '') { $lockkey=1; $lockfile=$locks; } if ($lockkey == 1) { unlink($lockfile); } elsif ($lockkey == 2) { rmdir($lockfile); } $lockflag=0; } #-tools-- sub rescval() { my ($str)=@_; $str=~s/\&ret;/\n/g; $str=~s/\&/\&\;/g; $str=~s/\"/\"\;/g; $str=~s//>/g; return $str; } sub escval() { my ($str)=@_; $str=~s/\&ret;/\n/g; $str=~s/\&/\&\;/g; $str=~s/\"/\"\;/g; $str=~s//>/g; $str=~s/\n/
/g; return $str; } # URLエンコード sub url_encode { my ($str)=@_; $str =~ s/(\W)/'%'.unpack("H2", $1)/ego; $str =~ tr/ /+/; return $str; } # データデコード sub url_decode { my ($str,$mode)=@_; $str =~ tr/+/ /; $str=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/ge; if ($mode eq '1') { $str=~s/\r//g; $str=~s/\n/\&ret\;/g; } return $str; } sub get_term { my $WEB_MODE; if( $ENV{'HTTP_USER_AGENT'}=~/DoCoMo/ ){ $WEB_MODE="mobile"; } elsif( $ENV{'HTTP_USER_AGENT'}=~/J-PHONE/ ){ $WEB_MODE="mobile"; } elsif( $ENV{'HTTP_USER_AGENT'}=~/Vodafone/ ){ $WEB_MODE="mobile"; } elsif( $ENV{'HTTP_USER_AGENT'}=~/SoftBank/ ){ $WEB_MODE="mobile"; } elsif( $ENV{'HTTP_USER_AGENT'}=~/MOT/ ){ $WEB_MODE="mobile"; } elsif( $ENV{'HTTP_USER_AGENT'}=~/UP.Browser/ ){ $WEB_MODE="mobile"; } elsif( $ENV{'HTTP_USER_AGENT'}=~/KDDI/ ){ $WEB_MODE="mobile"; } else { # PC $WEB_MODE="pc"; } #$WEB_MODE="mobile"; return $WEB_MODE; } sub get_dir2 { my ($term)=@_; if ($term eq '') { $term="pc"; } while ( my ($k,$v) = each %_TPL) { if ($term eq 'mobile') { if ($v=~/template\/pc\//) { $v=~s/template\/pc\//template\/mobile\//g; } else { $v=~s/template\//template\/mobile\//g; } $_TPL{$k}=$v; } } } sub get_dir { my ($term)=@_; if ($term eq '') { $term="pc"; } while ( my ($k,$v) = each %_TPL) { if ($term eq 'mobile') { $_TPL{$k}=$_OPT{'template_mobile_dir'}.$v; } else { $_TPL{$k}=$_OPT{'template_pc_dir'}.$v; } } } #end mark 1;