/* * fixup.c - Adjust things after parsing is done * * Written 2010 by Werner Almesberger * Copyright 2010 Werner Almesberger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ #include #include "jrb.h" #include "pkg.h" #include "qpkg.h" #include "fixup.h" void sort_versions(void) { const struct jrb *n; struct pkg **a, **b; struct pkg *tmp; for (n = jrb_first(packages->root); n != jrb_nil(packages->root); n = jrb_next(n)) for (a = (struct pkg **) &n->val; *a; a = &(*a)->more) for (b = &(*a)->more; *b;) if (comp_versions((*a)->version, (*b)->version) >= 0) b = &(*b)->more; else { tmp = *a; *a = *b; *b = tmp; tmp = (*a)->more; (*a)->more = (*b)->more; (*b)->more = tmp; } } void complete_provisions(void) { struct jrb *n; for (n = jrb_first(packages->root); n != jrb_nil(packages->root); n = jrb_next(n)) if (!n->val) new_pkg(n)->flags |= QPKG_PROVIDED; }