464 } |
464 } |
465 |
465 |
466 UiStr ui_str_free(char *str, void (*freefunc)(void *v)) { |
466 UiStr ui_str_free(char *str, void (*freefunc)(void *v)) { |
467 return (UiStr) { str, freefunc }; |
467 return (UiStr) { str, freefunc }; |
468 } |
468 } |
|
469 |
|
470 |
|
471 UiFileList ui_filelist_copy(UiFileList list) { |
|
472 char **newlist = calloc(sizeof(char*), list.nfiles); |
|
473 for (int i = 0; i < list.nfiles; i++) { |
|
474 newlist[i] = strdup(list.files[i]); |
|
475 } |
|
476 return (UiFileList) { newlist, list.nfiles }; |
|
477 } |
|
478 |
|
479 void ui_filelist_free(UiFileList list) { |
|
480 for (int i = 0; i < list.nfiles; i++) { |
|
481 free(list.files[i]); |
|
482 } |
|
483 free(list.files); |
|
484 } |