Add option to delete stale DVB adapters
This commit is contained in:
parent
4afc4092a7
commit
ff4b32c8b8
4 changed files with 74 additions and 0 deletions
|
@ -224,6 +224,14 @@ ajax_adaptereditor(http_connection_t *hc, http_reply_t *hr,
|
|||
"dvb_adapter_rename('%s', '%s');",
|
||||
tda->tda_identifier, tda->tda_displayname);
|
||||
|
||||
if(tda->tda_rootpath == NULL) {
|
||||
tcp_qprintf(tq, " / ");
|
||||
|
||||
ajax_a_jsfuncf(tq, "Delete adapter...",
|
||||
"dvb_adapter_delete('%s', '%s');",
|
||||
tda->tda_identifier, tda->tda_displayname);
|
||||
}
|
||||
|
||||
tcp_qprintf(tq, "</div>");
|
||||
|
||||
/* Clone adapter */
|
||||
|
@ -936,6 +944,30 @@ ajax_dvbadapterclone(http_connection_t *hc, http_reply_t *hr,
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Delete adapter
|
||||
*/
|
||||
static int
|
||||
ajax_dvbadapterdelete(http_connection_t *hc, http_reply_t *hr,
|
||||
const char *remain, void *opaque)
|
||||
{
|
||||
tcp_queue_t *tq = &hr->hr_tq;
|
||||
th_dvb_adapter_t *tda;
|
||||
|
||||
if(remain == NULL || (tda = dvb_adapter_find_by_identifier(remain)) == NULL)
|
||||
return HTTP_STATUS_NOT_FOUND;
|
||||
|
||||
tcp_qprintf(tq, "var o = $('summary_%s'); o.parentNode.removeChild(o);\r\n",
|
||||
tda->tda_identifier);
|
||||
tcp_qprintf(tq, "$('dvbadaptereditor').innerHTML ='';\r\n");
|
||||
|
||||
dvb_tda_destroy(tda);
|
||||
|
||||
http_output(hc, hr, "text/javascript; charset=UTF8", NULL, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -964,5 +996,7 @@ ajax_config_dvb_init(void)
|
|||
AJAX_ACCESS_CONFIG);
|
||||
http_path_add("/ajax/dvbadapterclone", NULL, ajax_dvbadapterclone,
|
||||
AJAX_ACCESS_CONFIG);
|
||||
http_path_add("/ajax/dvbadapterdelete", NULL, ajax_dvbadapterdelete,
|
||||
AJAX_ACCESS_CONFIG);
|
||||
|
||||
}
|
||||
|
|
|
@ -85,6 +85,13 @@ function dvb_adapter_rename(id, oldname)
|
|||
}
|
||||
}
|
||||
|
||||
function dvb_adapter_delete(id, name)
|
||||
{
|
||||
if(confirm("Are you sure you want to delete '" + name + "'") == true) {
|
||||
a = new Ajax.Request('/ajax/dvbadapterdelete/' + id);
|
||||
}
|
||||
}
|
||||
|
||||
function makedivinput(id, url)
|
||||
{
|
||||
$(id).innerHTML='<div style="width:100%; overflow:auto">' +
|
||||
|
|
31
dvb.c
31
dvb.c
|
@ -757,3 +757,34 @@ dvb_tda_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src)
|
|||
}
|
||||
dvb_tda_save(dst);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
int
|
||||
dvb_tda_destroy(th_dvb_adapter_t *tda)
|
||||
{
|
||||
th_dvb_mux_instance_t *tdmi;
|
||||
|
||||
char buf[400];
|
||||
|
||||
if(tda->tda_rootpath != NULL)
|
||||
return -1;
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s/dvbadapters/%s",
|
||||
settings_dir, tda->tda_identifier);
|
||||
|
||||
unlink(buf);
|
||||
|
||||
while((tdmi = LIST_FIRST(&tda->tda_muxes)) != NULL)
|
||||
dvb_mux_destroy(tdmi);
|
||||
|
||||
TAILQ_REMOVE(&dvb_adapters, tda, tda_global_link);
|
||||
|
||||
free(tda->tda_identifier);
|
||||
free(tda->tda_displayname);
|
||||
|
||||
free(tda);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
2
dvb.h
2
dvb.h
|
@ -70,4 +70,6 @@ void tdmi_stop(th_dvb_mux_instance_t *tdmi);
|
|||
|
||||
void dvb_tda_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
|
||||
|
||||
int dvb_tda_destroy(th_dvb_adapter_t *tda);
|
||||
|
||||
#endif /* DVB_H_ */
|
||||
|
|
Loading…
Add table
Reference in a new issue