/* * pkg.h - Package structure and operations * * 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. */ #ifndef PKG_H #define PKG_H #include "jrb.h" #include "id.h" enum flags { /* parse-time and fixup-time flags */ QPKG_INSTALLED = 1 << 0, /* installed on target */ QPKG_PROVIDED = 1 << 1, /* virtual package */ /* run-time flags */ QPKG_ADDING = 1 << 10, /* resolving dependencies */ }; enum relop { rel_eq, /* = */ rel_ge, /* >= */ rel_gg, /* >> */ rel_lt, /* < */ rel_le, /* <= */ rel_ll, /* << */ }; struct pkg; struct ref { struct id *pkg; struct id *version; enum relop relop; /* undefined if version == NULL */ struct ref *next; }; struct pkg { struct id *id; struct id *version; const char *arch; struct ref *conflicts; struct ref *depends; struct ref *provides; const char *filename; int flags; /* see enum flags */ struct pkg *more; int mark; }; struct pkg *new_pkg(struct jrb *jrb); void free_pkg(struct pkg *pkg); #endif /* !PKG_H */