[CONF] override NNSTREAMER_CONF_FILE with env-var conf in non-Tizen
authorDongju Chae <dongju.chae@samsung.com>
Wed, 8 Jan 2020 05:12:44 +0000 (14:12 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Thu, 9 Jan 2020 05:46:54 +0000 (14:46 +0900)
This commit overrides NNSTREAMER_CONF_FILE with env-var conf in
non-Tizen system. So, env-var conf has a higher priority than others.

With this feature, some unittests using a conf file from env-var has
passed even if the default conf file (/etc/nnstremer.ini) exists.
Note that Tizen does not allow to set configurations from env-var.

Signed-off-by: Dongju Chae <dongju.chae@samsung.com>
gst/nnstreamer/nnstreamer_conf.c

index 8a66996..ede8dc1 100644 (file)
@@ -316,26 +316,41 @@ nnsconf_loadconf (gboolean force_reload)
     /* init with 0 */
     memset (&conf, 0, sizeof (confdata));
   }
-
-  /* Read from the conf file first */
-  if (g_path_is_absolute (NNSTREAMER_CONF_FILE)) {
-    conf.conffile = g_strdup (NNSTREAMER_CONF_FILE);
-  } else {
-    /** default value of 'sysconfdir' in meson is 'etc' */
-    conf.conffile = g_build_path (G_DIR_SEPARATOR_S, root_path_prefix,
-        NNSTREAMER_CONF_FILE, NULL);
-  }
-
+#ifndef __TIZEN__
+  /** if it's not Tizen, configuration from env-var has a higher priority */
+  conf.conffile = _strdup_getenv (NNSTREAMER_ENVVAR_CONF_FILE);
   if (!g_file_test (conf.conffile, G_FILE_TEST_IS_REGULAR)) {
-    /* File not found or not configured */
     g_free (conf.conffile);
-
-    /* Try to read from Environmental Variables */
-    conf.conffile = _strdup_getenv (NNSTREAMER_ENVVAR_CONF_FILE);
+    conf.conffile = NULL;
   }
+#endif
+  if (conf.conffile == NULL) {
+    /**
+     * Priority of reading a conf file
+     * 1) read from NNSTREAMER_CONF_FILE
+     * 2) read from NNSTREAMER_DEFAULT_CONF_FILE
+     * 3) read from env-var
+     */
+    if (g_path_is_absolute (NNSTREAMER_CONF_FILE)) {
+      conf.conffile = g_strdup (NNSTREAMER_CONF_FILE);
+    } else {
+      /** default value of 'sysconfdir' in meson is 'etc' */
+      conf.conffile = g_build_path (G_DIR_SEPARATOR_S, root_path_prefix,
+          NNSTREAMER_CONF_FILE, NULL);
+    }
 
-  if (conf.conffile == NULL)
-    conf.conffile = g_strdup (NNSTREAMER_DEFAULT_CONF_FILE);
+    if (!g_file_test (conf.conffile, G_FILE_TEST_IS_REGULAR)) {
+      /* File not found or not configured */
+      g_free (conf.conffile);
+
+      if (g_file_test (NNSTREAMER_DEFAULT_CONF_FILE, G_FILE_TEST_IS_REGULAR)) {
+        conf.conffile = g_strdup (NNSTREAMER_DEFAULT_CONF_FILE);
+      } else {
+        /* Try to read from Environmental Variables */
+        conf.conffile = _strdup_getenv (NNSTREAMER_ENVVAR_CONF_FILE);
+      }
+    }
+  }
 
   g_assert (key_file != NULL);
   g_assert (conf.conffile != NULL);