cce86cb0e27b440eef232c73ae960a8061e60276
[tools/librpm-tizen.git] / lib / oldrpmdb.h
1 #ifndef _H_OLDRPMDB
2 #define _H_OLDRPMDB
3
4 /** \file lib/oldrpmdb.h
5  *
6  */
7
8 #include <gdbm.h>
9
10 #include <oldheader.h>
11
12 typedef enum
13   {
14     RPMDB_NONE, RPMDB_GDBM_ERROR, RPMDB_NO_MEMORY
15   }
16 rpm_error;
17
18 struct oldrpmdb
19   {
20     GDBM_FILE packages;
21     GDBM_FILE nameIndex;
22     GDBM_FILE pathIndex;
23     GDBM_FILE groupIndex;
24     GDBM_FILE iconIndex;
25     GDBM_FILE postIndex;
26     rpm_error rpmdbError;
27     gdbm_error gdbmError;
28   };
29
30 enum oldrpmdbFreeType
31   {
32     RPMDB_NOFREE, RPMDB_FREENAME, RPMDB_FREEALL
33   };
34
35 struct oldrpmdbLabel
36   {
37     char *name, *version, *release;
38     enum oldrpmdbFreeType freeType;
39     struct oldrpmdbLabel *next;
40     int fileNumber;             /* -1 means invalid */
41   };
42
43 struct oldrpmdbPackageInfo
44   {
45     char *name, *version, *release;
46     char *labelstr;
47     unsigned int installTime, buildTime;
48     unsigned int size;
49     char *description;
50     char *distribution;
51     char *vendor;
52     char *buildHost;
53     char *preamble;
54     char *copyright;
55     unsigned int fileCount;
56     struct oldrpmFileInfo *files;
57   };
58
59 #define RPMDB_READER 1
60
61 #ifdef __cplusplus
62 extern "C" {
63 #endif
64
65 int oldrpmdbOpen (struct oldrpmdb *oldrpmdb);
66 void oldrpmdbClose (struct oldrpmdb *oldrpmdb);
67 struct oldrpmdbLabel *oldrpmdbGetAllLabels (struct oldrpmdb *oldrpmdb);
68 struct oldrpmdbLabel *oldrpmdbFindPackagesByFile (struct oldrpmdb *oldrpmdb, char *path);
69 struct oldrpmdbLabel *oldrpmdbFindPackagesByLabel (struct oldrpmdb *oldrpmdb,
70                                                 struct oldrpmdbLabel label);
71
72 char *oldrpmdbGetPackageGroup (struct oldrpmdb *oldrpmdb,
73                                struct oldrpmdbLabel label);
74 char *oldrpmdbGetPackagePostun (struct oldrpmdb *oldrpmdb,
75                                 struct oldrpmdbLabel label);
76 char *oldrpmdbGetPackagePreun (struct oldrpmdb *oldrpmdb,
77                                 struct oldrpmdbLabel label);
78 char *oldrpmdbGetPackageGif (struct oldrpmdb *oldrpmdb, struct oldrpmdbLabel label,
79                              int *size);
80 int oldrpmdbGetPackageInfo (struct oldrpmdb *oldrpmdb, struct oldrpmdbLabel label,
81                             struct oldrpmdbPackageInfo *pinfo);
82 void oldrpmdbFreePackageInfo (struct oldrpmdbPackageInfo package);
83
84 struct oldrpmdbLabel oldrpmdbMakeLabel (char *name, char *version, char *release,
85                             int fileNumber, enum oldrpmdbFreeType freeType);
86 void oldrpmdbFreeLabelList (struct oldrpmdbLabel *list);
87 void oldrpmdbFreeLabel (struct oldrpmdbLabel label);
88 int oldrpmdbWasError (struct oldrpmdb *oldrpmdb);
89
90 int oldrpmdbLabelstrToLabel (char *str, int length, struct oldrpmdbLabel *label);
91 char *oldrpmdbLabelToLabelstr (struct oldrpmdbLabel label, int withFileNum);
92 int oldrpmdbLabelCmp (struct oldrpmdbLabel *one, struct oldrpmdbLabel *two);
93
94 void oldrpmdbSetPrefix (char *new);
95
96 #ifdef __cplusplus
97 }
98 #endif
99
100 #endif  /* _H_OLDRPMDB */