repo_write.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. /*
  2. * Copyright (c) 2007, Novell Inc.
  3. *
  4. * This program is licensed under the BSD license, read LICENSE.BSD
  5. * for further information
  6. */
  7. /*
  8. * repo_write.h
  9. *
  10. */
  11. #ifndef REPO_WRITE_H
  12. #define REPO_WRITE_H
  13. #include <stdio.h>
  14. #include "repo.h"
  15. #include "queue.h"
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. typedef struct s_Repowriter {
  20. Repo *repo;
  21. int flags;
  22. int repodatastart;
  23. int repodataend;
  24. int solvablestart;
  25. int solvableend;
  26. int (*keyfilter)(Repo *repo, Repokey *key, void *kfdata);
  27. void *kfdata;
  28. Queue *keyq;
  29. void *userdata;
  30. int userdatalen;
  31. } Repowriter;
  32. /* repowriter flags */
  33. #define REPOWRITER_NO_STORAGE_SOLVABLE (1 << 0)
  34. #define REPOWRITER_KEEP_TYPE_DELETED (1 << 1)
  35. #define REPOWRITER_LEGACY (1 << 30)
  36. Repowriter *repowriter_create(Repo *repo);
  37. Repowriter *repowriter_free(Repowriter *writer);
  38. void repowriter_set_flags(Repowriter *writer, int flags);
  39. void repowriter_set_keyfilter(Repowriter *writer, int (*keyfilter)(Repo *repo, Repokey *key, void *kfdata), void *kfdata);
  40. void repowriter_set_keyqueue(Repowriter *writer, Queue *keyq);
  41. void repowriter_set_repodatarange(Repowriter *writer, int repodatastart, int repodataend);
  42. void repowriter_set_solvablerange(Repowriter *writer, int solvablestart, int solvableend);
  43. void repowriter_set_userdata(Repowriter *writer, const void *data, int len);
  44. int repowriter_write(Repowriter *writer, FILE *fp);
  45. /* convenience functions */
  46. extern int repo_write(Repo *repo, FILE *fp);
  47. extern int repodata_write(Repodata *data , FILE *fp);
  48. extern int repo_write_stdkeyfilter(Repo *repo, Repokey *key, void *kfdata);
  49. /* deprecated functions, do not use in new code! */
  50. extern int repo_write_filtered(Repo *repo, FILE *fp, int (*keyfilter)(Repo *repo, Repokey *key, void *kfdata), void *kfdata, Queue *keyq);
  51. extern int repodata_write_filtered(Repodata *data , FILE *fp, int (*keyfilter)(Repo *repo, Repokey *key, void *kfdata), void *kfdata, Queue *keyq);
  52. #ifdef __cplusplus
  53. }
  54. #endif
  55. #endif