| 2244 | } |
| 2245 | |
| 2246 | static char** Sys_ConcatenateFileLists( char **list0, char **list1, char **list2 ) |
| 2247 | { |
| 2248 | int totalLength = 0; |
| 2249 | char** cat = NULL, **dst, **src; |
| 2250 | |
| 2251 | totalLength += Sys_CountFileList(list0); |
| 2252 | totalLength += Sys_CountFileList(list1); |
| 2253 | totalLength += Sys_CountFileList(list2); |
| 2254 | |
| 2255 | /* Create new list. */ |
| 2256 | dst = cat = (char **)Z_Malloc( ( totalLength + 1 ) * sizeof( char* ), TAG_FILESYS, qtrue ); |
| 2257 | |
| 2258 | /* Copy over lists. */ |
| 2259 | if (list0) { |
| 2260 | for (src = list0; *src; src++, dst++) |
| 2261 | *dst = *src; |
| 2262 | } |
| 2263 | if (list1) { |
| 2264 | for (src = list1; *src; src++, dst++) |
| 2265 | *dst = *src; |
| 2266 | } |
| 2267 | if (list2) { |
| 2268 | for (src = list2; *src; src++, dst++) |
| 2269 | *dst = *src; |
| 2270 | } |
| 2271 | |
| 2272 | // Terminate the list |
| 2273 | *dst = NULL; |
| 2274 | |
| 2275 | // Free our old lists. |
| 2276 | // NOTE: not freeing their content, it's been merged in dst and still being used |
| 2277 | if (list0) Z_Free( list0 ); |
| 2278 | if (list1) Z_Free( list1 ); |
| 2279 | if (list2) Z_Free( list2 ); |
| 2280 | |
| 2281 | return cat; |
| 2282 | } |
| 2283 | //#endif |
| 2284 | |
| 2285 | // For base game mod listing |
no test coverage detected