| 1871 | } |
| 1872 | |
| 1873 | int ph_init_cmds(ph_framework_t **framework_data, const char* filename) |
| 1874 | { |
| 1875 | xmlDocPtr doc; |
| 1876 | xmlNodePtr framework_node; |
| 1877 | ph_framework_t *_framework_data = NULL; |
| 1878 | ph_db_table_t *_ph_db_tables; |
| 1879 | int _ph_db_tables_size; |
| 1880 | ph_mod_t *_ph_modules; |
| 1881 | int _ph_modules_size; |
| 1882 | |
| 1883 | if(filename==NULL) {LM_ERR("NULL filename\n");return -1;} |
| 1884 | doc = xmlParseFile(filename); |
| 1885 | if(doc==NULL){ |
| 1886 | LM_ERR("Failed to parse xml file: %s\n", filename); |
| 1887 | return -1; |
| 1888 | } |
| 1889 | |
| 1890 | /* Extract the framework node */ |
| 1891 | framework_node = ph_xmlNodeGetNodeByName(doc->children, |
| 1892 | PI_HTTP_XML_FRAMEWORK_NODE); |
| 1893 | if (framework_node==NULL) { |
| 1894 | LM_ERR("missing node %s\n", PI_HTTP_XML_FRAMEWORK_NODE); |
| 1895 | goto xml_error; |
| 1896 | } |
| 1897 | |
| 1898 | _framework_data = *framework_data; |
| 1899 | if(_framework_data==NULL){ |
| 1900 | _framework_data = |
| 1901 | (ph_framework_t*)shm_malloc(sizeof(ph_framework_t)); |
| 1902 | if(_framework_data==NULL) {LM_ERR("oom\n");goto xml_error;} |
| 1903 | memset(_framework_data, 0, sizeof(ph_framework_t)); |
| 1904 | |
| 1905 | /* Extract the db_url nodes */ |
| 1906 | if(ph_getDbUrlNodes(_framework_data, framework_node)!=0) |
| 1907 | goto xml_error; |
| 1908 | |
| 1909 | /* Extract the db_url nodes */ |
| 1910 | if(ph_getDbTables(_framework_data, framework_node)!=0) |
| 1911 | goto xml_error; |
| 1912 | |
| 1913 | /* Build pi commands skeleton */ |
| 1914 | if(ph_getMods(_framework_data, framework_node)!=0) |
| 1915 | goto xml_error; |
| 1916 | |
| 1917 | if(doc)xmlFree(doc); |
| 1918 | doc=NULL; |
| 1919 | *framework_data = _framework_data; |
| 1920 | }else{ /* This is a reload */ |
| 1921 | _ph_db_tables = _framework_data->ph_db_tables; |
| 1922 | _ph_db_tables_size = _framework_data->ph_db_tables_size; |
| 1923 | _framework_data->ph_db_tables = NULL; |
| 1924 | _framework_data->ph_db_tables_size = 0; |
| 1925 | _ph_modules = _framework_data->ph_modules; |
| 1926 | _ph_modules_size = _framework_data->ph_modules_size; |
| 1927 | _framework_data->ph_modules = NULL; |
| 1928 | _framework_data->ph_modules_size = 0; |
| 1929 | |
| 1930 | /* Extract the db_url nodes */ |
no test coverage detected