to follow SUSE tools conventions
[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 "repo_solv.h"
8
9 static void
10 printids(Repo *repo, char *kind, Offset ido)
11 {
12   Pool *pool = repo->pool;
13   Id id, *ids;
14   if (!ido)
15     return;
16   printf("%s:\n", kind);
17   ids = repo->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   Repo *repo;
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   repo = pool_addrepo_solv(pool, stdin, "");
39   printf("repo contains %d solvables\n", repo->nsolvables);
40   for (i = repo->start; i < repo->start + repo->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(repo, "provides", s->provides);
47       printids(repo, "obsoletes", s->obsoletes);
48       printids(repo, "conflicts", s->conflicts);
49       printids(repo, "requires", s->requires);
50       printids(repo, "recommends", s->recommends);
51       printids(repo, "suggests", s->suggests);
52       printids(repo, "supplements", s->supplements);
53       printids(repo, "enhances", s->enhances);
54       printids(repo, "freshens", s->freshens);
55     }
56   exit(0);
57 }