dvr_config_t *cfg = dvr_config_find_by_name_default(de->de_config_name);
if(cfg->dvr_flags & DVR_CHANNEL_IN_TITLE)
- snprintf(output, outlen, "%s-", de->de_channel->ch_name);
+ snprintf(output, outlen, "%s-", DVR_CH_NAME(de));
else
output[0] = 0;
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\" starting at %s, "
"scheduled for recording by \"%s\"",
- lang_str_get(de->de_title, NULL), de->de_channel->ch_name, tbuf, creator);
+ lang_str_get(de->de_title, NULL), DVR_CH_NAME(de), tbuf, creator);
dvrdb_changed();
dvr_entry_save(de);
LIST_REMOVE(de, de_channel_link);
LIST_REMOVE(de, de_global_link);
de->de_channel = NULL;
+ free(de->de_channel_name);
dvrdb_changed();
if((s = htsmsg_get_str(c, "channel")) == NULL)
return;
- if((ch = channel_find_by_name(s, 0, 0)) == NULL)
+ if((ch = channel_find_by_name(s, 0, 1)) == NULL)
return;
s = htsmsg_get_str(c, "config_name");
lock_assert(&global_lock);
- htsmsg_add_str(m, "channel", de->de_channel->ch_name);
+ htsmsg_add_str(m, "channel", DVR_CH_NAME(de));
htsmsg_add_u32(m, "start", de->de_start);
htsmsg_add_u32(m, "stop", de->de_stop);
htsp_dvr_entry_update(de);
dvr_entry_notify(de);
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\": Updated Timer",
- lang_str_get(de->de_title, NULL), de->de_channel->ch_name);
+ lang_str_get(de->de_title, NULL), DVR_CH_NAME(de));
}
return de;
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\": "
"End of program: %s",
- lang_str_get(de->de_title, NULL), de->de_channel->ch_name,
+ lang_str_get(de->de_title, NULL), DVR_CH_NAME(de),
dvr_entry_status(de));
dvr_entry_save(de);
de->de_rec_state = DVR_RS_PENDING;
tvhlog(LOG_INFO, "dvr", "\"%s\" on \"%s\" recorder starting",
- lang_str_get(de->de_title, NULL), de->de_channel->ch_name);
+ lang_str_get(de->de_title, NULL), DVR_CH_NAME(de));
dvr_entry_notify(de);
htsp_dvr_entry_update(de);
{
if(de->de_sched_state == DVR_RECORDING)
dvr_stop_recording(de, SM_CODE_SOURCE_DELETED);
-
- dvr_entry_remove(de);
}
/**
{
dvr_entry_t *de;
- while((de = LIST_FIRST(&ch->ch_dvrs)) != NULL)
+ while((de = LIST_FIRST(&ch->ch_dvrs)) != NULL) {
+ LIST_REMOVE(de, de_channel_link);
+ de->de_channel = NULL;
+ de->de_channel_name = strdup(ch->ch_name);
dvr_entry_purge(de);
+ }
}
/**
if(cfg->dvr_flags & DVR_DIR_PER_CHANNEL) {
- char *chname = strdup(de->de_channel->ch_name);
+ char *chname = strdup(DVR_CH_NAME(de));
cleanupfilename(chname,cfg->dvr_flags);
snprintf(path + strlen(path), sizeof(path) - strlen(path),
"/%s", chname);
memset(fmap, 0, sizeof(fmap));
fmap['f'] = de->de_filename; /* full path to recoding */
fmap['b'] = basename(fbasename); /* basename of recoding */
- fmap['c'] = de->de_channel->ch_name; /* channel name */
+ fmap['c'] = DVR_CH_NAME(de); /* channel name */
fmap['C'] = de->de_creator; /* user who created this recording */
fmap['t'] = lang_str_get(de->de_title, NULL); /* program title */
fmap['d'] = lang_str_get(de->de_desc, NULL); /* program description */