diff -rcw epgdumpr2.old/eit.c epgdumpr2/eit.c
*** epgdumpr2.old/eit.c	2009-03-15 19:02:33.000000000 +0900
--- epgdumpr2/eit.c	2009-03-24 20:45:25.961750270 +0900
***************
*** 6,11 ****
--- 6,14 ----
  
  char		*subtitle_cnv_str[] = {
  	"　第",
+ 	"ー第",
+ 	"-第",
+ 	" 第",
  	"　「",
  	"　＃",
  	"（",
***************
*** 39,45 ****
  	return 14;
  }
  
! int parseEITbody(unsigned char *data, EITbody *b) {
  	int boff = 0;
  	int tnum;
  	char buf[4];
--- 42,49 ----
  	return 14;
  }
  
! int parseEITbody(unsigned char *data, EITbody *b)
! {
  	int boff = 0;
  	int tnum;
  	char buf[4];
***************
*** 78,97 ****
  
  	b->yy += 1900;
    
  	sprintf(buf, "%x", b->start_time[2]);
  	b->hh = atoi(buf);
  	sprintf(buf, "%x", b->start_time[3]);
  	b->hm = atoi(buf);
  	sprintf(buf, "%x", b->start_time[4]);
  	b->ss = atoi(buf);
  
  	sprintf(buf, "%x", b->duration[0]);
  	b->dhh = atoi(buf);
  	sprintf(buf, "%x", b->duration[1]);
  	b->dhm = atoi(buf);
  	sprintf(buf, "%x", b->duration[2]);
  	b->dss = atoi(buf);
!   
  	return 12;
  }
  
--- 82,110 ----
  
  	b->yy += 1900;
    
+ 	memset(buf, '\0', sizeof(buf));
  	sprintf(buf, "%x", b->start_time[2]);
  	b->hh = atoi(buf);
+ 	memset(buf, '\0', sizeof(buf));
  	sprintf(buf, "%x", b->start_time[3]);
  	b->hm = atoi(buf);
+ 	memset(buf, '\0', sizeof(buf));
  	sprintf(buf, "%x", b->start_time[4]);
  	b->ss = atoi(buf);
  
+ 	if((b->duration[0] == 0xFF) && (b->duration[1] == 0xFF) && (b->duration[2] == 0xFF)){
+ 		b->dhh = b->dhm = b->dss = 0;
+ 	}else{
+ 		memset(buf, '\0', sizeof(buf));
  		sprintf(buf, "%x", b->duration[0]);
  		b->dhh = atoi(buf);
+ 		memset(buf, '\0', sizeof(buf));
  		sprintf(buf, "%x", b->duration[1]);
  		b->dhm = atoi(buf);
+ 		memset(buf, '\0', sizeof(buf));
  		sprintf(buf, "%x", b->duration[2]);
  		b->dss = atoi(buf);
! 	}
  	return 12;
  }
  
***************
*** 269,274 ****
--- 282,291 ----
  		if(ptr == NULL){
  			continue ;
  		}
+ 		// タイトルがなくならないように
+ 		if(ptr == eitptr->title){
+ 			continue ;
+ 		}
  		newsubtitle = calloc(1, ((strlen(ptr) + 1) + (strlen(eitptr->subtitle) + 1)));
  		memcpy(newsubtitle, ptr, strlen(ptr));
  		newsubtitle[strlen(ptr)] = ' ';
diff -rcw epgdumpr2.old/epgdump.c epgdumpr2/epgdump.c
*** epgdumpr2.old/epgdump.c	2009-03-15 21:29:33.000000000 +0900
--- epgdumpr2/epgdump.c	2009-03-24 20:55:30.885022486 +0900
***************
*** 177,183 ****
  	char	*inptr ;
  	size_t	ilen;
  	size_t	olen;
! 	time_t	time ;
  	time_t	end_time ;
  	struct	tm	tl ;
  	struct	tm	*endtl ;
--- 177,183 ----
  	char	*inptr ;
  	size_t	ilen;
  	size_t	olen;
! 	time_t	l_time ;
  	time_t	end_time ;
  	struct	tm	tl ;
  	struct	tm	*endtl ;
***************
*** 239,247 ****
  		tl.tm_wday = 0;
  		tl.tm_isdst = 0;
  		tl.tm_yday = 0;
! 		time = mktime(&tl);
! 		end_time = time + eitcur->ehh * 3600 + eitcur->emm * 60 + eitcur->ess;
  		endtl = localtime(&end_time);
  		memset(cendtime, '\0', sizeof(cendtime));
  		memset(cstarttime, '\0', sizeof(cstarttime));
  		strftime(cendtime, (sizeof(cendtime) - 1), "%Y%m%d%H%M%S", endtl);
--- 239,253 ----
  		tl.tm_wday = 0;
  		tl.tm_isdst = 0;
  		tl.tm_yday = 0;
! 		l_time = mktime(&tl);
! 		if((eitcur->ehh == 0) && (eitcur->emm == 0) && (eitcur->ess == 0)){
! 			(void)time(&l_time);
! 			end_time = l_time + (60 * 5);		// ５分後に設定
  			endtl = localtime(&end_time);
+ 		}else{
+ 			end_time = l_time + eitcur->ehh * 3600 + eitcur->emm * 60 + eitcur->ess;
+ 			endtl = localtime(&end_time);
+ 		}
  		memset(cendtime, '\0', sizeof(cendtime));
  		memset(cstarttime, '\0', sizeof(cstarttime));
  		strftime(cendtime, (sizeof(cendtime) - 1), "%Y%m%d%H%M%S", endtl);
