master ohmu/fastfetch-openbsd / src / common / impl / kmod_sunos.c
ohmu  ·  2026-10-15
 1#include "common/kmod.h"
 2#include "common/strutil.h"
 3
 4#include <sys/modctl.h>
 5#include <errno.h>
 6
 7bool ffKmodLoaded(const char* modName) {
 8    struct modinfo modinfo = {
 9        .mi_id = -1,
10        .mi_nextid = -1,
11        .mi_info = MI_INFO_ALL,
12    };
13
14    for (int id = -1; modctl(MODINFO, id, &modinfo) == 0; id = modinfo.mi_id) {
15        modinfo.mi_name[MODMAXNAMELEN - 1] = '\0';
16
17        if (ffStrEquals(modinfo.mi_name, modName)) {
18            return true;
19        }
20    }
21
22    return !(errno == EINVAL || errno == ENOENT);
23}