current state of 'sat-solver'
[platform/upstream/libsolv.git] / tools / dumpsolv.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <string.h>
5
6 #include "pool.h"
7 #include "source_solv.h"
8
9 static void
10 printids(Pool *pool, char *kind, Id *ids)
11 {
12   Id id;
13   if (!ids)
14     return;
15   printf("%s:\n", kind);
16   while((id = *ids++) != 0)
17     printf("  %s%s%s\n", id2str(pool, id), id2rel(pool, id), id2evr(pool, id));
18 }
19
20 int main(int argc, char **argv)
21 {
22   Source *source;
23   Pool *pool;
24   int i;
25   Solvable *s;
26
27   if (argc != 1)
28     {
29       if (freopen(argv[1], "r", stdin) == 0)
30         {
31           perror(argv[1]);
32           exit(1);
33         }
34     }
35   pool = pool_create();
36   source = pool_addsource_solv(pool, stdin, "");
37   printf("source contains %d solvables\n", source->nsolvables);
38   for (i = source->start; i < source->start + source->nsolvables; i++)
39     {
40       s = pool->solvables + i;
41       printf("\n");
42       printf("solvable %d:\n", i);
43       printf("name: %s %s %s\n", id2str(pool, s->name), id2str(pool, s->evr), id2str(pool, s->arch));
44       printids(pool, "provides", s->provides);
45       printids(pool, "obsoletes", s->obsoletes);
46       printids(pool, "conflicts", s->conflicts);
47       printids(pool, "requires", s->requires);
48       printids(pool, "recommends", s->recommends);
49       printids(pool, "suggests", s->suggests);
50       printids(pool, "supplements", s->supplements);
51       printids(pool, "enhances", s->enhances);
52       printids(pool, "freshens", s->freshens);
53     }
54   exit(0);
55 }