/* * 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 */