]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
epggrab: internal grabber - add extra arguments config option
authorJaroslav Kysela <perex@perex.cz>
Sun, 8 Nov 2015 13:19:14 +0000 (14:19 +0100)
committerJaroslav Kysela <perex@perex.cz>
Sun, 8 Nov 2015 13:19:14 +0000 (14:19 +0100)
src/epggrab.h
src/epggrab/module.c

index 0653bc0576312d881a46d1b25ea8234ec0df6ad6..17bbc2065b2219d4e67f1c206a2b949fe717abfb 100644 (file)
@@ -170,6 +170,7 @@ struct epggrab_module_int
   epggrab_module_t             ;          ///< Parent object
 
   const char                   *path;     ///< Path for the command
+  const char                   *args;     ///< Extra arguments
 
   /* Handle data */
   char*     (*grab)   ( void *mod );
index 0887af8bc2ed899a41e1c552cd69453b1755ee3f..3b23c62fbb0534ec4bedcdf2f0793be6fa7f682a 100644 (file)
@@ -166,6 +166,13 @@ const idclass_t epggrab_class_mod_int = {
       .opts   = PO_RDONLY | PO_NOSAVE,
       .group  = 1
     },
+    {
+      .type   = PT_STR,
+      .id     = "args",
+      .name   = N_("Extra arguments"),
+      .off    = offsetof(epggrab_module_int_t, args),
+      .group  = 1
+    },
     {}
   }
 };
@@ -318,6 +325,7 @@ epggrab_module_int_t *epggrab_module_int_create
   /* Int data */
   skel->type     = EPGGRAB_INT;
   skel->path     = strdup(path);
+  skel->args     = strdup("--quiet");
   skel->grab     = grab  ?: epggrab_module_grab_spawn;
   skel->trans    = trans ?: epggrab_module_trans_xml;
   skel->parse    = parse;
@@ -331,19 +339,30 @@ char *epggrab_module_grab_spawn ( void *m )
   int        rd = -1, outlen;
   char       *outbuf;
   epggrab_module_int_t *mod = m;
-  char **argv = NULL;
+  char      **argv = NULL;
+  char       *path;
 
   /* Debug */
   tvhlog(LOG_INFO, mod->id, "grab %s", mod->path);
 
+  /* Quiet */
+  if (mod->args) {
+    path = alloca(strlen(mod->path) + strlen(mod->args) + 2);
+    strcpy(path, mod->path);
+    strcat(path, " ");
+    strcat(path, mod->args);
+  } else {
+    path = (char *)mod->path;
+  }
+
   /* Arguments */
-  if (spawn_parse_args(&argv, 64, mod->path, NULL)) {
+  if (spawn_parse_args(&argv, 64, path, NULL)) {
     tvhlog(LOG_ERR, mod->id, "unable to parse arguments");
     return NULL;
   }
 
   /* Grab */
-  outlen = spawn_and_give_stdout(argv[0], (char **)argv, NULL, &rd, NULL, 1);
+  outlen = spawn_and_give_stdout(argv[0], argv, NULL, &rd, NULL, 1);
 
   spawn_free_args(argv);