Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
api: add /api/dvr/entry/filemoved, fixes #3818
  • Loading branch information
perexg committed Jun 3, 2016
1 parent 8e637f9 commit ea57298
Show file tree
Hide file tree
Showing 3 changed files with 47 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/api/api_dvr.c
Expand Up @@ -479,6 +479,21 @@ api_dvr_timerec_create
return 0;
}

static int
api_dvr_entry_file_moved
( access_t *perm, void *opaque, const char *op, htsmsg_t *args, htsmsg_t **resp )
{
const char *src, *dst;
if (!(src = htsmsg_get_str(args, "src")))
return -EINVAL;
if (!(dst = htsmsg_get_str(args, "dst")))
return -EINVAL;
if (dvr_entry_file_moved(src, dst))
return -ENOENT;
return 0;
}


void api_dvr_init ( void )
{
static api_hook_t ah[] = {
Expand All @@ -500,6 +515,7 @@ void api_dvr_init ( void )
{ "dvr/entry/rerecord/allow", ACCESS_RECORDER, api_dvr_entry_rerecord_allow, NULL },
{ "dvr/entry/stop", ACCESS_RECORDER, api_dvr_entry_stop, NULL },
{ "dvr/entry/cancel", ACCESS_RECORDER, api_dvr_entry_cancel, NULL },
{ "dvr/entry/filemoved", ACCESS_ADMIN, api_dvr_entry_file_moved, NULL },
{ "dvr/entry/move/finished", ACCESS_RECORDER, api_dvr_entry_move_finished, NULL },
{ "dvr/entry/move/failed", ACCESS_RECORDER, api_dvr_entry_move_failed, NULL },

Expand Down
2 changes: 2 additions & 0 deletions src/dvr/dvr.h
Expand Up @@ -586,6 +586,8 @@ int dvr_entry_delete(dvr_entry_t *de);

void dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord);

int dvr_entry_file_moved(const char *src, const char *dst);

void dvr_entry_destroy(dvr_entry_t *de, int delconf);

htsmsg_t *dvr_entry_class_mc_list (void *o, const char *lang);
Expand Down
29 changes: 29 additions & 0 deletions src/dvr/dvr_db.c
Expand Up @@ -3516,6 +3516,35 @@ dvr_entry_cancel_delete(dvr_entry_t *de, int rerecord)

}

/**
*
*/
int
dvr_entry_file_moved(const char *src, const char *dst)
{
dvr_entry_t *de;
htsmsg_t *m;
htsmsg_field_t *f;
const char *filename;
int r = -1;

if (!src || !dst || src[0] == '\0' || dst[0] == '\0' || access(dst, R_OK))
return r;
pthread_mutex_lock(&global_lock);
LIST_FOREACH(de, &dvrentries, de_global_link)
HTSMSG_FOREACH(f, de->de_files)
if ((m = htsmsg_field_get_map(f)) != NULL) {
filename = htsmsg_get_str(m, "filename");
if (strcmp(filename, src) == 0) {
htsmsg_set_str(m, "filename", dst);
dvr_vfs_refresh_entry(de);
r = 0;
}
}
pthread_mutex_unlock(&global_lock);
return r;
}

/**
*
*/
Expand Down

0 comments on commit ea57298

Please sign in to comment.