+ if( p_pgrm == NULL )
+ p_pgrm = EsOutProgramAdd( out, i_group ); /* Create it */
+
+ /* Merge EPG */
+ if( !p_pgrm->p_epg )
+ p_pgrm->p_epg = vlc_epg_New( p_pgrm->psz_name );
+ vlc_epg_Merge( p_pgrm->p_epg, p_epg );
+
+ /* Update info */
+ psz_cat = EsOutProgramGetMetaName( p_pgrm );
+#ifdef HAVE_LOCALTIME_R
+ char *psz_epg;
+ if( asprintf( &psz_epg, "EPG %s", psz_cat ) == -1 )
+ psz_epg = NULL;
+ input_Control( p_input, INPUT_DEL_INFO, psz_epg, NULL );
+ msg_Dbg( p_input, "EsOutProgramEpg: number=%d name=%s", i_group, p_pgrm->p_epg->psz_name );
+ for( i = 0; i < p_pgrm->p_epg->i_event; i++ )
+ {
+ const vlc_epg_event_t *p_evt = p_pgrm->p_epg->pp_event[i];
+ time_t t_start = (time_t)p_evt->i_start;
+ struct tm tm_start;
+ char psz_start[128];
+
+ localtime_r( &t_start, &tm_start );
+
+ snprintf( psz_start, sizeof(psz_start), "%2.2d:%2.2d:%2.2d", tm_start.tm_hour, tm_start.tm_min, tm_start.tm_sec );
+ if( p_evt->psz_short_description || p_evt->psz_description )
+ input_Control( p_input, INPUT_ADD_INFO, psz_epg, psz_start, "%s (%2.2d:%2.2d) - %s",
+ p_evt->psz_name,
+ p_evt->i_duration/60/60, (p_evt->i_duration/60)%60,
+ p_evt->psz_short_description ? p_evt->psz_short_description : p_evt->psz_description );
+ else
+ input_Control( p_input, INPUT_ADD_INFO, psz_epg, psz_start, "%s (%2.2d:%2.2d)",
+ p_evt->psz_name,
+ p_evt->i_duration/60/60, (p_evt->i_duration/60)%60 );
+ }
+ free( psz_epg );
+#endif
+ /* Update now playing */
+ free( p_pgrm->psz_now_playing );
+ p_pgrm->psz_now_playing = NULL;
+ if( p_epg->p_current && p_epg->p_current->psz_name && *p_epg->p_current->psz_name )
+ p_pgrm->psz_now_playing = strdup( p_epg->p_current->psz_name );
+
+ if( p_pgrm == p_sys->p_pgrm )
+ input_item_SetNowPlaying( p_input->p->input.p_item, p_pgrm->psz_now_playing );
+
+ if( p_pgrm->psz_now_playing )
+ {
+ input_Control( p_input, INPUT_ADD_INFO, psz_cat,
+ input_MetaTypeToLocalizedString(vlc_meta_NowPlaying),
+ p_pgrm->psz_now_playing );
+ }
+ else
+ {
+ input_Control( p_input, INPUT_DEL_INFO, psz_cat,
+ input_MetaTypeToLocalizedString(vlc_meta_NowPlaying) );
+ }
+