krh@27: #ifndef _RAZOR_H_ krh@27: #define _RAZOR_H_ krh@27: krh@43: #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) krh@43: krh@43: struct razor_set; krh@43: krh@66: enum razor_property_type { krh@66: RAZOR_PROPERTY_REQUIRES, krh@66: RAZOR_PROPERTY_PROVIDES, krh@66: RAZOR_PROPERTY_CONFLICTS, krh@66: RAZOR_PROPERTY_OBSOLETES krh@66: }; krh@66: krh@43: struct razor_set *razor_set_open(const char *filename); krh@43: void razor_set_destroy(struct razor_set *set); krh@43: int razor_set_write(struct razor_set *set, const char *filename); krh@43: krh@54: void razor_set_list(struct razor_set *set, const char *pattern); krh@66: void razor_set_list_properties(struct razor_set *set, const char *name, krh@66: enum razor_property_type type); krh@66: void razor_set_list_property_packages(struct razor_set *set, krh@43: const char *name, krh@66: const char *version, krh@66: enum razor_property_type type); krh@49: void razor_set_list_files(struct razor_set *set, const char *prefix); krh@52: void razor_set_list_file_packages(struct razor_set *set, const char *filename); krh@56: void razor_set_list_package_files(struct razor_set *set, const char *name); krh@43: krh@43: void razor_set_list_unsatisfied(struct razor_set *set); krh@43: struct razor_set *razor_set_update(struct razor_set *set, krh@43: struct razor_set *upstream, krh@43: int count, const char **packages); krh@43: krh@44: typedef void (*razor_package_callback_t)(const char *name, krh@44: const char *old_version, krh@44: const char *new_version, krh@44: void *data); krh@44: void krh@44: razor_set_diff(struct razor_set *set, struct razor_set *upstream, krh@44: razor_package_callback_t callback, void *data); krh@44: krh@44: krh@44: /* Importer interface; for building a razor set from external sources, krh@44: * like yum, rpmdb or razor package files. */ krh@44: krh@30: struct razor_importer; krh@27: krh@30: struct razor_importer *razor_importer_new(void); krh@75: void razor_importer_destroy(struct razor_importer *importer); krh@30: void razor_importer_begin_package(struct razor_importer *importer, krh@27: const char *name, const char *version); krh@66: void razor_importer_add_property(struct razor_importer *importer, krh@66: const char *name, const char *version, krh@66: enum razor_property_type type); krh@46: void razor_importer_add_file(struct razor_importer *importer, krh@46: const char *name); krh@30: void razor_importer_finish_package(struct razor_importer *importer); krh@75: krh@75: int razor_importer_add_rpm(struct razor_importer *importer, krh@75: const char *filename); krh@75: krh@30: struct razor_set *razor_importer_finish(struct razor_importer *importer); krh@27: krh@27: struct razor_set *razor_import_rzr_files(int count, const char **files); krh@70: struct razor_set *razor_set_create_from_yum(void); krh@28: struct razor_set *razor_set_create_from_rpmdb(void); krh@27: krh@74: /* RPM functions */ krh@74: void krh@74: razor_rpm_dump(const char *filename); krh@74: krh@27: #endif /* _RAZOR_H_ */