31a32,34
> use MIME::Parser;
> use MIME::Head;
> 
68a72,85
> # // 画像まわり
> # 画像ファイルを置くディレクトリ(public_html以下)
> $graphic_outputdir	= "%HTMLDIR%/img/";
> 
> # その画像ファイルの URL (ディレクトリまで)
> $graphic_uri = "%MYDIARYURI%/img/";
> 
> # NEW 行が空だったら時刻を付加する(1)  しない(0)
> $isaddtime = 1;
> 
> $mimetmp = "$diaryDir/bin/mimetmp.$$";
> 
> 
> 
265,268c282,283
< $loopcheck = 0;
< 
< # sendmail から渡されたヘッダを登録
< while($_=<STDIN>)
---
> sub
> extractEntity($$)
270,271c285,292
<     if (/^Subject: \[mail2nikki\]/) {
<       $loopcheck = 1;
---
> 	my $entity = shift;
> 	my $outputdir = shift;
> 
> 	my @parts = $entity->parts;
> 	my @mailbody;
> 
> 	if(! $entity->is_multipart){
> 		$mailbody[0] .= $entity->bodyhandle->as_string . "\n";
273,276c294,307
<     last if /^\r?\n$/;
<     s/\r?\n$/\n/;
<     if (/^\s/) {
<        $_ = pop( @headers ) . $_;
---
> 	else{
> 	$mailbody[0] .= $entity->parts(0)->bodyhandle->as_string . "\n";
> 
> 	for($i=1; $i<$entity->parts; $i++){
> 		my $mimetype = $entity->parts($i)->head->mime_type;
> 		if($mimetype =~ /^(text\/plain|message\/rfc822)$/){
> 			$mailbody[0] .= $entity->parts($i)->bodyhandle->as_string . "\n";
> 		}
> 		elsif($mimetype =~ /^image\//){
> 				$filename = $entity->parts($i)->head->recommended_filename;
> 				fileWrite($outputdir . "/" . $filename,
> 						$entity->parts($i)->bodyhandle->as_string
> 						 );
> 				push(@mailbody, $filename);
278c309,311
<     push( @headers,$_ );
---
> 	}
> 	}
> 	return @mailbody;
281,283c314,315
< # hnf 用のヘッダ
< $hnfheadflag = 0;
< while($_=<STDIN>)
---
> sub
> fileWrite($$)
285,286c317,318
<     if (/^Subject: \[mail2nikki\]/) {
<       $loopcheck = 1;
---
> 	if(!open(FH, ">".$_[0])){
> 		die $!;
288,292c320,321
<     last if (/^\r?\n$/)&&($hnfheadflag == 1);
<     next if (/^\r?\n$/);
<     $hnfheadflag = 1;
<     s/\r?\n$/\n/;
<     push( @hnfheaders,$_ );
---
> 	print FH $_[1];
> 	close(FH);
295,296c324,325
< # 日記本体
< while($_=<STDIN>)
---
> sub
> splitCR($)
298,300c327,330
<     if (/^Subject: \[mail2nikki\]/) {
<       $loopcheck = 1;
<     }
---
> 	my @src = split(/\n/, $_[0]);
> 	my @array;
> 
> 	foreach(@src){
304,305c334,337
<     s/\r?\n$/\n/;
<     push( @body,$_ );
---
> 		s/[\r\n]//g;
> 		push(@array, $_ . "\n");
> 	}
> 	return @array;
308,309c340,341
< # 最後
< while($_=<STDIN>)
---
> sub
> getTime()
311c343,344
<     push( @foot,$_ );
---
> 	my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
> 	return sprintf("%02d:%02d:%02d", $hour, $min, $sec);
314,322d346
< # 処理時間取得
< ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
< $year = $year + 1900;
< $mon  = $mon + 1;
< $mday = "0$mday" if $mday < 10;
< $mon  = "0$mon"  if $mon  < 10;
< $sec  = "0$sec"  if $sec  < 10;
< $min  = "0$min"  if $min  < 10;
< $hour = "0$hour" if $hour < 10;
324,326c348,351
< if( $hnfDir == 1 )
< {
<     if ( !( -d $diaryDir . "/" . $year ) )
---
> 
> $loopcheck = 0;
> # /* sendmail から渡されたヘッダを登録 */
> while($_=<STDIN>)
328c353,354
< 	system("mkdir $diaryDir/$year;chmod 755 $diaryDir/$year");
---
>     if (/^Subject: \[mail2nikki\]/) {
>       $loopcheck = 1;
330,331c356,359
<     $file = "$diaryDir/$year/d$year$mon$mday.hnf";
<     $pfile = "$diaryDir/$year/y$year$mon";
---
>     last if /^\r?\n$/;
>     s/\r?\n$/\n/;
>     if (/^\s/) {
>        $_ = pop( @headers ) . $_;
333,336c361
< else
< {
<     $file = "$diaryDir/d$year$mon$mday.hnf";
<     $pfile = "$diaryDir/y$year$mon";
---
>     push( @headers,$_ );
342a368
> $HnsMode = 0;
389a416,503
> 
> # /* Subject 日記のだったらデコード */
> if($HnsMode){
> 	my $parser = new MIME::Parser;
> 	$parser->output_to_core(1);
> 	$parser->tmp_recycling(1);
> 	$parser->tmp_to_core(0);
> 	$parser->use_inner_files(0);
> 
> #	seek(STDIN, 0, 0); /* パイプだと seek() できない*/
> 	open(MIMETMP, ">" . $mimetmp) or die $!;
> 	foreach(@headers){ print MIMETMP; }
> 	print MIMETMP "\r\n";
> 	while($_=<STDIN>){ print MIMETMP; }
> 	close(MIMETMP);
> 
> 	open(MIMETMP, $mimetmp) or die $!;
> 	$entity = $parser->read(\*MIMETMP) or die("couldn't parse MIME stream");
> 	close(MIMETMP);
> 	unlink($mimetmp);
> 
> 	@MailBody = extractEntity($entity, $graphic_outputdir);
> }
> else{
> 	exit;
> }
> 
> @header_body = splitCR($MailBody[0]);
> 
> # hnf 用ヘッダと本体
> $location=0;
> foreach $string(@header_body)
> {
> 	if ($string =~ /^Subject: \[mail2nikki\]/) {
> 	  $loopcheck = 1;
> 	}
> 	if(($string =~ /^\n$/) && ($location == 0)){
> 		$location = 1;
> 	}
> 
> 	if($location==0){
> 		push(@hnfheaders, $string);
> 	}
> 	elsif($location==1){
> 		push(@body, $string);
> 		if($string =~ /^NEW/ && $HnsMode == 2){ # // ADD だったら NEW のあとに画像タグ
> 
> 			if($string eq "NEW\n" && $isaddtime){
> 				pop(@body);
> 				push(@body, "NEW " . getTime() . "\n");
> 			}
> 			for(my $cnt=1; $cnt<=$#MailBody; $cnt++){
> 				push(@body, "IMG r " . $graphic_uri . $MailBody[$cnt] ."\n");
> 			}
> 		}
> 	}
> }
> # <br clear="all"> が入ってないせいで画像の後のレイアウトがずれる場合は
> # テーマ修正でなんとかしてください。
> 
> 
> # 処理時間取得
> ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
> $year = $year + 1900;
> $mon  = $mon + 1;
> $mday = "0$mday" if $mday < 10;
> $mon  = "0$mon"  if $mon  < 10;
> $sec  = "0$sec"  if $sec  < 10;
> $min  = "0$min"  if $min  < 10;
> $hour = "0$hour" if $hour < 10;
> 
> if( $hnfDir == 1 )
> {
>     if ( !( -d $diaryDir . "/" . $year ) )
>     {
> 	system("mkdir $diaryDir/$year;chmod 755 $diaryDir/$year");
>     }
>     $file = "$diaryDir/$year/d$year$mon$mday.hnf";
>     $pfile = "$diaryDir/$year/y$year$mon";
> }
> else
> {
>     $file = "$diaryDir/d$year$mon$mday.hnf";
>     $pfile = "$diaryDir/y$year$mon";
> }
> 
> # /* header 解析は上に移動しました */
> 
