Update the Pico manager layer to use the engine configuration to
figure out the alternative path for the lingware data.

Change-Id: If83e5e55ee7a420a41747d97beb36612a0b5fa1e
diff --git a/pico/tts/com_svox_picottsengine.cpp b/pico/tts/com_svox_picottsengine.cpp
index 5e856a0..b945fd5 100644
--- a/pico/tts/com_svox_picottsengine.cpp
+++ b/pico/tts/com_svox_picottsengine.cpp
@@ -115,6 +115,8 @@
 
 int picoCurrentLangIndex = -1;
 
+char * pico_alt_lingware_path = NULL;
+
 
 /* internal helper functions */
 
@@ -260,8 +262,8 @@
     }
 
     /* resources not found on system, check resources on alternative location */
-    /* (under PICO_LINGWARE_PATH).                                            */
-    strcpy((char*)fileName, PICO_LINGWARE_PATH);
+    /* (under pico_alt_lingware_path).                                            */
+    strcpy((char*)fileName, pico_alt_lingware_path);
     strcat((char*)fileName, (const char*)picoInternalTaLingware[langIndex]);
     pFile = fopen(fileName, "r");
     if (pFile == NULL) {
@@ -271,7 +273,7 @@
         fclose (pFile);
     }
 
-    strcpy((char*)fileName, PICO_LINGWARE_PATH);
+    strcpy((char*)fileName, pico_alt_lingware_path);
     strcat((char*)fileName, (const char*)picoInternalSgLingware[langIndex]);
     pFile = fopen(fileName, "r");
     if (pFile == NULL) {
@@ -340,15 +342,15 @@
 
     /* Find where to load the resource files from: system or alternative location              */
     /* based on availability of the Ta file. Try the alternative location first, this is where */
-    /* more recent language file updates would be installed (under PICO_LINGWARE_PATH).        */
+    /* more recent language file updates would be installed (under pico_alt_lingware_path).        */
     bool bUseSystemPath = true;
     FILE * pFile;
     char* tmpFileName = (char*)malloc(PICO_MAX_DATAPATH_NAME_SIZE + PICO_MAX_FILE_NAME_SIZE);
-    strcpy((char*)tmpFileName, PICO_LINGWARE_PATH);
+    strcpy((char*)tmpFileName, pico_alt_lingware_path);
     strcat((char*)tmpFileName, (const char*)picoInternalTaLingware[langIndex]);
     pFile = fopen(tmpFileName, "r");
     if (pFile != NULL) {
-        /* "ta" file found under PICO_LINGWARE_PATH, don't use the system path. */
+        /* "ta" file found under pico_alt_lingware_path, don't use the system path. */
         fclose (pFile);
         bUseSystemPath = false;
     }
@@ -360,9 +362,9 @@
         strcpy((char *) picoSgFileName,   PICO_SYSTEM_LINGWARE_PATH);
         strcpy((char *) picoUtppFileName, PICO_SYSTEM_LINGWARE_PATH);
     } else {
-        strcpy((char *) picoTaFileName,   PICO_LINGWARE_PATH);
-        strcpy((char *) picoSgFileName,   PICO_LINGWARE_PATH);
-        strcpy((char *) picoUtppFileName, PICO_LINGWARE_PATH);
+        strcpy((char *) picoTaFileName,   pico_alt_lingware_path);
+        strcpy((char *) picoSgFileName,   pico_alt_lingware_path);
+        strcpy((char *) picoUtppFileName, pico_alt_lingware_path);
     }
     strcat((char *) picoTaFileName,   (const char *) picoInternalTaLingware[langIndex]);
     strcat((char *) picoSgFileName,   (const char *) picoInternalSgLingware[langIndex]);
@@ -1024,6 +1026,8 @@
 /** init
  *  Allocates Pico memory block and initializes the Pico system.
  *  synthDoneCBPtr - Pointer to callback function which will receive generated samples
+ *  config - the engine configuration parameters, here only contains the non-system path
+ *      for the lingware location
  *  return tts_result
 */
 tts_result TtsEngine::init( synthDoneCB_t synthDoneCBPtr, const char *config )
@@ -1051,6 +1055,17 @@
 
     picoCurrentLangIndex = -1;
 
+    // was the initialization given an alternative path for the lingware location?
+    if ((config != NULL) && (strlen(config) > 0)) {
+        pico_alt_lingware_path = (char*)malloc(strlen(config));
+        strcpy((char*)pico_alt_lingware_path, config);
+        LOGV("Alternative lingware path %s", pico_alt_lingware_path);
+    } else {
+        pico_alt_lingware_path = (char*)malloc(strlen(PICO_LINGWARE_PATH));
+        strcpy((char*)pico_alt_lingware_path, PICO_LINGWARE_PATH);
+        LOGV("Using predefined lingware path %s", pico_alt_lingware_path);
+    }
+
     return TTS_SUCCESS;
 }