static void pull_rule_free(/*@only@*/struct pull_rule *pull) { if (pull == NULL) return; free(pull->name); free(pull->from); atomlist_done(&pull->architectures_from); atomlist_done(&pull->architectures_into); atomlist_done(&pull->components); atomlist_done(&pull->udebcomponents); term_free(pull->includecondition); filterlist_release(&pull->filterlist); filterlist_release(&pull->filtersrclist); free(pull); }
static void uploadpermission_release(struct upload_condition *p) { struct upload_condition *h, *f = NULL; assert (p != NULL); do { h = p->next; switch (p->type) { case uc_BINARIES: case uc_SECTIONS: case uc_SOURCENAME: case uc_BYHAND: case uc_CODENAME: strlist_done(&p->strings); break; case uc_ARCHITECTURES: atomlist_done(&p->atoms); break; case uc_ALWAYS: case uc_REJECTED: break; } free(f); /* next one must be freed: */ f = h; /* and processed: */ p = h; } while (p != NULL); }
static retvalue distribution_free(struct distribution *distribution) { retvalue result, r; bool needsretrack = false; if (distribution != NULL) { free(distribution->suite); free(distribution->fakecomponentprefix); free(distribution->version); free(distribution->origin); free(distribution->notautomatic); free(distribution->butautomaticupgrades); free(distribution->label); free(distribution->description); free(distribution->deb_override); free(distribution->udeb_override); free(distribution->dsc_override); free(distribution->uploaders); atomlist_done(&distribution->udebcomponents); atomlist_done(&distribution->architectures); atomlist_done(&distribution->components); strlist_done(&distribution->signwith); strlist_done(&distribution->updates); strlist_done(&distribution->pulls); strlist_done(&distribution->alsoaccept); exportmode_done(&distribution->dsc); exportmode_done(&distribution->deb); exportmode_done(&distribution->udeb); atomlist_done(&distribution->contents_architectures); atomlist_done(&distribution->contents_components); atomlist_done(&distribution->contents_ucomponents); override_free(distribution->overrides.deb); override_free(distribution->overrides.udeb); override_free(distribution->overrides.dsc); logger_free(distribution->logger); if (distribution->uploaderslist != NULL) { uploaders_unlock(distribution->uploaderslist); } byhandhooks_free(distribution->byhandhooks); result = RET_OK; while (distribution->targets != NULL) { struct target *next = distribution->targets->next; if (distribution->targets->staletracking) needsretrack = true; r = target_free(distribution->targets); RET_UPDATE(result, r); distribution->targets = next; } if (distribution->tracking != dt_NONE && needsretrack) { fprintf(stderr, "WARNING: Tracking data of '%s' might have become out of date.\n" "Consider running retrack to avoid getting funny effects.\n", distribution->codename); } free(distribution->codename); free(distribution); return result; } else return RET_OK; }