From fbfc2093b4b7aa013a25afedcc31a3990fb59ab4 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 2 Jul 2014 10:37:30 +0200 Subject: [PATCH] Add mpegts_mux_nice_name() function --- src/epggrab/otamux.c | 8 ++-- src/input/mpegts.h | 2 + src/input/mpegts/iptv/iptv.c | 4 +- src/input/mpegts/iptv/iptv_udp.c | 2 +- src/input/mpegts/linuxdvb/linuxdvb_frontend.c | 4 +- src/input/mpegts/mpegts_input.c | 6 +-- src/input/mpegts/mpegts_mux.c | 43 ++++++++++++++----- src/input/mpegts/mpegts_network_scan.c | 2 +- src/input/mpegts/mpegts_service.c | 4 +- src/input/mpegts/mpegts_table.c | 2 +- src/input/mpegts/satip/satip_frontend.c | 4 +- src/subscriptions.c | 4 +- 12 files changed, 55 insertions(+), 30 deletions(-) diff --git a/src/epggrab/otamux.c b/src/epggrab/otamux.c index 116cc7cf..773370a0 100644 --- a/src/epggrab/otamux.c +++ b/src/epggrab/otamux.c @@ -127,7 +127,7 @@ epggrab_ota_done ( epggrab_ota_mux_t *om, int reason ) else if (reason == EPGGRAB_OTA_DONE_TIMEOUT) { char name[256]; mpegts_mux_t *mm = mpegts_mux_find(om->om_mux_uuid); - mm->mm_display_name(mm, name, sizeof(name)); + mpegts_mux_nice_name(mm, name, sizeof(name)); tvhlog(LOG_WARNING, "epggrab", "data completion timeout for %s", name); } @@ -233,7 +233,7 @@ epggrab_ota_register ota = RB_INSERT_SORTED(&epggrab_ota_all, epggrab_ota_mux_skel, om_global_link, om_id_cmp); if (!ota) { char buf[256]; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhinfo(mod->id, "registering mux %s", buf); ota = epggrab_ota_mux_skel; SKEL_USED(epggrab_ota_mux_skel); @@ -380,7 +380,7 @@ next_one: if (epg_flag < 0 || epg_flag == MM_EPG_DISABLE) { #if TRACE_ENABLE char name[256]; - mm->mm_display_name(mm, name, sizeof(name)); + mpegts_mux_nice_name(mm, name, sizeof(name)); tvhtrace("epggrab", "epg mux %s is disabled, skipping", name); #endif goto done; @@ -394,7 +394,7 @@ next_one: } if (!map) { char name[256]; - mm->mm_display_name(mm, name, sizeof(name)); + mpegts_mux_nice_name(mm, name, sizeof(name)); tvhdebug("epggrab", "no modules attached to %s, check again next time", name); goto done; } diff --git a/src/input/mpegts.h b/src/input/mpegts.h index a5a635d1..d38a3abd 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -713,6 +713,8 @@ void mpegts_mux_unsubscribe_by_name(mpegts_mux_t *mm, const char *name); void mpegts_mux_scan_done ( mpegts_mux_t *mm, const char *buf, int res ); +void mpegts_mux_nice_name( mpegts_mux_t *mm, char *buf, size_t len ); + mpegts_pid_t *mpegts_mux_find_pid_(mpegts_mux_t *mm, int pid, int create); static inline mpegts_pid_t * diff --git a/src/input/mpegts/iptv/iptv.c b/src/input/mpegts/iptv/iptv.c index 9515670b..f0d9f8c7 100644 --- a/src/input/mpegts/iptv/iptv.c +++ b/src/input/mpegts/iptv/iptv.c @@ -202,7 +202,7 @@ iptv_input_start_mux ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi ) } /* Parse URL */ - im->mm_display_name((mpegts_mux_t*)im, buf, sizeof(buf)); + mpegts_mux_nice_name((mpegts_mux_t*)im, buf, sizeof(buf)); memset(&url, 0, sizeof(url)); if (urlparse(im->mm_iptv_url ?: "", &url)) { tvherror("iptv", "%s - invalid URL [%s]", buf, im->mm_iptv_url); @@ -344,7 +344,7 @@ iptv_input_mux_started ( iptv_mux_t *im ) { tvhpoll_event_t ev = { 0 }; char buf[256]; - im->mm_display_name((mpegts_mux_t*)im, buf, sizeof(buf)); + mpegts_mux_nice_name((mpegts_mux_t*)im, buf, sizeof(buf)); /* Allocate input buffer */ sbuf_init_fixed(&im->mm_iptv_buffer, IPTV_BUF_SIZE); diff --git a/src/input/mpegts/iptv/iptv_udp.c b/src/input/mpegts/iptv/iptv_udp.c index 89a62243..025f2983 100644 --- a/src/input/mpegts/iptv/iptv_udp.c +++ b/src/input/mpegts/iptv/iptv_udp.c @@ -38,7 +38,7 @@ iptv_udp_start ( iptv_mux_t *im, const url_t *url ) udp_connection_t *conn; udp_multirecv_t *um; - im->mm_display_name((mpegts_mux_t*)im, name, sizeof(name)); + mpegts_mux_nice_name((mpegts_mux_t*)im, name, sizeof(name)); conn = udp_bind("iptv", name, url->host, url->port, im->mm_iptv_interface, IPTV_BUF_SIZE); diff --git a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c index b3e3b1ca..a1dee2f8 100644 --- a/src/input/mpegts/linuxdvb/linuxdvb_frontend.c +++ b/src/input/mpegts/linuxdvb/linuxdvb_frontend.c @@ -271,7 +271,7 @@ linuxdvb_frontend_stop_mux linuxdvb_frontend_t *lfe = (linuxdvb_frontend_t*)mi; mi->mi_display_name(mi, buf1, sizeof(buf1)); - mmi->mmi_mux->mm_display_name(mmi->mmi_mux, buf2, sizeof(buf2)); + mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2)); tvhdebug("linuxdvb", "%s - stopping %s", buf1, buf2); /* Stop thread */ @@ -1086,7 +1086,7 @@ linuxdvb_frontend_tune1 char buf1[256], buf2[256]; lfe->mi_display_name((mpegts_input_t*)lfe, buf1, sizeof(buf1)); - mmi->mmi_mux->mm_display_name(mmi->mmi_mux, buf2, sizeof(buf2)); + mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2)); tvhdebug("linuxdvb", "%s - starting %s", buf1, buf2); /* Tune */ diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index 3ef01afa..4fc5d17c 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -257,7 +257,7 @@ mpegts_input_open_pid mpegts_pid_sub_skel->mps_type = type; mpegts_pid_sub_skel->mps_owner = owner; if (!RB_INSERT_SORTED(&mp->mp_subs, mpegts_pid_sub_skel, mps_link, mps_cmp)) { - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhdebug("mpegts", "%s - open PID %04X (%d) [%d/%p]", buf, mp->mp_pid, mp->mp_pid, type, owner); SKEL_USED(mpegts_pid_sub_skel); @@ -290,7 +290,7 @@ mpegts_input_close_pid if (!RB_FIRST(&mp->mp_subs)) { RB_REMOVE(&mm->mm_pids, mp, mp_link); if (mp->mp_fd != -1) { - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhdebug("mpegts", "%s - close PID %04X (%d) [%d/%p]", buf, mp->mp_pid, mp->mp_pid, type, owner); close(mp->mp_fd); @@ -831,7 +831,7 @@ mpegts_input_stream_status st->uuid = strdup(idnode_uuid_as_str(&mmi->mmi_id)); mi->mi_display_name(mi, buf, sizeof(buf)); st->input_name = strdup(buf); - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); st->stream_name = strdup(buf); st->subs_count = s; st->max_weight = w; diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 23228922..7b99c130 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -97,7 +97,7 @@ mpegts_mux_instance_start char buf[256], buf2[256];; mpegts_mux_instance_t *mmi = *mmiptr; mpegts_mux_t *mm = mmi->mmi_mux; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); /* Already active */ if (mm->mm_active) { @@ -425,7 +425,7 @@ mpegts_mux_delete ( mpegts_mux_t *mm, int delconf ) mpegts_service_t *s; char buf[256]; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhinfo("mpegts", "%s (%p) - deleting", buf, mm); /* Stop */ @@ -482,7 +482,7 @@ mpegts_mux_start1( mpegts_mux_instance_t *mmi ) char buf[256], buf2[256]; if (mpegts_mux_instance_start(&mmi)) { - mmi->mmi_mux->mm_display_name(mmi->mmi_mux, buf, sizeof(buf)); + mpegts_mux_nice_name(mmi->mmi_mux, buf, sizeof(buf)); mmi->mmi_input->mi_display_name(mmi->mmi_input, buf2, sizeof(buf2)); tvhwarn("mpegts", "%s - failed to start on %s, try another", buf, buf2); return 1; @@ -499,7 +499,7 @@ mpegts_mux_start mpegts_mux_instance_t *mmi, **all; int64_t aweight, *allw; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhtrace("mpegts", "%s - starting for '%s' (weight %d)", buf, reason, weight); @@ -655,7 +655,7 @@ mpegts_mux_stop ( mpegts_mux_t *mm, int force ) if (!mmi) return; mm->mm_active = NULL; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhdebug("mpegts", "%s - stopping mux", buf); if (mmi) { @@ -794,7 +794,7 @@ mpegts_mux_scan_timeout ( void *aux ) char buf[256]; mpegts_mux_t *mm = aux; mpegts_table_t *mt, *nxt; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); /* Timeout */ if (mm->mm_scan_init) { @@ -894,7 +894,7 @@ mpegts_mux_create0 else if (mm->mm_network->mn_idlescan) mpegts_network_scan_queue_add(mm, SUBSCRIPTION_PRIO_SCAN_IDLE); - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhtrace("mpegts", "%s - created", buf); return mm; @@ -913,7 +913,7 @@ mpegts_mux_set_onid ( mpegts_mux_t *mm, uint16_t onid ) if (onid == mm->mm_onid) return 0; mm->mm_onid = onid; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); mm->mm_config_save(mm); tvhtrace("mpegts", "%s - set onid %04X (%d)", buf, onid, onid); //idnode_notify(NULL, &mm->mm_id, 0, NULL); @@ -929,7 +929,7 @@ mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid, int force ) if (!force && mm->mm_tsid) return 0; mm->mm_tsid = tsid; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); mm->mm_config_save(mm); tvhtrace("mpegts", "%s - set tsid %04X (%d)", buf, tsid, tsid); //idnode_notify(NULL, &mm->mm_id, 0, NULL); @@ -943,13 +943,36 @@ mpegts_mux_set_crid_authority ( mpegts_mux_t *mm, const char *defauth ) if (defauth && !strcmp(defauth, mm->mm_crid_authority ?: "")) return 0; tvh_str_update(&mm->mm_crid_authority, defauth); - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); mm->mm_config_save(mm); tvhtrace("mpegts", "%s - set crid authority %s", buf, defauth); //idnode_notify(NULL, &mm->mm_id, 0, NULL); return 1; } +void +mpegts_mux_nice_name( mpegts_mux_t *mm, char *buf, size_t len ) +{ + size_t len2; + + if (len == 0 || buf == NULL) + return; + if (mm->mm_display_name) + mm->mm_display_name(mm, buf, len); + else + *buf = '\0'; + len2 = strlen(buf); + buf += len2; + len -= len2; + if (len2 + 16 >= len) + return; + strcpy(buf, " in "); + buf += 4; + len -= 4; + if (mm && mm->mm_network && mm->mm_network->mn_display_name) + mm->mm_network->mn_display_name(mm->mm_network, buf, len); +} + /* ************************************************************************** * Subscriptions * *************************************************************************/ diff --git a/src/input/mpegts/mpegts_network_scan.c b/src/input/mpegts/mpegts_network_scan.c index 879c78c0..664db417 100644 --- a/src/input/mpegts/mpegts_network_scan.c +++ b/src/input/mpegts/mpegts_network_scan.c @@ -200,7 +200,7 @@ mpegts_network_scan_queue_add ( mpegts_mux_t *mm, int weight ) TAILQ_REMOVE(&mn->mn_scan_pend, mm, mm_scan_link); } - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); mn->mn_display_name(mn, buf2, sizeof(buf2)); tvhdebug("mpegts", "%s - adding mux %s to queue weight %d", buf2, buf, weight); diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index 15f4a9a2..aa5b376c 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -286,7 +286,7 @@ mpegts_service_refresh(service_t *t) static void mpegts_service_setsourceinfo(service_t *t, source_info_t *si) { - char buf[128]; + char buf[256]; mpegts_service_t *s = (mpegts_service_t*)t; mpegts_mux_t *m = s->s_dvb_mux; @@ -424,7 +424,7 @@ mpegts_service_create0 service_make_nicename((service_t*)s); pthread_mutex_unlock(&s->s_stream_mutex); - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhlog(LOG_DEBUG, "mpegts", "%s - add service %04X %s", buf, s->s_dvb_service_id, s->s_dvb_svcname); /* Notification */ diff --git a/src/input/mpegts/mpegts_table.c b/src/input/mpegts/mpegts_table.c index cc60b903..6632b51e 100644 --- a/src/input/mpegts/mpegts_table.c +++ b/src/input/mpegts/mpegts_table.c @@ -36,7 +36,7 @@ mpegts_table_fastswitch ( mpegts_mux_t *mm ) return; } - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); tvhinfo("mpegts", "%s scan complete", buf); mpegts_mux_scan_done(mm, buf, 1); } diff --git a/src/input/mpegts/satip/satip_frontend.c b/src/input/mpegts/satip/satip_frontend.c index 8ad6fc7a..a5eff9d5 100644 --- a/src/input/mpegts/satip/satip_frontend.c +++ b/src/input/mpegts/satip/satip_frontend.c @@ -401,7 +401,7 @@ satip_frontend_stop_mux char buf1[256], buf2[256]; mi->mi_display_name(mi, buf1, sizeof(buf1)); - mmi->mmi_mux->mm_display_name(mmi->mmi_mux, buf2, sizeof(buf2)); + mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2)); tvhdebug("satip", "%s - stopping %s", buf1, buf2); gtimer_disarm(&lfe->sf_monitor_timer); @@ -1300,7 +1300,7 @@ satip_frontend_tune1 char buf1[256], buf2[256]; lfe->mi_display_name((mpegts_input_t*)lfe, buf1, sizeof(buf1)); - mmi->mmi_mux->mm_display_name(mmi->mmi_mux, buf2, sizeof(buf2)); + mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2)); tvhdebug("satip", "%s - starting %s", buf1, buf2); /* Tune */ diff --git a/src/subscriptions.c b/src/subscriptions.c index b6582a63..db440eda 100644 --- a/src/subscriptions.c +++ b/src/subscriptions.c @@ -579,7 +579,7 @@ subscription_create_from_service(service_t *t, unsigned int weight, static void mpegts_mux_setsourceinfo ( mpegts_mux_t *mm, source_info_t *si ) { - char buf[128]; + char buf[256]; /* Validate */ lock_assert(&global_lock); @@ -738,7 +738,7 @@ subscription_create_msg(th_subscription_t *s) else if (s->ths_mmi != NULL && s->ths_mmi->mmi_mux != NULL) { char buf[512]; mpegts_mux_t *mm = s->ths_mmi->mmi_mux; - mm->mm_display_name(mm, buf, sizeof(buf)); + mpegts_mux_nice_name(mm, buf, sizeof(buf)); htsmsg_add_str(m, "service", buf); }