00001
00002
00003
00004
00005
00006
00025 #ifndef SPKG__PKGDB_H
00026 #define SPKG__PKGDB_H
00027
00028 #include <glib.h>
00029 #include <time.h>
00030 #include "error.h"
00031
00032 G_BEGIN_DECLS
00033
00035 #define PKGDB_DIR "var/log"
00036
00037 #define DB_NOPEN E(0)
00038 #define DB_OPEN E(1)
00039 #define DB_CORRUPT E(2)
00040 #define DB_NOTEX E(3)
00041 #define DB_EXIST E(4)
00042 #define DB_BLOCKED E(6)
00044 #define MAXPATHLEN 8192
00047 typedef enum {
00048 DB_GET_FULL,
00049 DB_GET_WITHOUT_FILES
00050 } db_get_type;
00051
00053 typedef enum {
00054 DB_QUERY_PKGS_WITH_FILES,
00055 DB_QUERY_PKGS_WITHOUT_FILES,
00056 DB_QUERY_NAMES
00057 } db_query_type;
00058
00060 typedef enum {
00061 DB_PATH_NONE = 0,
00062 DB_PATH_FILE,
00063 DB_PATH_DIR,
00064 DB_PATH_SYMLINK
00065 } db_path_type;
00066
00068 struct db_pkg {
00069
00070 gchar* name;
00071 gchar* shortname;
00072 gchar* version;
00073 gchar* arch;
00074 gchar* build;
00076
00077 time_t time;
00078 gsize csize;
00079 gsize usize;
00080 gchar* location;
00081 gchar* desc;
00082 gchar* doinst;
00084
00085 void* paths;
00086 };
00087
00094 extern gint db_open(const gchar* root, struct error* e);
00095
00098 extern void db_close();
00099
00107 extern struct db_pkg* db_alloc_pkg(gchar* name);
00108
00113 extern void db_free_pkg(struct db_pkg* pkg);
00114
00122 extern gint db_pkg_add_path(struct db_pkg* pkg, const gchar* path, db_path_type type);
00123
00130 extern db_path_type db_pkg_get_path(struct db_pkg* pkg, const gchar* path);
00131
00137 extern gint db_add_pkg(struct db_pkg* pkg);
00138
00145 extern struct db_pkg* db_get_pkg(gchar* name, db_get_type type);
00146
00152 extern gint db_rem_pkg(gchar* name);
00153
00160 extern gint db_replace_pkg(gchar* origname, struct db_pkg* pkg);
00161
00168 typedef gint (*db_selector)(const struct db_pkg* pkg, void* data);
00169
00177 extern GSList* db_query(db_selector cb, void* data, db_query_type type);
00178
00184 extern void db_free_query(GSList* pkgs, db_query_type type);
00185
00196 extern gchar* db_get_package_name(const gchar* name);
00197
00204 extern gint db_filelist_load(gboolean force_reload);
00205
00208 extern void db_filelist_free();
00209
00215 extern gint db_filelist_get_path_refs(const gchar* path);
00216
00221 extern void db_filelist_add_pkg_paths(const struct db_pkg* pkg);
00222
00227 extern void db_filelist_rem_pkg_paths(const struct db_pkg* pkg);
00228
00229 G_END_DECLS
00230
00231 #endif
00232