int dvr_entry_get_mc(dvr_entry_t *de);
-const char *dvr_entry_get_retention_string ( dvr_entry_t *de );
+char *dvr_entry_get_retention_string ( dvr_entry_t *de );
-const char *dvr_entry_get_removal_string ( dvr_entry_t *de );
+char *dvr_entry_get_removal_string ( dvr_entry_t *de );
uint32_t dvr_entry_get_retention_days( dvr_entry_t *de );
{
uint32_t count, total = 0;
dvr_entry_t *de, *de_prev;
- uint32_t max_count = dvr_autorec_get_max_count(dae);
+ uint32_t max_count;
char ubuf[UUID_HEX_SIZE];
if (dae == NULL) return;
+ max_count = dvr_autorec_get_max_count(dae);
if (max_count <= 0) return;
while (1) {
count = 0;
return extra;
}
-const char *
+char *
dvr_entry_get_retention_string ( dvr_entry_t *de )
{
char buf[24];
return strdup(buf);
}
-const char *
+char *
dvr_entry_get_removal_string ( dvr_entry_t *de )
{
char buf[24];
if (e && e->episode && e->episode->subtitle) {
save |= lang_str_set2(&de->de_subtitle, e->episode->subtitle) ? DVR_UPDATED_SUBTITLE : 0;
} else if (subtitle) {
- save |= lang_str_set(&de->de_title, subtitle, lang) ? DVR_UPDATED_SUBTITLE : 0;
+ save |= lang_str_set(&de->de_subtitle, subtitle, lang) ? DVR_UPDATED_SUBTITLE : 0;
}
/* EID */
time_t t;
struct tm tm;
const char *filename;
+ char *str1, *str2;
char tbuf[64], ubuf[UUID_HEX_SIZE], *rdir, *postcmd;
int r, ret = 0;
if (strftime(tbuf, sizeof(tbuf), "%F %T", &tm) <= 0)
*tbuf = 0;
+ str1 = dvr_entry_get_retention_string(de);
+ str2 = dvr_entry_get_removal_string(de);
tvhlog(LOG_INFO, "dvr", "delete entry %s \"%s\" on \"%s\" start time %s, "
"scheduled for recording by \"%s\", retention \"%s\" removal \"%s\"",
idnode_uuid_as_str(&de->de_id, ubuf),
lang_str_get(de->de_title, NULL), DVR_CH_NAME(de), tbuf,
- de->de_creator ?: "",
- dvr_entry_get_retention_string(de),
- dvr_entry_get_removal_string(de));
+ de->de_creator ?: "", str1, str2);
+ free(str2);
+ free(str1);
if(!htsmsg_is_empty(de->de_files)) {
#if ENABLE_INOTIFY
{
th_subscription_t *ts;
pktbuf_t *pb = sm_data;
- int ret;
+ int ret = 0;
- if (pb == NULL)
- return 0;
- if ((ts = de->de_s) != NULL) {
- if (pb->pb_err) {
- de->de_data_errors += pb->pb_err;
- ret = 1;
+ if (pb) {
+ if ((ts = de->de_s) != NULL) {
+ if (pb->pb_err) {
+ de->de_data_errors += pb->pb_err;
+ ret = 1;
+ }
+ subscription_add_bytes_out(ts, pktbuf_len(pb));
}
- subscription_add_bytes_out(ts, pktbuf_len(pb));
}
return ret;
}
case SMT_START:
start_time = dispatch_clock;
packets = 0;
+ if (ss)
+ streaming_start_unref(ss);
ss = streaming_start_copy((streaming_start_t *)sm->sm_data);
break;
return;
HTSMSG_FOREACH(f, de->de_files)
if ((m = htsmsg_field_get_map(f)) != NULL) {
- filename = htsmsg_get_str(m, "filename");
vfs = dvr_vfs_find1(vfs, m);
if (vfs) {
size = htsmsg_get_s64_or_default(m, "size", 0);
vfs->used_size = size <= vfs->used_size ? vfs->used_size - size : 0;
}
- if(statvfs(filename, &vst) < 0 || stat(filename, &st) < 0) {
+ filename = htsmsg_get_str(m, "filename");
+ if(filename == NULL ||
+ statvfs(filename, &vst) < 0 || stat(filename, &st) < 0) {
tvhlog(LOG_ERR, "dvr", "unable to stat file '%s'", filename);
goto rem;
}
esfilter_class_get_title(idnode_t *self, const char *lang)
{
esfilter_t *esf = (esfilter_t *)self;
- char ubuf[UUID_HEX_SIZE];
- return idnode_uuid_as_str(&esf->esf_id, ubuf);
+ return idnode_uuid_as_str(&esf->esf_id, prop_sbuf);
}
static void
src += 3;
srclen -= 3;
+
+ if (bytecount > srclen)
+ return ls;
if (mode == 0 && compressiontype == 0) {
tvhtrace("atsc-str", " %d: comptype 0x%02x, mode 0x%02x, %d bytes: '%.*s'",
/*
* extract the URL
*/
+ if (items == NULL)
+ return NULL;
HTSMSG_FOREACH(f, items) {
if ((item = htsmsg_field_get_map(f)) == NULL) continue;
inf = htsmsg_get_map(item, "stream-inf");
if (r) {
free(mux);
} else {
- if (*net == NULL && scanfile_create_network(net, type, name, mux->dmc_fe_delsys))
+ if (*net == NULL && scanfile_create_network(net, type, name, mux->dmc_fe_delsys)) {
+ free(mux);
return -1;
+ }
LIST_INSERT_HEAD(&(*net)->sfn_muxes, mux, dmc_link);
}
return 1;
htsmsg_add_str(item, "m3u-url", get_url(buf, sizeof(buf), p, url));
} else if (item) {
htsmsg_destroy(item);
- free(item);
item = NULL;
}
for(b = 0; !b && !bs_eof(bs) && lzb < 32; lzb++)
b = read_bits1(bs);
- if (lzb < 0)
+ if (lzb < 0 || lzb > 31)
return 0;
return (1 << lzb) - 1 + read_bits(bs, lzb);
}
video_stream_t *vs = (video_stream_t*)ts;
streaming_message_t *sm;
th_pkt_t *pkt2;
- static int max_bitrate = (INT_MAX / 3000) * 0.8;
+ static int max_bitrate = INT_MAX / ((3000*10)/8);
av_init_packet(&packet);
av_init_packet(&packet2);
}
/* and pull out a filtered frame */
+ got_output = 0;
while (1) {
ret = av_buffersink_get_frame(vs->flt_bufsinkctx, vs->vid_enc_frame);
if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
} else {
snprintf(errbuf, errbufsize, "Invalid protocol family");
freeaddrinfo(ai);
+ close(fd);
return -1;
}
page->aux = w = calloc(1, sizeof(wizard_hello_t));
if (config.language_ui)
- strncpy(w->ui_lang, config.language_ui, sizeof(w->ui_lang));
+ strncpy(w->ui_lang, config.language_ui, sizeof(w->ui_lang)-1);
m = htsmsg_csv_2_list(config.language, ',');
f = m ? HTSMSG_FIRST(m) : NULL;
}
if (w->username[0]) {
- s = w->username && w->username[0] ? w->username : "*";
+ s = w->username[0] ? w->username : "*";
conf = htsmsg_create_map();
htsmsg_add_str(conf, "prefix", w->network);
htsmsg_add_str(conf, "username", s);