]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
DVR: another autorec directory name improvements, fixes #3037
authorJaroslav Kysela <perex@perex.cz>
Mon, 14 Sep 2015 18:51:58 +0000 (20:51 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 14 Sep 2015 18:52:03 +0000 (20:52 +0200)
The previous patch does not take care about possible substitutions
from the explicit autorec directory. To keep all functionality,
the substitutions are now handled only when prefix '$$' is in
the autorec directory specification.

src/dvr/dvr_rec.c

index f9711041acb15615a0bb101ae98ce2b07b082bf2..027c2db2633e8405b14a5afc67cadfff3b5e0e21 100644 (file)
@@ -545,6 +545,7 @@ pvr_generate_filename(dvr_entry_t *de, const streaming_start_t *ss)
   htsmsg_t *m;
   size_t l, j;
   long max;
+  int dir_dosubs;
 
   if (de == NULL)
     return -1;
@@ -553,6 +554,10 @@ pvr_generate_filename(dvr_entry_t *de, const streaming_start_t *ss)
   if (cfg->dvr_storage == NULL || *(cfg->dvr_storage) == '\0')
     return -1;
 
+  dir_dosubs = de->de_directory == NULL ||
+              (de->de_directory[0] == '$' &&
+               de->de_directory[1] == '$');
+
   localtime_r(&de->de_start, &tm);
 
   strncpy(path, cfg->dvr_storage, sizeof(path));
@@ -585,7 +590,12 @@ pvr_generate_filename(dvr_entry_t *de, const streaming_start_t *ss)
       strcpy(filename, dirsep + 1);
     else
       strcpy(filename, path + l);
-    htsstr_substitute(de->de_directory, ptmp, sizeof(ptmp), '$', dvr_subs_entry, de);
+    if (dir_dosubs) {
+      htsstr_substitute(de->de_directory+2, ptmp, sizeof(ptmp), '$', dvr_subs_entry, de);
+    } else {
+      strncpy(ptmp, de->de_directory, sizeof(ptmp)-1);
+      ptmp[sizeof(ptmp)-1] = '\0';
+    }
     s = ptmp;
     while (*s == '/')
       s++;
@@ -613,7 +623,7 @@ pvr_generate_filename(dvr_entry_t *de, const streaming_start_t *ss)
       break;
     *(dirsep - 1) = '\0';
     if (*x) {
-      s = cleanup_filename(cfg, x, de->de_directory == NULL);
+      s = cleanup_filename(cfg, x, dir_dosubs);
       tvh_strlcatf(filename, sizeof(filename), j, "%s/", s);
       free(s);
     }