spkgdeveloper's documentation

pkgdb.h

00001 /*----------------------------------------------------------------------*\
00002 |* spkg - The Unofficial Slackware Linux Package Manager                *|
00003 |*                                      designed by Ondøej Jirman, 2005 *|
00004 |*----------------------------------------------------------------------*|
00005 |*          No copy/usage restrictions are imposed on anybody.          *|
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   /* name */
00070   gchar* name;       
00071   gchar* shortname;  
00072   gchar* version;    
00073   gchar* arch;       
00074   gchar* build;      
00076   /* details */
00077   time_t time;       
00078   gsize  csize;      
00079   gsize  usize;      
00080   gchar* location;   
00081   gchar* desc;       
00082   gchar* doinst;     
00084   /* file list */  
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 
Documentation for spkg, Sun Jul 23 13:12:53 2006.