- switch dependencies from Id pointers to Offsets
[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(Source *source, char *kind, Offset ido)
11 {
12   Pool *pool = source->pool;
13   Id id, *ids;
14   if (!ido)
15     return;
16   printf("%s:\n", kind);
17   ids = source->idarraydata + ido;
18   while((id = *ids++) != 0)
19     printf("  %s\n", dep2str(pool, id));
20 }
21
22 int main(int argc, char **argv)
23 {
24   Source *source;
25   Pool *pool;
26   int i;
27   Solvable *s;
28
29   if (argc != 1)
30     {
31       if (freopen(argv[1], "r", stdin) == 0)
32         {
33           perror(argv[1]);
34           exit(1);
35         }
36     }
37   pool = pool_create();
38   source = pool_addsource_solv(pool, stdin, "");
39   printf("source contains %d solvables\n", source->nsolvables);
40   for (i = source->start; i < source->start + source->nsolvables; i++)
41     {
42       s = pool->solvables + i;
43       printf("\n");
44       printf("solvable %d:\n", i);
45       printf("name: %s %s %s\n", id2str(pool, s->name), id2str(pool, s->evr), id2str(pool, s->arch));
46       printids(source, "provides", s->provides);
47       printids(source, "obsoletes", s->obsoletes);
48       printids(source, "conflicts", s->conflicts);
49       printids(source, "requires", s->requires);
50       printids(source, "recommends", s->recommends);
51       printids(source, "suggests", s->suggests);
52       printids(source, "supplements", s->supplements);
53       printids(source, "enhances", s->enhances);
54       printids(source, "freshens", s->freshens);
55     }
56   exit(0);
57 }