| 1837 | } |
| 1838 | |
| 1839 | char **PltGetPilots(int *count, char *ignore_filename, int display_default_configs) { |
| 1840 | static char **pname_list = NULL; |
| 1841 | |
| 1842 | char buffer[PLTFILELEN]; |
| 1843 | char search[256]; |
| 1844 | tPGetPilotStruct *root = NULL, *curr = NULL; |
| 1845 | int loop = 1; |
| 1846 | |
| 1847 | if (display_default_configs == 1) |
| 1848 | loop = 2; |
| 1849 | |
| 1850 | // clear list |
| 1851 | PltClearList(); |
| 1852 | PltGetPilotsFree(); |
| 1853 | (*count) = 0; |
| 1854 | root = NULL; |
| 1855 | |
| 1856 | for (int loop_count = 0; loop_count < loop; loop_count++) { |
| 1857 | switch (display_default_configs) { |
| 1858 | case 0: |
| 1859 | ASSERT(loop_count == 0); |
| 1860 | ddio_MakePath(search, Base_directory, PLTWILDCARD, NULL); |
| 1861 | break; |
| 1862 | case 1: |
| 1863 | ddio_MakePath(search, Base_directory, (loop_count == 0) ? PLTWILDCARD : DPLTWILDCARD, NULL); |
| 1864 | break; |
| 1865 | case 2: |
| 1866 | ASSERT(loop_count == 0); |
| 1867 | ddio_MakePath(search, Base_directory, DPLTWILDCARD, NULL); |
| 1868 | break; |
| 1869 | default: |
| 1870 | Int3(); |
| 1871 | break; |
| 1872 | } |
| 1873 | |
| 1874 | |
| 1875 | if (ddio_FindFileStart(search, buffer)) { |
| 1876 | |
| 1877 | if (ignore_filename && !stricmp(ignore_filename, buffer)) { |
| 1878 | mprintf(0, "Getting Pilots...found %s, but ignoring\n", buffer); |
| 1879 | } else { |
| 1880 | if (root == NULL) { |
| 1881 | root = curr = (tPGetPilotStruct *)mem_malloc(sizeof(tPGetPilotStruct)); |
| 1882 | curr->next = NULL; |
| 1883 | } else { |
| 1884 | curr->next = (tPGetPilotStruct *)mem_malloc(sizeof(tPGetPilotStruct)); |
| 1885 | curr = curr->next; |
| 1886 | curr->next = NULL; |
| 1887 | } |
| 1888 | |
| 1889 | if (curr) { |
| 1890 | curr->filename = mem_strdup(buffer); |
| 1891 | |
| 1892 | if (curr->filename) { |
| 1893 | (*count)++; |
| 1894 | mprintf(0, "Getting Pilots..found %s\n", buffer); |
| 1895 | } else { |
| 1896 | Error(TXT_OUTOFMEMORY); |
no test coverage detected