summaryrefslogtreecommitdiff
path: root/pkgdb.h
blob: 95170f817fb70094559ab83f2679a1e6a8dd741c (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
42
/*
 * pkg - mkpkg database reader (read-only)
 * https://rawnix.org
 *
 * Copyright (c) 2025 zorz@gmx.com
 * SPDX-License-Identifier: BSD-2-Clause
 */

#ifndef PKGDB_H
#define PKGDB_H

#include "pkg.h"

/* Installed package info */
typedef struct {
    char *name;
    char *version;
} installed_pkg_t;

/* Hash table entry */
typedef struct pkgdb_entry {
    char *key;
    installed_pkg_t *pkg;
    struct pkgdb_entry *next;
} pkgdb_entry_t;

/* Package database */
typedef struct {
    pkgdb_entry_t **buckets;
    size_t bucket_count;
    size_t size;
    char *path;
} pkgdb_t;

/* Database operations */
pkgdb_t *pkgdb_open(const char *root);
void pkgdb_close(pkgdb_t *db);
bool pkgdb_installed(pkgdb_t *db, const char *name);
installed_pkg_t *pkgdb_find(pkgdb_t *db, const char *name);
strarray_t *pkgdb_list(pkgdb_t *db);

#endif /* PKGDB_H */