2 * Copyright (c) 2007, Novell Inc.
4 * This program is licensed under the BSD license, read LICENSE.BSD
5 * for further information
14 #include "repo_solv.h"
15 #include "attr_store.h"
16 #include "attr_store_p.h"
19 dump_attrs_1 (Attrstore *s, unsigned int entry)
22 FOR_ATTRS (s, entry, &ai)
24 fprintf (stdout, "%s:", id2str (s->pool, ai.name));
28 fprintf (stdout, "int %u\n", ai.as_int);
32 const char *str = attr_retrieve_blob (s, ai.as_chunk[0], ai.as_chunk[1]);
34 fprintf (stdout, "blob %s\n", str);
36 fprintf (stdout, "blob %u+%u\n", ai.as_chunk[0], ai.as_chunk[1]);
39 case TYPE_ATTR_STRING:
40 fprintf (stdout, "str %s\n", ai.as_string);
42 case TYPE_ATTR_INTLIST:
44 fprintf (stdout, "lint\n ");
48 get_num (ai.as_numlist, val);
51 fprintf (stdout, " %d", val);
53 fprintf (stdout, "\n");
56 case TYPE_ATTR_LOCALIDS:
58 fprintf (stdout, "lids");
62 get_num (ai.as_numlist, val);
65 fprintf (stdout, "\n %s(%d)", localid2str (s, val), val);
67 fprintf (stdout, "\n");
71 fprintf (stdout, "\n");
78 dump_attrs (Repo *repo, unsigned int entry)
81 for (i = 0; i < repo->nrepodata; i++)
83 Attrstore *s = repo->repodata[i].s;
84 if (s && entry < s->entries)
85 dump_attrs_1 (s, entry);
90 dump_repodata (Repo *repo)
94 if (repo->nrepodata == 0)
96 printf("repo refers to %d attribute stores:\n", repo->nrepodata);
97 for (i = 0, data = repo->repodata; i < repo->nrepodata; i++, data++)
100 printf("%s has %d keys", data->location ? data->location : "**EMBED**", data->nkeys);
101 for (j = 0; j < data->nkeys; j++)
102 printf("\n %s", id2str(repo->pool, data->keys[j].name));
109 printids(Repo *repo, char *kind, Offset ido)
111 Pool *pool = repo->pool;
115 printf("%s:\n", kind);
116 ids = repo->idarraydata + ido;
117 while((id = *ids++) != 0)
118 printf(" %s\n", dep2str(pool, id));
121 int main(int argc, char **argv)
130 if (freopen(argv[1], "r", stdin) == 0)
136 pool = pool_create();
137 repo = repo_create(pool, argc != 1 ? argv[1] : "<stdin>");
138 repo_add_solv(repo, stdin);
139 dump_repodata (repo);
140 printf("repo contains %d solvables\n", repo->nsolvables);
141 for (i = repo->start, n = 1; i < repo->end; i++)
143 s = pool->solvables + i;
147 printf("solvable %d:\n", n);
148 if (s->name || s->evr || s->arch)
149 printf("name: %s %s %s\n", id2str(pool, s->name), id2str(pool, s->evr), id2str(pool, s->arch));
151 printf("vendor: %s\n", id2str(pool, s->vendor));
152 printids(repo, "provides", s->provides);
153 printids(repo, "obsoletes", s->obsoletes);
154 printids(repo, "conflicts", s->conflicts);
155 printids(repo, "requires", s->requires);
156 printids(repo, "recommends", s->recommends);
157 printids(repo, "suggests", s->suggests);
158 printids(repo, "supplements", s->supplements);
159 printids(repo, "enhances", s->enhances);
160 printids(repo, "freshens", s->freshens);
161 dump_attrs (repo, n - 1);