From e585964b5360de83811118cc1c67d881bf841293 Mon Sep 17 00:00:00 2001 From: imiyazaki Date: Mon, 20 Oct 2003 16:24:32 +0000 Subject: [PATCH] use flock. use /usr/local/lib/chise/omega as a default directory of scripts and DB's. --- outCMAP | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/outCMAP b/outCMAP index 78d3666..c70563a 100755 --- a/outCMAP +++ b/outCMAP @@ -3,10 +3,12 @@ # ver.0.2 use strict; -use vars qw($opt_in_cs $opt_out_cs $opt_protrude +use vars qw($omegadb_path + $opt_protrude $opt_order + $opt_in_cs $opt_out_cs $opt_help $usage $in_cs $out_cs $i @chars - @order $opt_order %order + @order %order $char $char_id $out_char $ids $ids_argc %ids $idsdb $idsdata_file $ids_start $font_start @@ -16,8 +18,11 @@ use vars qw($opt_in_cs $opt_out_cs $opt_protrude ); use Getopt::Long; use utf8; +use Fcntl ':flock'; use Chise_utils ':all'; +my $omegadb_path="/usr/local/lib/chise/omega"; + ### Options ### $opt_order='jtcgk'; @@ -97,12 +102,25 @@ if($opt_help exit 1; } -$idsdata_file="idsdata.pl"; +$omegadb_path=~s!/$!!; + +$idsdata_file="$omegadb_path/idsdata.pl"; $ids_start=0x00; $font_start=0; if(-e $idsdata_file){ - require $idsdata_file; + open(IDSDATA,"+<$idsdata_file") or die; + flock(IDSDATA,LOCK_EX); + seek(IDSDATA,0,0); + while(){ + eval $_; + } + seek(IDSDATA,0,0); +# require $idsdata_file; +}else{ + open(IDSDATA,">$idsdata_file") or die; + flock(IDSDATA,LOCK_EX); + seek(IDSDATA,0,0); } $ids_argc=0; @@ -192,7 +210,6 @@ while(<>){ } } -open(IDSDATA,">$idsdata_file") or die; print IDSDATA 'use utf8;',"\n"; foreach $ids (keys %ids){ print IDSDATA '$ids{\'',$ids,'\'}=[',join ",",@{$ids{$ids}},"];\n" if($perl56); @@ -201,6 +218,7 @@ foreach $ids (keys %ids){ print IDSDATA '$font_start=',$font_start,";\n"; print IDSDATA '$ids_start=',$ids_start,";\n"; print IDSDATA "1;"; +flock(IDSDATA,LOCK_UN); exit 0; -- 1.7.10.4