master ohmu/fastfetch-openbsd / src / common / properties.h
ohmu  ·  2026-10-15
 1#pragma once
 2
 3#include "fastfetch.h"
 4
 5typedef struct FFpropquery {
 6    const char* start;
 7    FFstrbuf* buffer;
 8} FFpropquery;
 9
10// These report "was the file/property found", which callers routinely discard, so they are not
11// `nodiscard`.
12//
13// `queries` is only walked when `numQueries > 0`, so it is intentionally not `nonnull(3)`.
14[[gnu::nonnull(1, 2, 3)]] bool ffParsePropLines(const char* lines, const char* start, FFstrbuf* buffer);
15[[gnu::nonnull(1)]] bool ffParsePropFileValues(const char* filename, uint32_t numQueries, FFpropquery* queries);
16[[gnu::nonnull(1)]] bool ffParsePropFileHomeValues(const char* relativeFile, uint32_t numQueries, FFpropquery* queries);
17[[gnu::nonnull(1, 2)]] bool ffParsePropFileListValues(const FFlist* list, const char* relativeFile, uint32_t numQueries, FFpropquery* queries);
18
19[[gnu::nonnull(1, 2, 3)]] bool ffParsePropLinePointer(const char** line, const char* start, FFstrbuf* buffer);
20
21[[gnu::nonnull(1, 2, 3)]] static inline bool ffParsePropLine(const char* line, const char* start, FFstrbuf* buffer) {
22    return ffParsePropLinePointer(&line, start, buffer);
23}
24
25[[gnu::nonnull(1, 2, 3)]] static inline bool ffParsePropFile(const char* filename, const char* start, FFstrbuf* buffer) {
26    return ffParsePropFileValues(filename, 1, (FFpropquery[]) { { start, buffer } });
27}
28
29[[gnu::nonnull(1, 2, 3)]] static inline bool ffParsePropFileHome(const char* relativeFile, const char* start, FFstrbuf* buffer) {
30    return ffParsePropFileHomeValues(relativeFile, 1, (FFpropquery[]) { { start, buffer } });
31}
32
33[[gnu::nonnull(1, 2, 3, 4)]] static inline bool ffParsePropFileList(const FFlist* list, const char* relativeFile, const char* start, FFstrbuf* buffer) {
34    return ffParsePropFileListValues(list, relativeFile, 1, (FFpropquery[]) { { start, buffer } });
35}
36
37[[gnu::nonnull(1)]] static inline bool ffParsePropFileConfigValues(const char* relativeFile, uint32_t numQueries, FFpropquery* queries) {
38    return ffParsePropFileListValues(&instance.state.platform.configDirs, relativeFile, numQueries, queries);
39}
40
41[[gnu::nonnull(1, 2, 3)]] static inline bool ffParsePropFileConfig(const char* relativeFile, const char* start, FFstrbuf* buffer) {
42    return ffParsePropFileConfigValues(relativeFile, 1, (FFpropquery[]) { { start, buffer } });
43}
44
45[[gnu::nonnull(1)]] static inline bool ffParsePropFileDataValues(const char* relativeFile, uint32_t numQueries, FFpropquery* queries) {
46    return ffParsePropFileListValues(&instance.state.platform.dataDirs, relativeFile, numQueries, queries);
47}
48
49[[gnu::nonnull(1, 2, 3)]] static inline bool ffParsePropFileData(const char* relativeFile, const char* start, FFstrbuf* buffer) {
50    return ffParsePropFileDataValues(relativeFile, 1, (FFpropquery[]) { { start, buffer } });
51}