+size_t NbSFSearchPaths;\r
+char **SourceFileSearchPaths;\r
+\r
+\r
+// Init the source file search paths\r
+void DBGManager_SourceFileSearchPathsInit(void)\r
+{\r
+ NbSFSearchPaths = 0;\r
+ SourceFileSearchPaths = NULL;\r
+}\r
+\r
+\r
+// Set the source file search paths\r
+// Create individual path for each one provided in the list (separate with ';')\r
+void DBGManager_SourceFileSearchPathsSet(char *ListPaths)\r
+{\r
+ // Check presence of a previous list\r
+ if (NbSFSearchPaths)\r
+ {\r
+ // Reset previous list\r
+ DBGManager_SourceFileSearchPathsReset();\r
+ }\r
+\r
+ // Check if there is a paths list\r
+ if (strlen(ListPaths))\r
+ {\r
+ // Get number of paths\r
+ char *Ptr = ListPaths;\r
+ while(*Ptr)\r
+ {\r
+ while (*Ptr && (*Ptr++ != ';'));\r
+ {\r
+ NbSFSearchPaths++;\r
+ }\r
+ }\r
+\r
+ // Isolate each search path\r
+ SourceFileSearchPaths = (char **)calloc(NbSFSearchPaths, sizeof(char *));\r
+ size_t i = 0;\r
+ Ptr = ListPaths;\r
+\r
+ while (*Ptr)\r
+ {\r
+ // Search the path separator (';')\r
+ char *Ptr1 = Ptr;\r
+ while (*Ptr && (*Ptr++ != ';'));\r
+\r
+ // Copy the inidividual search path\r
+ SourceFileSearchPaths[i] = (char *)calloc(1, (Ptr - Ptr1) + 1);\r
+ strncpy(SourceFileSearchPaths[i], Ptr1, (Ptr - Ptr1));\r
+ if (SourceFileSearchPaths[i][strlen(SourceFileSearchPaths[i]) - 1] == ';')\r
+ {\r
+ SourceFileSearchPaths[i][strlen(SourceFileSearchPaths[i]) - 1] = 0;\r
+ }\r
+ i++;\r
+ }\r
+ }\r
+\r
+ DWARFManager_Set(NbSFSearchPaths, SourceFileSearchPaths);\r
+}\r
+\r
+\r
+// Reset the source file search paths\r
+void DBGManager_SourceFileSearchPathsReset(void)\r
+{\r
+ // Free each path\r
+ while (NbSFSearchPaths)\r
+ {\r
+ free(SourceFileSearchPaths[--NbSFSearchPaths]);\r
+ }\r
+\r
+ // Free the pointers list\r
+ free(SourceFileSearchPaths);\r
+ SourceFileSearchPaths = NULL;\r
+}\r
+\r
+\r
+// Close the source file search paths\r
+void DBGManager_SourceFileSearchPathsClose(void)\r
+{\r
+ DBGManager_SourceFileSearchPathsReset();\r
+}\r