Initial revision
[tools/librpm-tizen.git] / lib / oldrpmdb.h
1 #ifndef _H_RPMDB
2 #define _H_RPMDB
3
4 #include <gdbm.h>
5
6 #include "oldrpmfile.h"
7
8 typedef enum { RPMDB_NONE, RPMDB_GDBM_ERROR, RPMDB_NO_MEMORY } rpm_error;
9
10 struct rpmdb {
11     GDBM_FILE packages;
12     GDBM_FILE nameIndex;
13     GDBM_FILE pathIndex;
14     GDBM_FILE groupIndex;
15     GDBM_FILE iconIndex;
16     GDBM_FILE postIndex;
17     rpm_error rpmdbError;
18     gdbm_error gdbmError;
19 };
20
21 enum rpmdbFreeType { RPMDB_NOFREE, RPMDB_FREENAME, RPMDB_FREEALL } ;
22
23 struct rpmdbLabel {
24     char * name, * version, * release;
25     enum rpmdbFreeType freeType;
26     struct rpmdbLabel * next;
27     int fileNumber;                     /* -1 means invalid */
28 };
29
30 struct rpmdbPackageInfo {
31     char * name, * version, * release;
32     char * labelstr;
33     unsigned int installTime, buildTime;
34     unsigned int size;
35     char * description;
36     char * distribution;
37     char * vendor;
38     char * buildHost;
39     char * preamble;
40     unsigned int fileCount;
41     struct rpmFileInfo * files;
42 } ;
43
44 #define RPMDB_READER 1
45
46 int rpmdbOpen(struct rpmdb * rpmdb);
47 void rpmdbClose(struct rpmdb * rpmdb);
48 struct rpmdbLabel * rpmdbGetAllLabels(struct rpmdb * rpmdb);
49 struct rpmdbLabel * rpmdbFindPackagesByFile(struct rpmdb * rpmdb, char * path);
50 struct rpmdbLabel * rpmdbFindPackagesByLabel(struct rpmdb * rpmdb, 
51                                              struct rpmdbLabel label);
52
53 char * rpmdbGetPackageGroup(struct rpmdb * rpmdb, struct rpmdbLabel label);
54 int rpmdbGetPackageInfo(struct rpmdb * rpmdb, struct rpmdbLabel label,
55                         struct rpmdbPackageInfo * pinfo);
56 void rpmdbFreePackageInfo(struct rpmdbPackageInfo package);
57
58 struct rpmdbLabel rpmdbMakeLabel(char * name, char * version, char * release,
59                                  int fileNumber, enum rpmdbFreeType freeType);
60 void rpmdbFreeLabelList(struct rpmdbLabel * list);
61 void rpmdbFreeLabel(struct rpmdbLabel label);
62 int rpmdbWasError(struct rpmdb * rpmdb);
63
64 int rpmdbLabelstrToLabel(char * str, int length, struct rpmdbLabel * label);
65 char * rpmdbLabelToLabelstr(struct rpmdbLabel label, int withFileNum);
66 int rpmdbLabelCmp(struct rpmdbLabel * one, struct rpmdbLabel * two);
67
68 void rpmdbSetPrefix(char * new);
69
70 #endif