*** d2m.pl 2009-12-23 00:01:48.453000000 +0900 --- d2m_mod.pl 2013-04-21 20:39:35.950911100 +0900 *************** *** 1,4 **** --- 1,53 ---- #! /usr/bin/perl + my $D2MOUTDIR = "d2mout"; # ここに変換結果を格納する + my $WRNFILE = "warning.txt"; + my @idxfiles = <*/*.idx>; # idx形式ファイルを抽出 + mkdir( $D2MOUTDIR ); # 変換結果格納用フォルダを作成 + foreach my $idx ( @idxfiles ) { + printf( "%-s\n", $idx ); + my $dst = $idx; $dst =~ s/\.idx$//; # 拡張子".idx"を削除 + $dst =~ s/[\/]/\./g; # 先頭の"/"も"."として扱う + # 目的のメールファイルに至るまでのサブフォルダの処理 + my @dirs = split( /\./, $dst ); + my $dirstr = $D2MOUTDIR; + for ( my $i=0; $i<$#dirs; $i++ ) { + $dirstr .= "/" . $dirs[$i]; + if (!( -d $dirstr )) { + #printf( " mkdir : %s\n", $dirstr . ".sbd" ); + mkdir( $dirstr . ".sbd" ); # メールのフォルダ階層はGUIのフォルダ名に".sbd"付与 + } + if (!( -f $dirstr )) { + #printf( " touch : %s\n", $dirstr ); + open(TMP,">".$dirstr); close(TMP); # 同一名称のファイルも作る必要がある + # メールが入るときもあるし空のままの場合もある + } + $dirstr .= ".sbd"; + } + # 目的のメールファイルの処理 + { + # Datulaはメールが存在しない場合には、idxファイルはあるが、 + # mbxファイルが存在しない場合があるので適当にごまかす + $dirstr .= "/" . $dirs[$#dirs]; + my $mbxfile = $idx; $mbxfile =~ s/\.idx$//; $mbxfile .= ".mbx"; + printf( " gen : %-s\n", $dirstr ); + if ( -f $mbxfile ) { + # 普通はidxファイルがあるのでこれを変換する + datula2mbox( $idx, $dirstr ); + } else { + # Datulaはメールが存在しない場合には、mbxファイルが空になるので適当にごまかす + printf( " touch : %s\n", $idx ); + open( OUT, ">>" . $WRNFILE ); printf( OUT "enpty mbx : %s\n", $mbxfile ); close( OUT ); + open(TMP,">".$dirstr); close(TMP); # 同一名称のファイルも作る必要がある + } + } + } + exit(0); + + sub datula2mbox { + local $idx = $_[0]; + local $dst = $_[1]; + #======================================================================= + #! /usr/bin/perl # # datula2mbox # convert a datula data file to mbox format *************** *** 6,18 **** $SECTOR = 512; # datula ".mbx" file sector size ! if ($#ARGV != 1) { ! print "Usage: datula2mbox \n"; ! exit(1); ! } ! ! $idx = $ARGV[0]; ! $dst = $ARGV[1]; $idx =~ /(.*)\.idx/; $base = $1; --- 55,67 ---- $SECTOR = 512; # datula ".mbx" file sector size ! #if ($#ARGV != 1) { ! # print "Usage: datula2mbox \n"; ! # exit(1); ! #} ! # ! #$idx = $ARGV[0]; ! #$dst = $ARGV[1]; $idx =~ /(.*)\.idx/; $base = $1; *************** *** 49,51 **** --- 98,102 ---- close(OUT); close(MBX); close(IDX); + #======================================================================= + }