blob: 8faa784931dee23c91a0fda202e1f6688f20a0a2 (
plain)
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
|
/*
* db.h - package database
* https://rawnix.org
*
* Copyright (c) 2025 zorz@gmx.com
* SPDX-License-Identifier: BSD-2-Clause
*/
#ifndef DB_H
#define DB_H
#include "util.h"
/* single installed package */
typedef struct pkg {
char *name;
char *version;
strarray_t *files;
struct pkg *next;
} pkg_t;
/* open database handle */
typedef struct {
pkg_t *head;
char *root; /* installation root */
char *dbdir; /* /var/lib/pkg */
int fd; /* lock fd on dbdir */
} pkgdb_t;
pkg_t *pkg_new(const char *name, const char *version);
void pkg_free(pkg_t *p);
/* open with shared (exclusive=0) or exclusive (exclusive=1) lock */
pkgdb_t *db_open(const char *root, int exclusive);
void db_close(pkgdb_t *db);
int db_write(pkgdb_t *db);
pkg_t *db_find(pkgdb_t *db, const char *name);
int db_add(pkgdb_t *db, pkg_t *p);
int db_remove(pkgdb_t *db, const char *name);
#endif /* DB_H */
|