- add a license
[platform/upstream/libsolv.git] / tools / dumpsolv.c
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 #include <stdio.h>
9 #include <stdlib.h>
10 #include <unistd.h>
11 #include <string.h>
12
13 #include "pool.h"
14 #include "repo_solv.h"
15
16 static void
17 printids(Repo *repo, char *kind, Offset ido)
18 {
19   Pool *pool = repo->pool;
20   Id id, *ids;
21   if (!ido)
22     return;
23   printf("%s:\n", kind);
24   ids = repo->idarraydata + ido;
25   while((id = *ids++) != 0)
26     printf("  %s\n", dep2str(pool, id));
27 }
28
29 int main(int argc, char **argv)
30 {
31   Repo *repo;
32   Pool *pool;
33   int i;
34   Solvable *s;
35
36   if (argc != 1)
37     {
38       if (freopen(argv[1], "r", stdin) == 0)
39         {
40           perror(argv[1]);
41           exit(1);
42         }
43     }
44   pool = pool_create();
45   repo = pool_addrepo_solv(pool, stdin, "");
46   printf("repo contains %d solvables\n", repo->nsolvables);
47   for (i = repo->start; i < repo->start + repo->nsolvables; i++)
48     {
49       s = pool->solvables + i;
50       printf("\n");
51       printf("solvable %d:\n", i);
52       printf("name: %s %s %s\n", id2str(pool, s->name), id2str(pool, s->evr), id2str(pool, s->arch));
53       if (s->vendor)
54         printf("vendor: %s\n", id2str(pool, s->vendor));
55       printids(repo, "provides", s->provides);
56       printids(repo, "obsoletes", s->obsoletes);
57       printids(repo, "conflicts", s->conflicts);
58       printids(repo, "requires", s->requires);
59       printids(repo, "recommends", s->recommends);
60       printids(repo, "suggests", s->suggests);
61       printids(repo, "supplements", s->supplements);
62       printids(repo, "enhances", s->enhances);
63       printids(repo, "freshens", s->freshens);
64     }
65   exit(0);
66 }