int delete_backups(struct sdirs *sdirs, struct conf *cconf) { // Deleting a backup might mean that more become available to delete. // Keep trying to delete until we cannot delete any more. while(1) switch(do_delete_backups(sdirs, cconf)) { case 0: return 0; case -1: return -1; default: continue; } return -1; // Not reached. }
int delete_backups(struct sdirs *sdirs, const char *cname, struct strlist *keep, const char *manual_delete) { int ret=-1; struct bu *bu_list=NULL; // Deleting a backup might mean that more become available to delete. // Keep trying to delete until we cannot delete any more. while(1) { if(bu_get_list(sdirs, &bu_list)) goto end; switch(do_delete_backups(sdirs, cname, keep, bu_list, manual_delete)) { case 0: ret=0; goto end; case -1: ret=-1; goto end; default: break; } bu_list_free(&bu_list); } end: bu_list_free(&bu_list); return ret; }