From: Olliver Schinagl Date: Fri, 16 Jun 2023 15:02:19 +0000 (+0200) Subject: dvr_storage: Also support server configurations for recordings X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=335b1255d644d06740758d8a264e4864b6539e55;p=thirdparty%2Ftvheadend.git dvr_storage: Also support server configurations for recordings Like in commit e15c1abe9737 ("config: Support server configurations"), dvr_recordings are probably best stored in a 'server known configuration', as otherwise they can end up in `/Videos`. While the user can always configure this nicely, having a server sensible default is good. Signed-off-by: Olliver Schinagl --- diff --git a/src/dvr/dvr_config.c b/src/dvr/dvr_config.c index 88f4e9686..eb0292c0d 100644 --- a/src/dvr/dvr_config.c +++ b/src/dvr/dvr_config.c @@ -277,8 +277,10 @@ dvr_config_destroy(dvr_config_t *cfg, int delconf) static void dvr_config_storage_check(dvr_config_t *cfg) { + char recordings_dir[] = "/var/lib/tvheadend/recordings"; char home_dir[PATH_MAX + sizeof("/Videos")]; char dvr_dir[PATH_MAX]; + uid_t uid = getuid(); char *xdg_dir; struct stat st; @@ -304,7 +306,9 @@ dvr_config_storage_check(dvr_config_t *cfg) free(xdg_dir); } - if((stat(dvr_dir, &st) == 0) && S_ISDIR(st.st_mode)) + if ((stat(recordings_dir, &st) == 0) && (st.st_uid == uid)) + cfg->dvr_storage = strndup(recordings_dir, sizeof(recordings_dir)); + else if((stat(dvr_dir, &st) == 0) && S_ISDIR(st.st_mode)) cfg->dvr_storage = strndup(dvr_dir, PATH_MAX); else if(stat(home_dir, &st) == 0 && S_ISDIR(st.st_mode)) cfg->dvr_storage = strndup(home_dir, sizeof(home_dir));