-
Notifications
You must be signed in to change notification settings - Fork 0
/
pkg.h
51 lines (42 loc) · 1.64 KB
/
pkg.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
struct pkg_handle {
int fd; /* file descriptor for mmap() */
int refcnt; /* references to this package */
time_t otime; /* open time (for garbage collector) */
char *name; /* package name */
u_int32_t id; /* package ID */
};
struct pkg_object {
u_int32_t pkg;
char *name;
char type;
uid_t owner;
gid_t grp;
size_t size;
off_t offset;
time_t ctime;
u_int32_t inode;
};
struct pkg_file_mapping {
char *pkg; /* package file */
size_t len; /* length of subfile */
off_t offset; /* offset of subfile */
int fd; /* file descriptor for mmap */
void *addr; /* mmap return address */
};
/* Initialize package handling/caching subsystem */
extern void pkg_init(void);
/* Open a package */
extern struct pkg_handle *pkg_open(const char *path);
/* Release our instance of package a*/
extern void pkg_close(struct pkg_handle *pkg);
/* 'discover' a package, called by vfs watcher */
extern int pkg_import(const char *path);
/* 'forget' a package, called by vfs_watcher */
extern int pkg_forget(const char *path);
/* pkg_map.c */
extern void pkg_unmap_file(struct pkg_file_mapping *p);
extern struct pkg_file_mapping *pkg_map_file(const char *path, size_t len, off_t offset);
/* pkg_toc.c */
extern size_t pkg_toc_zbufsize;
extern char *pkg_toc_extract(const char *path);
extern int pkg_toc_process(const char *path, const char *toc);