49c22125c53f5c28ab1588b59b363ade2aa84f81
[jigit.git] / jigdb.h
1 #ifndef JIGDB_H
2 #define JIGDB_H
3
4 #include <time.h>
5 #include <limits.h>
6
7 #define JIGDB void
8
9 enum filetype
10 {
11     FT_LOCAL = 0,  /* We have the file directly-accessible in a local filesystem */
12     FT_ISO,        /* We have the file in an ISO image locally */
13     FT_REMOTE,     /* File is on a specified mirror */
14     FT_JIGDO       /* We need to go to the upstream jigdo mirror site */
15 };
16
17 typedef struct
18 {
19     unsigned char      md5[32];
20     enum filetype      type;
21     time_t             mtime;
22     time_t             age;  /* UINT_MAX - time when added */
23     unsigned long long file_size;
24     char               filename[PATH_MAX];
25     char               extra[PATH_MAX];    /* empty for local files;
26                                             * path to ISO for local ISO loopbacks;
27                                             * base URL for remote files*/
28 } db_entry_t;    
29
30 JIGDB *db_open(char *db_name);
31 int db_close(JIGDB *dbp);
32 int db_store(JIGDB *dbp, db_entry_t *entry);
33 int db_lookup_by_age(JIGDB *dbp, time_t added, db_entry_t **out);
34 int db_lookup_older(JIGDB *dbp, db_entry_t **out);
35 int db_lookup_by_md5(JIGDB *dbp, char *md5, db_entry_t **out);
36 int db_lookup_by_name(JIGDB *dbp, char *filename, db_entry_t **out);
37 int db_delete(JIGDB *dbp, char *md5, enum filetype type, char *filename);
38 int db_dump(JIGDB *dbp);
39
40 #endif /* JIGDB_H */
41
42
43