char *dvr_charset;
char *dvr_charset_id;
char *dvr_postproc;
+ char *dvr_postremove;
uint32_t dvr_extra_time_pre;
uint32_t dvr_extra_time_post;
uint32_t dvr_update_window;
int dvr_entry_verify(dvr_entry_t *de, access_t *a, int readonly);
+void dvr_spawn_postcmd(dvr_entry_t *de, const char *postcmd, const char *filename);
+
void dvr_disk_space_init(void);
void dvr_disk_space_done(void);
int dvr_get_disk_space(int64_t *bfree, int64_t *btotal);
time_t t;
struct tm tm;
const char *filename;
- char tbuf[64], *rdir;
+ char tbuf[64], *rdir, *postcmd;
int r;
t = dvr_entry_get_start_time(de);
if(r && r != -ENOENT)
tvhlog(LOG_WARNING, "dvr", "Unable to remove file '%s' from disk -- %s",
filename, strerror(-errno));
+
+ postcmd = de->de_config->dvr_postremove;
+ if (postcmd && postcmd[0])
+ dvr_spawn_postcmd(de, postcmd, filename);
htsmsg_delete_field(m, "filename");
}
}
/**
*
*/
-static void
-dvr_spawn_postproc(dvr_entry_t *de, const char *dvr_postproc)
+void
+dvr_spawn_postcmd(dvr_entry_t *de, const char *postcmd, const char *filename)
{
char buf1[2048], *buf2;
char tmp[MAX(PATH_MAX, 512)];
- const char *filename;
htsmsg_t *info, *e;
htsmsg_field_t *f;
char **args;
if ((f = htsmsg_field_last(de->de_files)) != NULL &&
(e = htsmsg_field_get_map(f)) != NULL) {
- filename = htsmsg_get_str(e, "filename");
- if (filename == NULL)
- return;
+ if (filename == NULL) {
+ filename = htsmsg_get_str(e, "filename");
+ if (filename == NULL)
+ return;
+ }
info = htsmsg_get_list(e, "info");
} else {
return;
}
/* Substitute DVR entry formatters */
- htsstr_substitute(dvr_postproc, buf1, sizeof(buf1), '%', dvr_subs_postproc_entry, de, tmp, sizeof(tmp));
+ htsstr_substitute(postcmd, buf1, sizeof(buf1), '%', dvr_subs_postproc_entry, de, tmp, sizeof(tmp));
buf2 = tvh_strdupa(buf1);
/* Substitute filename formatters */
htsstr_substitute(buf2, buf1, sizeof(buf1), '%', dvr_subs_postproc_filename, filename, tmp, sizeof(tmp));
muxer_destroy(prch->prch_muxer);
prch->prch_muxer = NULL;
- if(dvr_postproc)
- dvr_spawn_postproc(de, dvr_postproc);
+ if(dvr_postproc && dvr_postproc[0])
+ dvr_spawn_postcmd(de, dvr_postproc, NULL);
}
/**